<?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>181958</bug_id>
          
          <creation_ts>2018-01-22 15:01:58 -0800</creation_ts>
          <short_desc>Add callbacks to testRunner.statisticsSetShouldPartitionCookiesForHost() and testRunner.statisticsUpdateCookiePartitioning()</short_desc>
          <delta_ts>2018-01-31 20:45:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=182355</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="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jlewis3</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1391842</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-01-22 15:01:58 -0800</bug_when>
    <thetext>The following layout test is flaky on High Sierra WK2

http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context.html

Probable cause:

This test seems to have been flaky since it was added in https://trac.webkit.org/changeset/227103

Flakiness Dashboard:

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2FresourceLoadStatistics%2Fnon-prevalent-resources-can-access-cookies-in-a-third-party-context.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391843</commentid>
    <comment_count>1</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-01-22 15:02:17 -0800</bug_when>
    <thetext>--- /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context-expected.txt
+++ /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context-actual.txt
@@ -22,13 +22,13 @@
 --------
 Should receive one partitioned, third party cookie.
 Did not receive cookie named &apos;firstPartyCookie&apos;.
-Received cookie named &apos;partitionedCookie&apos;.
-Client-side document.cookie: partitionedCookie=value
+Did not receive cookie named &apos;partitionedCookie&apos;.
+Client-side document.cookie:
 
 --------
 Frame: &apos;&lt;!--framePath //&lt;!--frame3--&gt;--&gt;&apos;
 --------
 After user interaction, should receive one non-partitioned, first party cookie.
 Received cookie named &apos;firstPartyCookie&apos;.
-Did not receive cookie named &apos;partitionedCookie&apos;.
-Client-side document.cookie: firstPartyCookie=value
+Received cookie named &apos;partitionedCookie&apos;.
+Client-side document.cookie: firstPartyCookie=value,partitionedCookie=value</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392363</commentid>
    <comment_count>2</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2018-01-23 17:08:36 -0800</bug_when>
    <thetext>Marked as flaky https://trac.webkit.org/changeset/227464/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392365</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-23 17:10:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/36801804&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394626</commentid>
    <comment_count>4</comment_count>
      <attachid>332669</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-01-30 11:03:32 -0800</bug_when>
    <thetext>Created attachment 332669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394636</commentid>
    <comment_count>5</comment_count>
      <attachid>332673</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-01-30 11:20:38 -0800</bug_when>
    <thetext>Created attachment 332673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394690</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-01-30 12:50:03 -0800</bug_when>
    <thetext>Test issues on mac-wk2 are unrelated to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394699</commentid>
    <comment_count>7</comment_count>
      <attachid>332673</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-01-30 13:12:27 -0800</bug_when>
    <thetext>Comment on attachment 332673
Patch

Seeing one failed instance of add-partitioning-to-redirect.html. Thus making an additional change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394760</commentid>
    <comment_count>8</comment_count>
      <attachid>332707</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-01-30 14:20:33 -0800</bug_when>
    <thetext>Created attachment 332707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394769</commentid>
    <comment_count>9</comment_count>
      <attachid>332707</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-30 14:27:20 -0800</bug_when>
    <thetext>Comment on attachment 332707
Patch

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

&gt; Source/WebKit/ChangeLog:10
&gt; +

Need some descriptive language here. It&apos;s hard to know what&apos;s going on in this patch!

&quot;Because of the asynchronous nature of cookie handling, test runs can generate false failures because of timing differences. Switch to a completion handler model that prevents post-cookie change logic from running until the processing has actually finished&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394774</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-01-30 14:30:11 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #9)
&gt; Comment on attachment 332707 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=332707&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; +
&gt; 
&gt; Need some descriptive language here. It&apos;s hard to know what&apos;s going on in
&gt; this patch!
&gt; 
&gt; &quot;Because of the asynchronous nature of cookie handling, test runs can
&gt; generate false failures because of timing differences. Switch to a
&gt; completion handler model that prevents post-cookie change logic from running
&gt; until the processing has actually finished&quot;

True. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394859</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-01-30 17:45:25 -0800</bug_when>
    <thetext>Looks good except for the missing description?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394862</commentid>
    <comment_count>12</comment_count>
      <attachid>332734</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-01-30 18:18:08 -0800</bug_when>
    <thetext>Created attachment 332734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394898</commentid>
    <comment_count>13</comment_count>
      <attachid>332734</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-30 20:48:16 -0800</bug_when>
    <thetext>Comment on attachment 332734
Patch

A nice improvement!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394906</commentid>
    <comment_count>14</comment_count>
      <attachid>332734</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-01-30 21:38:24 -0800</bug_when>
    <thetext>Comment on attachment 332734
Patch

Thanks, Brent!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394908</commentid>
    <comment_count>15</comment_count>
      <attachid>332734</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-30 22:01:59 -0800</bug_when>
    <thetext>Comment on attachment 332734
Patch

Clearing flags on attachment: 332734

Committed r227875: &lt;https://trac.webkit.org/changeset/227875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394909</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-30 22:02:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395220</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-31 16:10:54 -0800</bug_when>
    <thetext>I rolled this out in bug #182357. Reopening.

John, I&apos;ve landed fixups in bug #182222 and bug #181231 for the last times you modified resource load statistics code that affected the TestController, but don&apos;t want to keep playing catch-up here, so please be sure to update the C API and cross-platform TestController before re-landing.

I&apos;ve also filed bug #182355 because it looks like the Cocoa-specific API may not be needed here at all; that seems to be the root cause of this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395245</commentid>
    <comment_count>18</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-31 16:50:23 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #17)
&gt; John, I&apos;ve landed fixups in bug #182222 and bug #181231 for the last times
&gt; you modified resource load statistics code that affected the TestController,
&gt; but don&apos;t want to keep playing catch-up here, so please be sure to update
&gt; the C API and cross-platform TestController before re-landing.
EWS was green.  We did not break the build.  We do not have a linux environment.  We are not under obligation to make all new features completely cross platform.  We have had little support from the linux community in developing this feature.  Fixing things like this is doing the necessary work to port new features to new platforms.  I hope you&apos;ve been satisfied in my quick reviewing of your patches to do so.  If nobody from the linux community is willing to do the work to maintain this on linux, we can disable the feature on linux.

&gt; I&apos;ve also filed bug #182355 because it looks like the Cocoa-specific API may
&gt; not be needed here at all; that seems to be the root cause of this problem.
We are preferring the ObjC API more and more.  It is what we have exposed to our third party developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395252</commentid>
    <comment_count>19</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-31 16:59:41 -0800</bug_when>
    <thetext>Relanded in https://trac.webkit.org/changeset/227943/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395283</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-31 18:25:19 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #18)
&gt; EWS was green.  We did not break the build. We do not have a linux environment.

But normally, when you add unimplemented functionality, you give us a heads-up, either asking us to implement the missing code before landing the patch, or just landing and filing a bug for us to implement it later. (Either way, we really appreciate it. :) And normally, when you leave unimplemented code, it&apos;s because there is actual platform-specific code that needs to be written, which is often hard to do when flying blind without access to the platform in question. I&apos;m actually very grateful for how well this normally works nowadays; we used to have a lot more trouble a couple years ago.

In contrast, in the specific case of resource load statistics, the C API and TestController breakage has been purely gratuitous: it requires very little effort to add a couple callbacks and hook them up. This is purely mechanical work that can easily be tested on EWS, or by locally changing a couple #ifdefs to switch the TestController to using the C API, if local testing is desired. Alternatively, at least please add FIXMEs to the code, and a bug report to implement the missing functionality, instead of hiding the problem by adding empty callbacks. (A bug report would probably be harder than just implementing it, but whatever.)

I think a rollout was appropriate here, because it&apos;s the third time this has happened in resource load statistics recently, and it&apos;s really slowing me down. The prior two cases both broke layout tests; this time, we wouldn&apos;t have noticed until whenever we try to implement cookie storage partitioning, then it would be quite hard to find the unimplemented callbacks.

&gt; We are not under obligation to make all new features completely cross platform.

Of course; I&apos;d never expect that.

&gt; We have had little support from the linux
&gt; community in developing this feature.  Fixing things like this is doing the
&gt; necessary work to port new features to new platforms.  I hope you&apos;ve been
&gt; satisfied in my quick reviewing of your patches to do so.  If nobody from
&gt; the linux community is willing to do the work to maintain this on linux, we
&gt; can disable the feature on linux.

I do wish we had more time to help with intelligent tracking prevention development.... Cookie storage partitioning is actually already disabled on all ports except for Cocoa. The rest of the resource load statistics code seems to be working fine already, except for the failing grandfathering test.

&gt; We are preferring the ObjC API more and more.  It is what we have exposed to
&gt; our third party developers.

It&apos;s great that you&apos;re exposing the nice Objective C API rather than the WK2 C API. But using it in the TestController is going to make development harder for everyone. It turns out resource load statistics accounts for 95% of the Cocoa API use in TestController. We probably should discuss this on webkit-dev eventually, but I&apos;ve filed bug #182355 to explore it for now. I&apos;ve left a comment there with some brainstorming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395295</commentid>
    <comment_count>21</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-31 18:44:44 -0800</bug_when>
    <thetext>&gt; The prior two cases both broke layout tests; this time, we wouldn&apos;t
&gt; have noticed until whenever we try to implement cookie storage partitioning,
&gt; then it would be quite hard to find the unimplemented callbacks.

I&apos;m just going to leave it broken, because I don&apos;t want to keep landing follow-ups. It&apos;s going to make it unnecessarily-difficult to get this feature working. FWIW, I only noticed this at all due to luck, because I was testing out other changes and noticed a merge conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395303</commentid>
    <comment_count>22</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-31 18:52:53 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #20)
&gt; In contrast, in the specific case of resource load statistics, the C API and
&gt; TestController breakage has been purely gratuitous: it requires very little
&gt; effort to add a couple callbacks and hook them up.
We are not trying to deter resource load statistics development on non-Cocoa platforms.  Actually we designed it so that it could be ported to other platforms.  Resource load statistics was initially implemented on Cocoa platforms only, though.  We are simply following an existing pattern when we add new things to WKTR.  If you go through WKTR&apos;s use of Cocoa API and replace it with C API use, then we will be less likely to continue adding test-only Cocoa API just for WKTR and implementing it on Cocoa platforms only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395327</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-31 20:45:19 -0800</bug_when>
    <thetext>Can we at least get FIXMEs and bug reports to fill in the missing bits? Otherwise, we don&apos;t really have any chance to ever get it right....

(In reply to Alex Christensen from comment #22)
&gt; We are simply following an existing pattern when we
&gt; add new things to WKTR. 

TestController is currently almost entirely cross-platform, except for (a) a couple things that are actually platform-specific, (b) a couple exceptions that we should investigate, and (c) resource load statistics. Resource load statistics is at least 95% of the problematic code.

&gt; If you go through WKTR&apos;s use of Cocoa API and
&gt; replace it with C API use, then we will be less likely to continue adding
&gt; test-only Cocoa API just for WKTR and implementing it on Cocoa platforms
&gt; only.

I&apos;m trying to understand this; I know you must have a reason, but I don&apos;t see it. We should continue this discussion in bug #182355, or take it to webkit-dev.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332669</attachid>
            <date>2018-01-30 11:03:32 -0800</date>
            <delta_ts>2018-01-30 11:20:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181958-20180130110332.patch</filename>
            <type>text/plain</type>
            <size>43928</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc3NTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAxLTMwICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBjYWxsYmFjayB0byB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgpIGFkZHJl
c3MgdGVzdCBjYXNlIGZsYWtpbmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgxOTU4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODIwNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2ODAxODA0Pgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY4NDU3OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NT
aG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXM6Zm9ySG9z
dDpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczpmb3JIb3N0OmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omxv
Z1VzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6bG9nTm9uUmVjZW50VXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNvb2tpZVBhcnRpdGlv
bmluZ1VwZGF0ZUZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFy
SW5NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUGFydGl0aW9uaW5nU3RhdGVG
b3JEb21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmg6CisKIDIwMTgtMDEtMjkgIFphY2ggTGkgIDx6YWNoYXJ5bGkzMjNAZ21haWwuY29t
PgogCiAgICAgICAgIFdhcm5pbmcgaW4gMzItYml0IFdlYktpdCBidWlsZCB3aGVuIHRyeWluZyB0
byBsaW5rIHRvIFNhZmFyaVNhZmVCcm93c2luZwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShy
ZXZpc2lvbiAyMjc3NTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzUsNyArMzc1LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZwogICAgICAgICBzdGF0aXN0
aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9IHRydWU7CiAgICAgICAgIHN0YXRpc3RpY3MubW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAKLSAgICAgICAgdXBk
YXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IH0sIHsgfSwgeyBwcmltYXJ5RG9tYWlu
IH0sIFNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKKyAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9u
aW5nRm9yRG9tYWlucyh7IH0sIHsgfSwgeyBwcmltYXJ5RG9tYWluIH0sIFNob3VsZENsZWFyRmly
c3Q6Ok5vLCBbXSgpIHsgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTM4OSw3ICszODksNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nCiAgICAgICAgIHN0YXRpc3RpY3Mu
aGFkVXNlckludGVyYWN0aW9uID0gdHJ1ZTsKICAgICAgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpub3coKSAtIChtX3BhcmFtZXRlcnMudGlt
ZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgKyBTZWNvbmRzOjpmcm9tSG91cnMoMSkpOwogCi0g
ICAgICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoeyBwcmltYXJ5RG9tYWlu
IH0sIHsgfSwgeyB9LCBTaG91bGRDbGVhckZpcnN0OjpObyk7CisgICAgICAgIHVwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoeyBwcmltYXJ5RG9tYWluIH0sIHsgfSwgeyB9LCBTaG91
bGRDbGVhckZpcnN0OjpObywgW10oKSB7IH0pOwogICAgIH0pOwogfQogCkBAIC01NjIsMjEgKzU2
MiwyMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoCiAgICAgfSk7
CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNvb2tp
ZVBhcnRpdGlvbmluZ1VwZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91
bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JEb21haW5zKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRo
ZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgLy8gSGVscGVyIGZ1
bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9t
IHRoZSBtYWluIHRocmVhZC4KICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1f
c3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvUGFy
dGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2sp
LCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9t
YWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKSwgc2hvdWxkQ2xlYXJGaXJzdF0gewotICAg
ICAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKGRvbWFpbnNUb1BhcnRpdGlv
biwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hv
dWxkQ2xlYXJGaXJzdCk7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNUb1BhcnRpdGlvbiA9IGNyb3Nz
VGhyZWFkQ29weShkb21haW5zVG9QYXJ0aXRpb24pLCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhy
ZWFkQ29weShkb21haW5zVG9CbG9jayksIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9j
ayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2spLCBz
aG91bGRDbGVhckZpcnN0LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxl
IHsKKyAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhkb21haW5zVG9Q
YXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxv
Y2ssIHNob3VsZENsZWFyRmlyc3QsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9KTsKIH0KIAot
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJQYXJ0aXRp
b25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhclBhcnRpdGlvbmlu
Z1N0YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1
c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFp
biB0aHJlYWQuCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3N0YXRpc3Rp
Y3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
ZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zKV0gewotICAgICAgICBjbGVhclBhcnRp
dGlvbmluZ1N0YXRlRm9yRG9tYWlucyhkb21haW5zKTsKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWlucyA9
IGNyb3NzVGhyZWFkQ29weShkb21haW5zKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgIGNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKGRv
bWFpbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9KTsKIH0KIApAQCAtNzQ1LDcgKzc0NSw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGUKICAgICBtX3Jlc291
cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOwogICAgIG1fb3BlcmF0aW5nRGF0ZXMuY2xlYXIoKTsK
IAotICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoeyB9LCB7IH0sIHsgfSwg
U2hvdWxkQ2xlYXJGaXJzdDo6WWVzKTsKKyAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JE
b21haW5zKHsgfSwgeyB9LCB7IH0sIFNob3VsZENsZWFyRmlyc3Q6OlllcywgW10oKSB7IH0pOwog
fQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNz
KFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpCkBAIC04MDMsMTIg
KzgwMywxNCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkCiAgICAg
fSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29r
aWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9Q
YXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xl
YXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5v
ckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICBpZiAoZG9tYWluc1RvUGFydGl0aW9uLmlzRW1wdHkoKSAmJiBkb21haW5zVG9CbG9j
ay5pc0VtcHR5KCkgJiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLmlzRW1wdHko
KSAmJiBzaG91bGRDbGVhckZpcnN0ID09IFNob3VsZENsZWFyRmlyc3Q6Ok5vKQorICAgIGlmIChk
b21haW5zVG9QYXJ0aXRpb24uaXNFbXB0eSgpICYmIGRvbWFpbnNUb0Jsb2NrLmlzRW1wdHkoKSAm
JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2suaXNFbXB0eSgpICYmIHNob3VsZENs
ZWFyRmlyc3QgPT0gU2hvdWxkQ2xlYXJGaXJzdDo6Tm8pIHsKKyAgICAgICAgY2FsbGJhY2soKTsK
ICAgICAgICAgcmV0dXJuOwotCisgICAgfQorICAgIAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbdGhpcywgc2hvdWxkQ2xlYXJGaXJzdCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvUGFydGl0
aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBk
b21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlu
c1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKV0gKCkgewogICAgICAgICBtX3VwZGF0ZVByZXZh
bGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcihkb21haW5zVG9QYXJ0
aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ss
IHNob3VsZENsZWFyRmlyc3QpOwogICAgIH0pOwpAQCAtODI4LDEzICs4MzAsMTcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZAogCiAgICAgZm9yIChhdXRvJiBkb21h
aW4gOiBkb21haW5zVG9CbG9jaykKICAgICAgICAgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UHJpbWFyeURvbWFpbihkb21haW4pLmlzTWFya2VkRm9yQ29va2llQmxvY2tpbmcgPSB0cnVlOwor
CisgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUGFy
dGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgaWYgKGRvbWFpbnMuaXNFbXB0eSgpKQorICAgIGlmIChkb21h
aW5zLmlzRW1wdHkoKSkgeworICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICByZXR1cm47Cisg
ICAgfQogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlucyldICgp
IHsKICAgICAgICAgbV9yZW1vdmVEb21haW5zSGFuZGxlcihkb21haW5zKTsKQEAgLTg0NSw2ICs4
NTEsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlCiAgICAgICAg
IHN0YXRpc3RpYy5pc01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZyA9IGZhbHNlOwogICAgICAg
ICBzdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVCbG9ja2luZyA9IGZhbHNlOwogICAgIH0KKwor
ICAgIGNhbGxiYWNrKCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZXNldENvb2tpZVBhcnRpdGlvbmluZ1N0YXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShy
ZXZpc2lvbiAyMjc3NTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDggKzEwNyw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBX
ZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lKTsK
ICAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBXZWJDb3JlOjpV
UkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRv
KTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlKCk7Ci0gICAgdm9p
ZCBzY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlv
bk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0KTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJQYXJ0
aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwor
ICAgIHZvaWQgc2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JEb21haW5zKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFp
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3Np
bmcoKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2NoZWR1bGVDb29r
aWVQYXJ0aXRpb25pbmdTdGF0ZVJlc2V0KCk7CkBAIC0xNjEsOCArMTYxLDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CiAgICAg
VmVjdG9yPFN0cmluZz4gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1JlbW92ZVdlYnNp
dGVEYXRhRm9yKCk7CiAgICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKLSAgICB2
b2lkIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Js
b2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrLCBTaG91bGRDbGVhckZpcnN0KTsKLSAgICB2b2lkIGNsZWFyUGFydGl0aW9uaW5nU3RhdGVG
b3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lkIHVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91
bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xl
YXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBtZXJnZVN0YXRpc3Rp
Y3MoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwogICAgIFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclBy
aW1hcnlEb21haW4oY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwcm9jZXNzU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHJldmlzaW9uIDIyNzc1MikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0OSw5ICsyNDksOSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NTaG91CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh2YWx1ZSkKLSAg
ICAgICAgc3RvcmUtPnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyh7
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSB9LCB7IH0sIHsgfSwgV2ViS2l0OjpTaG91
bGRDbGVhckZpcnN0OjpObyk7CisgICAgICAgIHN0b3JlLT5zY2hlZHVsZUNvb2tpZVBhcnRpdGlv
bmluZ1VwZGF0ZUZvckRvbWFpbnMoeyBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkgfSwg
eyB9LCB7IH0sIFdlYktpdDo6U2hvdWxkQ2xlYXJGaXJzdDo6Tm8sIFtdKCkgeyB9KTsKICAgICBl
bHNlCi0gICAgICAgIHN0b3JlLT5zY2hlZHVsZUNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JEb21h
aW5zKHsgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpIH0pOworICAgICAgICBzdG9yZS0+
c2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyh7IFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSB9LCBbXSgpIHsgfSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyMjc3NTIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00OTYsMTQgKzQ5NiwyMyBAQCAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVXBkYXRlQ29vCiAKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQ
YXJ0aXRpb25Db29raWVzOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAogewor
ICAgIFtzZWxmIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2ll
czp2YWx1ZSBmb3JIb3N0Omhvc3QgY29tcGxldGlvbkhhbmRsZXI6XigpIHsgfV07Cit9CisKKy0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzOihC
T09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgorewogICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CiAg
ICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHZhbHVlKQotICAgICAg
ICBzdG9yZS0+c2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JEb21haW5zKHsgaG9z
dCB9LCB7IH0sIHsgfSwgV2ViS2l0OjpTaG91bGRDbGVhckZpcnN0OjpObyk7CisgICAgICAgIHN0
b3JlLT5zY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZUZvckRvbWFpbnMoeyBob3N0IH0s
IHsgfSwgeyB9LCBXZWJLaXQ6OlNob3VsZENsZWFyRmlyc3Q6Ok5vLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0pOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmUt
PnNjaGVkdWxlQ2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoeyBob3N0IH0pOworICAg
ICAgICBzdG9yZS0+c2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyh7IGhv
c3QgfSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICB9KTsKIH0K
IAogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCShyZXZpc2lvbiAyMjc3NTIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw3ICs3Myw5IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2Vy
LCBfV0tXZWJzaXQKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRQcnVuZUVudHJp
ZXNEb3duVG86KHNpemVfdCllbnRyaWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwg
aW9zKDExLjApKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNzU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDEx
LjApKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRp
b25pbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwotLSAodm9p
ZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXM6KEJPT0wp
dmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjEzKSwgaW9zKDExLjApKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91
bGRQYXJ0aXRpb25Db29raWVzOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBX
S19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXMiLCBtYWNvc3goMTAuMTMsIFdLX01BQ19UQkEpLCBp
b3MoMTEuMCwgV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nl
dFNob3VsZFBhcnRpdGlvbkNvb2tpZXM6KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilo
b3N0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAtICh2
b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkOihCT09MKXZhbHVl
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIC0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFS
ZWNvcmRzUmVtb3ZhbDooQk9PTCl2YWx1ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyks
IGlvcygxMS4wKSk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMjc4MzYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxOC0wMS0zMCAgSm9obiBXaWxhbmRlciAgPHdpbGFu
ZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY2FsbGJhY2sgdG8gdGVzdFJ1bm5lci5zdGF0
aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoKSBhZGRyZXNzIHRlc3QgY2Fz
ZSBmbGFraW5lc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MTk1OAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgyMDcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjgwMTgwND4KKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM2ODQ1Nzk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRp
ZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0
aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QpOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFBhcnRpdGlvbk9yQmxvY2tDb29raWVzRm9y
SG9zdENhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFNldFBhcnRpdGlvbk9yQmxv
Y2tDb29raWVzRm9ySG9zdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJD
b2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NTZXRTaG91
bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCk6CisKIDIwMTgtMDEtMzAgIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dlYlZSXVtHVEtdW1dQRV0g
RXhjbHVkZSBPcGVuVlIgZnJvbSB0YXJiYWxscwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAJKHJldmlzaW9uIDIyNzc1MikKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQ1LDYgKzEz
NDUsMTIgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkQ2xlYXJTdGF0aXN0aWNzVAogICAgIFdL
UGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiB9CiAKK3Zv
aWQgVGVzdEludm9jYXRpb246OmRpZFNldFBhcnRpdGlvbk9yQmxvY2tDb29raWVzRm9ySG9zdCgp
Cit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFNldFBhcnRpdGlvbk9yQmxvY2tD
b29raWVzRm9ySG9zdCIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIDApOworfQorCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZW1vdmVBbGxT
ZXNzaW9uQ3JlZGVudGlhbHMoKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRS
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjayIpKTsKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgJKHJldmlzaW9uIDIyNzc1MikKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiAr
NzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlEb3dubG9hZERvbmUoKTsKIAogICAgIHZv
aWQgZGlkQ2xlYXJTdGF0aXN0aWNzVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCgpOworICAgIHZv
aWQgZGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0KCk7CiAKICAgICB2b2lkIGRp
ZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogICAgIApJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAJKHJldmlzaW9uIDIyNzc1MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDEx
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG8KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiQ2FsbERpZFNldFBhcnRpdGlvbk9yQmxvY2tDb29raWVzRm9ySG9zdCIpKSB7Cisg
ICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlzdGljc0NhbGxEaWRTZXRQYXJ0aXRpb25PckJsb2Nr
Q29va2llc0Zvckhvc3RDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2siKSkgewogICAgICAgICBtX3Rlc3RSdW5u
ZXItPmNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjaygpOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDIyNzc1MikKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY1MSw2ICs2NTEsNyBAQCBlbnVtIHsKICAgICBTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNv
cmRzQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2tJRCwK
ICAgICBTdGF0aXN0aWNzRGlkQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsQ2FsbGJhY2tJ
RCwKKyAgICBTdGF0aXN0aWNzRGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0Q2Fs
bGJhY2tJRCwKICAgICBEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFja0lELAog
ICAgIEdldEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFja0lELAogICAgIEZpcnN0VUlTY3JpcHRD
YWxsYmFja0lEID0gMTAwCkBAIC0xNTU5LDggKzE1NjAsMTAgQEAgdm9pZCBUZXN0UnVubmVyOjpz
dGF0aXN0aWNzVXBkYXRlQ29va2llUAogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2Fn
ZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgp
LCAwLCBudWxscHRyKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzU2V0U2hvdWxk
UGFydGl0aW9uQ29va2llc0Zvckhvc3QoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUp
Cit2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9y
SG9zdChKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlZiBjYWxsYmFj
aykKIHsKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0UGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0Q2FsbGJhY2tJRCwgY2FsbGJhY2spOworCiAgICAgVmVj
dG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPj4ga2V5czsKICAgICBWZWN0b3I8V0tSZXRhaW5Q
dHI8V0tUeXBlUmVmPj4gdmFsdWVzOwogICAgIApAQCAtMTU4NCw2ICsxNTg3LDExIEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldFNob3VsZFBhcnQKICAgICBXS0J1bmRsZVBvc3RTeW5j
aHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNz
YWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwogfQogCit2b2lkIFRl
c3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JI
b3N0Q2FsbGJhY2soKQoreworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0Rp
ZFNldFBhcnRpdGlvbk9yQmxvY2tDb29raWVzRm9ySG9zdENhbGxiYWNrSUQpOworfQorCiB2b2lk
IFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKQogewogICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSIpKTsKSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCShyZXZp
c2lvbiAyMjc3NTIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDcgKzM2OCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigpOwogICAgIHZvaWQgc3RhdGlzdGljc1By
b2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKICAgICB2b2lkIHN0YXRpc3RpY3NVcGRh
dGVDb29raWVQYXJ0aXRpb25pbmcoKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0
aXRpb25Db29raWVzRm9ySG9zdChKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSk7Cisg
ICAgdm9pZCBzdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoSlNTdHJp
bmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZv
aWQgc3RhdGlzdGljc0NhbGxEaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhvc3RDYWxs
YmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQg
c2V0U3RhdGlzdGljc0xhc3RTZWVuKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBkb3VibGUgc2Vjb25k
cyk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoSlNTdHJpbmdSZWYg
aG9zdE5hbWUsIGJvb2wgdmFsdWUpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCShy
ZXZpc2lvbiAyMjc3NTIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsNyArMjg0LDcg
QEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc3RhdGlzdGljc05vdGlmeU9ic2Vy
dmVyKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
cygpOwogICAgIHZvaWQgc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOwotICAg
IHZvaWQgc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KERPTVN0cmlu
ZyBob3N0TmFtZSwgYm9vbGVhbiB2YWx1ZSk7CisgICAgdm9pZCBzdGF0aXN0aWNzU2V0U2hvdWxk
UGFydGl0aW9uQ29va2llc0Zvckhvc3QoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29sZWFuIHZhbHVl
LCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSgp
OwogICAgIHZvaWQgc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbGVhbiB2YWx1ZSk7CkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tCShyZXZpc2lvbiAyMjc3NTIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4MSw3ICszODEsOSBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzVXBkYXRlQ29vCiAKIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdChXS1N0
cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKIHsKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZp
Z3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXM6dmFsdWUgZm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cisg
ICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzOnZhbHVlIGZvckhvc3Q6dG9O
U1N0cmluZyhob3N0TmFtZSkgY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgbV9jdXJy
ZW50SW52b2NhdGlvbi0+ZGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0KCk7Cisg
ICAgfV07CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0
cnkoKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI3NzYxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMDEtMzAgIEpvaG4gV2lsYW5k
ZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGNhbGxiYWNrIHRvIHRlc3RS
dW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KCkgYWRkcmVz
cyB0ZXN0IGNhc2UgZmxha2luZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODE5NTgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MjA3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY4MDE4MDQ+Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjg0NTc5NT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgd2hpdGVzcGFjZSBjaGFuZ2VzIHRvIGZvdXIg
ZXhwZWN0IGZpbGVzIGFyZSBvZiB1bmtub3duIG9yaWdpbi4KKworICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQt
YmxvY2tpbmctdG8tcmVkaXJlY3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvYWRkLXBhcnRpdGlvbmluZy10by1yZWRpcmVjdC5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9ub24tcHJldmFsZW50LXJlc291
cmNlcy1jYW4tYWNjZXNzLWNvb2tpZXMtaW4tYS10aGlyZC1wYXJ0eS1jb250ZXh0Lmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFu
ZC11bnBhcnRpdGlvbmVkLWNvb2tpZS1kZWxldGlvbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdp
dGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0
aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1ibG9ja2luZy1pbi1yZWRpcmVjdC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1ibG9j
a2luZy1pbi1yZWRpcmVjdC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9yZW1vdmUtcGFydGl0aW9uaW5nLWluLXJlZGlyZWN0LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXBhcnRp
dGlvbmluZy1pbi1yZWRpcmVjdC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtd2l0aC1hbmQtd2l0aG91dC11c2VyLWlu
dGVyYWN0aW9uLmh0bWw6CisKIDIwMTgtMDEtMjkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBh
cHBsZS5jb20+CiAKICAgICAgICAgU3dpdGNoIGdyYW5kZmF0aGVyaW5nIGxheW91dCB0ZXN0IHRv
IHRyaWdnZXIgb24gZGF0YSByZWNvcmQgc2Nhbm5pbmcgaW5zdGVhZCBvZiBkYXRhIHJlY29yZCBt
b2RpZmljYXRpb24KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtYmxv
Y2tpbmctdG8tcmVkaXJlY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjc3NTIpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLWJsb2NraW5nLXRv
LXJlZGlyZWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCi0KKyAgCiAKIC0tLS0tLS0tCiBGcmFtZTog
JzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JwpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QuaHRtbAkocmV2aXNpb24gMjI3NzUyKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9j
a2luZy10by1yZWRpcmVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogICAg
IDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPGJvZHk+CiA8c2NyaXB0PgogICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGJsb2Nr
aW5nIGlzIGFkZGVkIG1pZC1mbGlnaHQgaW4gcmVkaXJlY3RzLiIpOwogICAgIGpzVGVzdElzQXN5
bmMgPSB0cnVlOwpAQCAtMTYsMTYgKzE2LDYgQEAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRDb29r
aWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOwogICAgIH0KIAotICAgIGlmIChk
b2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgewotICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KHRydWUpOwotICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jYWxo
b3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qg
c3RhcnRzLiIpOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyB1
cC10by1kYXRlLgotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRp
b25Db29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UpOwotICAgICAgICB0ZXN0UnVubmVy
LmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNo
ID0gInN0ZXAxIjsKLSAgICB9Ci0KICAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEyNy4wLjAu
MTo4MDAwIjsKICAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMCI7CiAgICAgY29uc3QgcmVzb3VyY2VQYXRoID0gIi9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3Jlc291cmNlcyI7CkBAIC0xMDMsNiArOTMsMTggQEAKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAi
IikgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOworICAgICAgICBpZiAodGVzdFJ1
bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jYWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZh
bGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRzLiIpOworICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5o
YXNoID0gInN0ZXAxIjsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBuZXR3b3JrIHByb2Nlc3Mg
aXMgdXAtdG8tZGF0ZS4KKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFy
dGl0aW9uQ29va2llc0Zvckhvc3QoImxvY2FsaG9zdCIsIGZhbHNlLCBydW5UZXN0KTsKKyAgICB9
IGVsc2UgeworICAgICAgICBydW5UZXN0KCk7CisgICAgfQogPC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvYWRkLXBhcnRpdGlvbmluZy10by1yZWRpcmVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtcGFydGl0aW9uaW5n
LXRvLXJlZGlyZWN0Lmh0bWwJKHJldmlzaW9uIDIyNzc1MikKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtcGFydGl0aW9uaW5nLXRvLXJlZGlyZWN0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBACiAgICAgPG1ldGEgY2hhcnNldD0i
VVRGLTgiPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8Ym9keT4KIDxz
Y3JpcHQ+CiAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgcGFydGl0aW9uaW5nIGlzIGFkZGVk
IG1pZC1mbGlnaHQgaW4gcmVkaXJlY3RzLiIpOwogICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwpA
QCAtMTYsMTYgKzE2LDYgQEAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRDb29raWVTdG9yYWdlUGFy
dGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOwogICAgIH0KIAotICAgIGlmIChkb2N1bWVudC5sb2Nh
dGlvbi5oYXNoID09PSAiIikgewotICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOwotICAg
ICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDov
L2xvY2FsaG9zdCIpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jYWxob3N0IHdhcyBjbGFz
c2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRzLiIpOwot
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyB1cC10by1kYXRlLgot
ICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9y
SG9zdCgibG9jYWxob3N0IiwgZmFsc2UpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZy
YW1lc0FzVGV4dCgpOwotICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsK
LSAgICB9Ci0KICAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEyNy4wLjAuMTo4MDAwIjsKICAg
ICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CiAgICAg
Y29uc3QgcmVzb3VyY2VQYXRoID0gIi9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcyI7
CkBAIC0xMDQsNiArOTQsMTggQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgeworICAgICAg
ICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQorICAgICAgICAgICAg
dGVzdEZhaWxlZCgiTG9jYWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJj
ZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRlZC4iKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hp
bGRGcmFtZXNBc1RleHQoKTsKKyAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVw
MSI7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgbmV0d29yayBwcm9jZXNzIGlzIHVwLXRvLWRh
dGUuCisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNGb3JIb3N0KCJsb2NhbGhvc3QiLCBmYWxzZSwgcnVuVGVzdCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgcnVuVGVzdCgpOworICAgIH0KIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL25vbi1wcmV2
YWxlbnQtcmVzb3VyY2VzLWNhbi1hY2Nlc3MtY29va2llcy1pbi1hLXRoaXJkLXBhcnR5LWNvbnRl
eHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVudC1yZXNvdXJjZXMtY2FuLWFjY2Vzcy1jb29raWVzLWlu
LWEtdGhpcmQtcGFydHktY29udGV4dC5odG1sCShyZXZpc2lvbiAyMjc3NTIpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVudC1yZXNv
dXJjZXMtY2FuLWFjY2Vzcy1jb29raWVzLWluLWEtdGhpcmQtcGFydHktY29udGV4dC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC02MCwxNyArNjAsMjEgQEAKICAgICAgICAgICAgICAgICBvcGVuSWZy
YW1lKHRoaXJkUGFydHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1T
aG91bGQgcmVjZWl2ZSBvbmUgY29va2llLiIsIHJ1blRlc3QpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSAiI3N0ZXAzIjoKLSAgICAgICAgICAgICAgICAvLyBTZXR1
cCBsb2NhbGhvc3QgZm9yIHBhcnRpdGlvbmluZyBhbmQgc2V0IGEgcGFydGl0aW9uZWQgY29va2ll
IGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xLgorICAgICAgICAgICAgICAgIC8vIFNldHVw
IGxvY2FsaG9zdCBmb3IgcGFydGl0aW9uaW5nLgogICAgICAgICAgICAgICAgIGRvY3VtZW50Lmxv
Y2F0aW9uLmhhc2ggPSAic3RlcDQiOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlz
dGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KHRoaXJkUGFydHlIb3N0bmFtZSwg
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5QmFzZVVybCArIHN1
YlBhdGhUb1NldFBhcnRpdGlvbmVkQ29va2llICsgIiZtZXNzYWdlPVNldHRpbmcgcGFydGl0aW9u
ZWQsIHRoaXJkIHBhcnR5IGNvb2tpZS4iLCBydW5UZXN0KTsKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCh0aGlyZFBh
cnR5SG9zdG5hbWUsIHRydWUsIHJ1blRlc3QpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSAiI3N0ZXA0IjoKLSAgICAgICAgICAgICAgICAvLyBMb2FkIGxvY2FsaG9z
dCB1bmRlciAxMjcuMC4wLjEgYW5kIGNoZWNrIHRoYXQgaXQgZ2V0cyBvbmx5IHRoZSBwYXJ0aXRp
b25lZCBjb29raWUuIEVuZCBieSBhcXVpcmluZyB1c2VyIGludGVyYWN0aW9uIGZvciBsb2NhbGhv
c3QuCisgICAgICAgICAgICAgICAgLy8gU2V0IGEgcGFydGl0aW9uZWQgY29va2llIGZvciBsb2Nh
bGhvc3QgdW5kZXIgMTI3LjAuMC4xLgogICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9u
Lmhhc2ggPSAic3RlcDUiOwotICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJh
c2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPVNob3VsZCByZWNlaXZlIG9u
ZSBwYXJ0aXRpb25lZCwgdGhpcmQgcGFydHkgY29va2llLiIsIHNldFVzZXJJbnRlcmFjdGlvbkFu
ZENvbnRpbnVlKTsKKyAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJs
ICsgc3ViUGF0aFRvU2V0UGFydGl0aW9uZWRDb29raWUgKyAiJm1lc3NhZ2U9U2V0dGluZyBwYXJ0
aXRpb25lZCwgdGhpcmQgcGFydHkgY29va2llLiIsIHJ1blRlc3QpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiI3N0ZXA1IjoKKyAgICAgICAgICAgICAgICAvLyBM
b2FkIGxvY2FsaG9zdCB1bmRlciAxMjcuMC4wLjEgYW5kIGNoZWNrIHRoYXQgaXQgZ2V0cyBvbmx5
IHRoZSBwYXJ0aXRpb25lZCBjb29raWUuIEVuZCBieSBhY3F1aXJpbmcgdXNlciBpbnRlcmFjdGlv
biBmb3IgbG9jYWxob3N0LgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2gg
PSAic3RlcDYiOworICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VVcmwg
KyBzdWJQYXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPVNob3VsZCByZWNlaXZlIG9uZSBwYXJ0
aXRpb25lZCwgdGhpcmQgcGFydHkgY29va2llLiIsIHNldFVzZXJJbnRlcmFjdGlvbkFuZENvbnRp
bnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNiI6
CiAgICAgICAgICAgICAgICAgLy8gTG9hZCBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xIGFuZCBj
aGVjayB0aGF0IGl0IGdldHMgaXRzIG5vbi1wYXJ0aXRpb25lZCBjb29raWUgYWZ0ZXIgdXNlciBp
bnRlcmFjdGlvbi4KICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJs
ICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1BZnRlciB1c2VyIGludGVyYWN0aW9u
LCBzaG91bGQgcmVjZWl2ZSBvbmUgbm9uLXBhcnRpdGlvbmVkLCBmaXJzdCBwYXJ0eSBjb29raWUu
IiwgZmluaXNoVGVzdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MiwxNCArODYsMTQg
QEAKIAogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh0
aGlyZFBhcnR5SG9zdG5hbWUsIGZhbHNlKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlPcmlnaW4sIGZhbHNlKTsKLSAgICAg
ICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3Qo
dGhpcmRQYXJ0eUhvc3RuYW1lLCBmYWxzZSk7Ci0KICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiAg
ICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDEiOwotICAgIH0KIAotICAgIHJ1
blRlc3QoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9u
Q29va2llc0Zvckhvc3QodGhpcmRQYXJ0eUhvc3RuYW1lLCBmYWxzZSwgcnVuVGVzdCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0KIDwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS1kZWxldGlvbi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtZGVsZXRpb24uaHRtbAkocmV2
aXNpb24gMjI3NzUyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS1kZWxldGlvbi5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC04NiwyNCArODYsMjUgQEAKICAgICAgICAgfQogICAgIH0KIAot
CiAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhvc3QgPT09IHBhcnRpdGlvbkhvc3QgJiYgZG9j
dW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiIgJiYgd2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93
LmludGVybmFscykgewogICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOwogCiAgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0
YVJlY29yZHNSZW1vdmFsKGZhbHNlKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKDApOwogCi0gICAgICAgIHRlc3RS
dW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KCJsb2NhbGhv
c3QiLCB0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgIGRvY3VtZW50Lmxv
Y2F0aW9uLmhhc2ggPSAic3RlcDEiOworCiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IiwgdHJ1ZSk7CiAgICAgICAgIGlm
ICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2Fs
aG9zdCIpKQogICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMg
cHJldmFsZW50IHJlc291cmNlLiIpOwogCi0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAg
ICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKyAgICAgICAgdGVzdFJ1bm5lci5z
dGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoImxvY2FsaG9zdCIsIHRy
dWUsIHJ1blRlc3QpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJ1blRlc3QoKTsKICAgICB9CiAK
LSAgICBydW5UZXN0KCk7CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1jb29r
aWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Bh
cnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjI3NzUyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11
c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQg
QEAKLQorICAKIAogLS0tLS0tLS0KIEZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAt
LT4tLT4nCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJh
Y3Rpb24uaHRtbAkocmV2aXNpb24gMjI3NzUyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91
dC11c2VyLWludGVyYWN0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiAg
ICAgPHRpdGxlPlRlc3QgZm9yIFBhcnRpdGlvbmVkIENvb2tpZXMgV2l0aCBhbmQgV2l0aG91dCBV
c2VyIEludGVyYWN0aW9uPC90aXRsZT4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KKzxib2R5PgogPHNjcmlwdD4KICAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEyNy4w
LjAuMTo4MDAwIjsKICAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMCI7CkBAIC03MywxMSArNzMsMTMgQEAKICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24u
aG9zdCA9PT0gcGFydGl0aW9uSG9zdCAmJiBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09ICIiICYm
IHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZSh0cnVlKTsKIAotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91
bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgdHJ1ZSk7Ci0KICAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxk
RnJhbWVzQXNUZXh0KCk7CiAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDEi
OworCisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNGb3JIb3N0KCJsb2NhbGhvc3QiLCB0cnVlLCBydW5UZXN0KTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBydW5UZXN0KCk7CiAgICAgfQogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLWJsb2NraW5nLWlu
LXJlZGlyZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLWJsb2NraW5nLWluLXJlZGlyZWN0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjI3NzUyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1ibG9ja2luZy1pbi1yZWRpcmVjdC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQotCisgIAogCiAtLS0tLS0tLQogRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8v
PCEtLWZyYW1lMC0tPi0tPicKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3QuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3Zl
LWJsb2NraW5nLWluLXJlZGlyZWN0Lmh0bWwJKHJldmlzaW9uIDIyNzc1MikKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtYmxvY2tpbmctaW4t
cmVkaXJlY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKICAgICA8bWV0YSBj
aGFyc2V0PSJVVEYtOCI+CiAgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxi
b2R5PgogPHNjcmlwdD4KICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBibG9ja2luZyBpcyBy
ZW1vdmVkIG1pZC1mbGlnaHQgaW4gcmVkaXJlY3RzLiIpOwogICAgIGpzVGVzdElzQXN5bmMgPSB0
cnVlOwpAQCAtMTYsMTYgKzE2LDYgQEAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRDb29raWVTdG9y
YWdlUGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOwogICAgIH0KIAotICAgIGlmIChkb2N1bWVu
dC5sb2NhdGlvbi5oYXNoID09PSAiIikgewotICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUp
OwotICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgi
aHR0cDovL2xvY2FsaG9zdCIpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jYWxob3N0IHdh
cyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRz
LiIpOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyB1cC10by1k
YXRlLgotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29r
aWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBD
aGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0
ZXAxIjsKLSAgICB9Ci0KICAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEyNy4wLjAuMTo4MDAw
IjsKICAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7
CiAgICAgY29uc3QgcmVzb3VyY2VQYXRoID0gIi9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291
cmNlcyI7CkBAIC05NCw2ICs4NCwxOCBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfQorCisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09ICIiKSB7Cisg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlz
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCisgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJMb2NhbGhvc3Qgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJl
c291cmNlIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuIik7CisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAi
c3RlcDEiOworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyB1cC10
by1kYXRlLgorICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25D
b29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UsIHJ1blRlc3QpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1v
dmUtcGFydGl0aW9uaW5nLWluLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXBhcnRp
dGlvbmluZy1pbi1yZWRpcmVjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIyNzc1MikKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtcGFydGl0
aW9uaW5nLWluLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2
LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCi0KKyAgCiAKIC0tLS0tLS0t
CiBGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1wYXJ0aXRpb25p
bmctaW4tcmVkaXJlY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXBhcnRpdGlvbmluZy1pbi1yZWRpcmVjdC5o
dG1sCShyZXZpc2lvbiAyMjc3NTIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXBhcnRpdGlvbmluZy1pbi1yZWRpcmVjdC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAg
ICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPGJvZHk+CiA8c2NyaXB0PgogICAg
IGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHBhcnRpdGlvbmluZyBpcyByZW1vdmVkIG1pZC1mbGln
aHQgaW4gcmVkaXJlY3RzLiIpOwogICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwpAQCAtMTYsMTYg
KzE2LDYgQEAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5n
RW5hYmxlZChlbmFibGUpOwogICAgIH0KIAotICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNo
ID09PSAiIikgewotICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOwotICAgICAgICBpZiAo
dGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9z
dCIpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jYWxob3N0IHdhcyBjbGFzc2lmaWVkIGFz
IHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRzLiIpOwotICAgICAgICAv
LyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyB1cC10by1kYXRlLgotICAgICAgICB0
ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgibG9j
YWxob3N0IiwgZmFsc2UpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpOwotICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKLSAgICB9Ci0K
ICAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEyNy4wLjAuMTo4MDAwIjsKICAgICBjb25zdCB0
aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CiAgICAgY29uc3QgcmVz
b3VyY2VQYXRoID0gIi9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcyI7CkBAIC05NSw2
ICs4NSwxOCBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisg
ICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09ICIiKSB7CisgICAgICAgIHNldEVuYWJs
ZUZlYXR1cmUodHJ1ZSk7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCisgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJMb2NhbGhvc3Qgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJlZm9yZSB0
aGUgdGVzdCBzdGFydHMuIik7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7CisgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDEiOworICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyB1cC10by1kYXRlLgorICAgICAg
ICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgi
bG9jYWxob3N0IiwgZmFsc2UsIHJ1blRlc3QpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJ1blRl
c3QoKTsKKyAgICB9CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUt
d2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNv
b2tpZS13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAkocmV2aXNpb24gMjI3
NzUyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Ro
aXJkLXBhcnR5LWNvb2tpZS13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNjksMTQgKzY5LDE4IEBACiAgICAgICAgICAgICBjYXNlICIjc3Rl
cDQiOgogICAgICAgICAgICAgICAgIC8vIEZsYWcgbG9jYWxob3N0IGZvciBwYXJ0aXRpb25pbmcg
YW5kIHNldCBhIHBhcnRpdGlvbmVkIGNvb2tpZS4KICAgICAgICAgICAgICAgICBkb2N1bWVudC5s
b2NhdGlvbi5oYXNoID0gInN0ZXA1IjsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRp
c3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCh0aGlyZFBhcnR5SG9zdG5hbWUs
IHRydWUpOwotICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBz
dWJQYXRoVG9TZXRQYXJ0aXRpb25lZFRoaXJkUGFydHlDb29raWUgKyAiJm1lc3NhZ2U9U2V0dGlu
ZyBwYXJ0aXRpb25lZCwgdGhpcmQgcGFydHkgY29va2llLiIsIHJ1blRlc3QpOworICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JI
b3N0KHRoaXJkUGFydHlIb3N0bmFtZSwgdHJ1ZSwgcnVuVGVzdCk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlICIjc3RlcDUiOgorICAgICAgICAgICAgICAgIC8vIEZs
YWcgbG9jYWxob3N0IGZvciBwYXJ0aXRpb25pbmcgYW5kIHNldCBhIHBhcnRpdGlvbmVkIGNvb2tp
ZS4KICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA2IjsKLSAg
ICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0
Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgb25seSByZWNlaXZlIHBhcnRpdGlvbmVkLCB0aGly
ZCBwYXJ0eSBjb29raWUuIiwgc2V0VXNlckludGVyYWN0aW9uQW5kQ29udGludWUpOworICAgICAg
ICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9TZXRQYXJ0
aXRpb25lZFRoaXJkUGFydHlDb29raWUgKyAiJm1lc3NhZ2U9U2V0dGluZyBwYXJ0aXRpb25lZCwg
dGhpcmQgcGFydHkgY29va2llLiIsIHJ1blRlc3QpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSAiI3N0ZXA2IjoKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2Nh
dGlvbi5oYXNoID0gInN0ZXA3IjsKKyAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFy
dHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgb25seSBy
ZWNlaXZlIHBhcnRpdGlvbmVkLCB0aGlyZCBwYXJ0eSBjb29raWUuIiwgc2V0VXNlckludGVyYWN0
aW9uQW5kQ29udGludWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAiI3N0ZXA3IjoKICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJs
ICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1BZnRlciB1c2VyIGludGVyYWN0aW9u
LCBzaG91bGQgcmVjZWl2ZSBub24tcGFydGl0aW9uZWQgY29va2llcyBzZXQgaW4gYSBmaXJzdC1w
YXJ0eSBjb250ZXh0IGFuZCBpbiBhIHRoaXJkLXBhcnR5IGNvbnRleHQuIiwgZmluaXNoVGVzdCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTg1LDE3ICs4OSwxNyBAQAog
ICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ob3N0ID09PSBwYXJ0aXRpb25Ib3N0ICYmIGRvY3Vt
ZW50LmxvY2F0aW9uLmhhc2ggPT0gIiIgJiYgd2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93Lmlu
dGVybmFscykgewogICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOwogCi0gICAgICAgIC8v
IFN0YXJ0IHRlc3Qgd2l0aCB0aGlyZCBwYXJ0eSBhcyBub24tcHJldmFsZW50Ci0gICAgICAgIHRl
c3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRoaXJkUGFydHlIb3N0bmFt
ZSwgZmFsc2UpOwotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50
ZXJhY3Rpb24odGhpcmRQYXJ0eU9yaWdpbiwgZmFsc2UpOwotICAgICAgICB0ZXN0UnVubmVyLnN0
YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCh0aGlyZFBhcnR5SG9zdG5h
bWUsIGZhbHNlKTsKLQogICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKICAgICAgICAgZG9jdW1lbnQu
bG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7Ci0gICAgfQogCi0gICAgcnVuVGVzdCgpOworICAgICAg
ICAvLyBTdGFydCB0ZXN0IHdpdGggdGhpcmQgcGFydHkgYXMgbm9uLXByZXZhbGVudAorICAgICAg
ICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh0aGlyZFBhcnR5SG9z
dG5hbWUsIGZhbHNlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKHRoaXJkUGFydHlPcmlnaW4sIGZhbHNlKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QodGhpcmRQYXJ0eUhv
c3RuYW1lLCBmYWxzZSwgcnVuVGVzdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcnVuVGVzdCgp
OworICAgIH0KIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332673</attachid>
            <date>2018-01-30 11:20:38 -0800</date>
            <delta_ts>2018-01-30 14:20:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181958-20180130112038.patch</filename>
            <type>text/plain</type>
            <size>43943</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc4MzYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAxLTMwICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBjYWxsYmFjayB0byB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgpIGFkZHJl
c3MgdGVzdCBjYXNlIGZsYWtpbmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgxOTU4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODIwNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2ODAxODA0Pgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY4NDU3OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NT
aG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXM6Zm9ySG9z
dDpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczpmb3JIb3N0OmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omxv
Z1VzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6bG9nTm9uUmVjZW50VXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNvb2tpZVBhcnRpdGlv
bmluZ1VwZGF0ZUZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFy
SW5NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUGFydGl0aW9uaW5nU3RhdGVG
b3JEb21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmg6CisKIDIwMTgtMDEtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIHRlbGVtZXRyeSB0byB0cmFjayBzdG9yYWdlIGFjY2VzcyBBUEkg
YWRvcHRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI3ODM2KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpsb2cKICAgICAgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNlcklu
dGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpub3coKTsKIAogICAgICAgICBpZiAoc3RhdGlzdGlj
cy5pc01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZyB8fCBzdGF0aXN0aWNzLmlzTWFya2VkRm9y
Q29va2llQmxvY2tpbmcpCi0gICAgICAgICAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JE
b21haW5zKHsgfSwgeyB9LCB7IHByaW1hcnlEb21haW4gfSwgU2hvdWxkQ2xlYXJGaXJzdDo6Tm8p
OworICAgICAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IH0sIHsg
fSwgeyBwcmltYXJ5RG9tYWluIH0sIFNob3VsZENsZWFyRmlyc3Q6Ok5vLCBbXSgpIHsgfSk7CiAg
ICAgfSk7CiB9CiAKQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6bG9nCiAgICAgICAgIHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uID0g
dHJ1ZTsKICAgICAgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9
IFdhbGxUaW1lOjpub3coKSAtIChtX3BhcmFtZXRlcnMudGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlv
bkZyZWUgKyBTZWNvbmRzOjpmcm9tSG91cnMoMSkpOwogCi0gICAgICAgIHVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnMoeyBwcmltYXJ5RG9tYWluIH0sIHsgfSwgeyB9LCBTaG91bGRD
bGVhckZpcnN0OjpObyk7CisgICAgICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFp
bnMoeyBwcmltYXJ5RG9tYWluIH0sIHsgfSwgeyB9LCBTaG91bGRDbGVhckZpcnN0OjpObywgW10o
KSB7IH0pOwogICAgIH0pOwogfQogCkBAIC01NzEsMjEgKzU3MSwyMSBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZUZv
ckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENs
ZWFyRmlyc3QpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVD
b29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywg
U2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGJhY2spCiB7CiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGlu
ZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0
aXRpb24gPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxv
Y2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFy
dGl0aW9uTm9yQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlv
bk5vckJsb2NrKSwgc2hvdWxkQ2xlYXJGaXJzdF0gewotICAgICAgICB1cGRhdGVDb29raWVQYXJ0
aXRpb25pbmdGb3JEb21haW5zKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRv
bWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7CisgICAg
bV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGRvbWFpbnNUb1BhcnRpdGlvbiA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9Q
YXJ0aXRpb24pLCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9CbG9j
ayksIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jayA9IGNyb3NzVGhyZWFkQ29weShk
b21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2spLCBzaG91bGRDbGVhckZpcnN0LCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdXBkYXRlQ29v
a2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Js
b2NrLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3Qs
IFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNh
bGxiYWNrKQogewogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVt
LiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWlucyA9IGNyb3NzVGhyZWFk
Q29weShkb21haW5zKV0gewotICAgICAgICBjbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlu
cyhkb21haW5zKTsKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShkb21h
aW5zKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
IGNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKGRvbWFpbnMsIFdURk1vdmUoY2FsbGJh
Y2spKTsKICAgICB9KTsKIH0KIApAQCAtNzU0LDcgKzc1NCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpjbGUKICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jbGVh
cigpOwogICAgIG1fb3BlcmF0aW5nRGF0ZXMuY2xlYXIoKTsKIAotICAgIHVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnMoeyB9LCB7IH0sIHsgfSwgU2hvdWxkQ2xlYXJGaXJzdDo6WWVz
KTsKKyAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKHsgfSwgeyB9LCB7IH0s
IFNob3VsZENsZWFyRmlyc3Q6OlllcywgW10oKSB7IH0pOwogfQogCiBib29sIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6d2FzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRl
cmFjdGlvbihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBjdXJyZW50LCBjb25zdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJiB1cGRhdGVkKQpAQCAtODI1LDEyICs4MjUsMTQgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZAogICAgIH0pOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9y
RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21h
aW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xl
YXJGaXJzdCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29r
aWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9Q
YXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xl
YXJGaXJzdCBzaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2Fs
bGJhY2spCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgaWYgKGRvbWFp
bnNUb1BhcnRpdGlvbi5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxvY2suaXNFbXB0eSgpICYmIGRv
bWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jay5pc0VtcHR5KCkgJiYgc2hvdWxkQ2xlYXJG
aXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpObykKKyAgICBpZiAoZG9tYWluc1RvUGFydGl0aW9u
LmlzRW1wdHkoKSAmJiBkb21haW5zVG9CbG9jay5pc0VtcHR5KCkgJiYgZG9tYWluc1RvTmVpdGhl
clBhcnRpdGlvbk5vckJsb2NrLmlzRW1wdHkoKSAmJiBzaG91bGRDbGVhckZpcnN0ID09IFNob3Vs
ZENsZWFyRmlyc3Q6Ok5vKSB7CisgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsK
LQorICAgIH0KKyAgICAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHNob3Vs
ZENsZWFyRmlyc3QsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUGFy
dGl0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb1BhcnRpdGlvbiksIGRvbWFpbnNUb0Js
b2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgZG9tYWluc1RvTmVpdGhlclBh
cnRpdGlvbk5vckJsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb05laXRoZXJQYXJ0aXRp
b25Ob3JCbG9jayldICgpIHsKICAgICAgICAgbV91cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0
aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9C
bG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0
KTsKICAgICB9KTsKQEAgLTg1MCwxMyArODUyLDE3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjp1cGQKIAogICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWluc1RvQmxv
Y2spCiAgICAgICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oZG9t
YWluKS5pc01hcmtlZEZvckNvb2tpZUJsb2NraW5nID0gdHJ1ZTsKKworICAgIGNhbGxiYWNrKCk7
CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclBhcnRpdGlv
bmluZ1N0YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9y
RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgIGlmIChkb21haW5zLmlzRW1wdHkoKSkKKyAgICBpZiAoZG9tYWlucy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBkb21haW5zID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnMpXSAoKSB7CiAgICAgICAgIG1fcmVt
b3ZlRG9tYWluc0hhbmRsZXIoZG9tYWlucyk7CkBAIC04NjcsNiArODczLDggQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZQogICAgICAgICBzdGF0aXN0aWMuaXNNYXJr
ZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSBmYWxzZTsKICAgICAgICAgc3RhdGlzdGljLmlzTWFy
a2VkRm9yQ29va2llQmxvY2tpbmcgPSBmYWxzZTsKICAgICB9CisKKyAgICBjYWxsYmFjaygpOwog
fQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzZXRDb29raWVQYXJ0
aXRpb25pbmdTdGF0ZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjI3ODM2KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw4ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJy
ZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7CiAgICAgdm9pZCBzZXRTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CiAgICAgdm9pZCBzY2hl
ZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZSgpOwotICAgIHZvaWQgc2NoZWR1bGVDb29raWVQ
YXJ0aXRpb25pbmdVcGRhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxk
Q2xlYXJGaXJzdCk7Ci0gICAgdm9pZCBzY2hlZHVsZUNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JE
b21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lkIHNjaGVkdWxl
Q29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ss
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ss
IFNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBzY2hlZHVsZUNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKCk7CiAgICAgdm9pZCBz
dWJtaXRUZWxlbWV0cnkoKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nU3Rh
dGVSZXNldCgpOwpAQCAtMTYzLDggKzE2Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmNsdWRl
VG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpOwogICAg
IHZvaWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7Ci0gICAgdm9pZCB1cGRhdGVDb29raWVQ
YXJ0aXRpb25pbmdGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0
aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJG
aXJzdCk7Ci0gICAgdm9pZCBjbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CisgICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRpb25p
bmdGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsZWFyUGFydGl0aW9uaW5nU3Rh
dGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCShyZXZpc2lvbiAyMjc4MzYpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTQsOSArMjU0LDkgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hv
dQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5zY2hl
ZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZUZvckRvbWFpbnMoeyBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkgfSwgeyB9LCB7IH0sIFdlYktpdDo6U2hvdWxkQ2xlYXJGaXJzdDo6Tm8p
OworICAgICAgICBzdG9yZS0+c2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JEb21h
aW5zKHsgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpIH0sIHsgfSwgeyB9LCBXZWJLaXQ6
OlNob3VsZENsZWFyRmlyc3Q6Ok5vLCBbXSgpIHsgfSk7CiAgICAgZWxzZQotICAgICAgICBzdG9y
ZS0+c2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyh7IFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSB9KTsKKyAgICAgICAgc3RvcmUtPnNjaGVkdWxlQ2xlYXJQYXJ0
aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoeyBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkg
fSwgW10oKSB7IH0pOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NTdWJt
aXRUZWxlbWV0cnkoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQkocmV2aXNpb24gMjI3ODM2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTA2LDE0
ICs1MDYsMjMgQEAgLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZUNvbwogCiAt
ICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczoo
Qk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKIHsKKyAgICBbc2VsZiBfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXM6dmFsdWUgZm9ySG9zdDpo
b3N0IGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7IH1dOworfQorCistICh2b2lkKV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczooQk9PTCl2YWx1ZSBmb3JIb3N0
OihOU1N0cmluZyAqKWhvc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlv
bkhhbmRsZXIKK3sKICAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogICAgIGlmICghc3RvcmUpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPnNjaGVkdWxl
Q29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyh7IGhvc3QgfSwgeyB9LCB7IH0sIFdl
YktpdDo6U2hvdWxkQ2xlYXJGaXJzdDo6Tm8pOworICAgICAgICBzdG9yZS0+c2NoZWR1bGVDb29r
aWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JEb21haW5zKHsgaG9zdCB9LCB7IH0sIHsgfSwgV2ViS2l0
OjpTaG91bGRDbGVhckZpcnN0OjpObywgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgICAgICB9KTsKICAgICBlbHNlCi0gICAgICAgIHN0b3JlLT5zY2hlZHVsZUNsZWFyUGFy
dGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKHsgaG9zdCB9KTsKKyAgICAgICAgc3RvcmUtPnNjaGVk
dWxlQ2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoeyBob3N0IH0sIFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgeworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgfSk7CiB9CiAKIC0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaAkocmV2aXNpb24gMjI3ODM2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzQs
NyArNzQsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0CiAtICh2
b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0UHJ1bmVFbnRyaWVzRG93blRvOihzaXplX3Qp
ZW50cmllcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2
b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKLS0gKHZvaWQpX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzOihCT09MKXZhbHVlIGZvckhvc3Q6KE5T
U3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2ll
czooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QgV0tfQVBJX0RFUFJFQ0FURURf
V0lUSF9SRVBMQUNFTUVOVCgiX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRp
b25Db29raWVzIiwgbWFjb3N4KDEwLjEzLCBXS19NQUNfVEJBKSwgaW9zKDExLjAsIFdLX0lPU19U
QkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25D
b29raWVzOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBp
b3MoMTEuMCkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2Vz
V2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQ6KEJPT0wpdmFsdWUgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1NldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsOihCT09M
KXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIyNzgzNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2
IEBACisyMDE4LTAxLTMwICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBjYWxsYmFjayB0byB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0
aXRpb25Db29raWVzRm9ySG9zdCgpIGFkZHJlc3MgdGVzdCBjYXNlIGZsYWtpbmVzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxOTU4CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwNzIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM2ODAxODA0PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY4NDU3
OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1Bh
Z2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0
aXRpb25Db29raWVzRm9ySG9zdCk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3Rp
Y3NDYWxsRGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0Q2FsbGJhY2spOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RS
OjpUZXN0SW52b2NhdGlvbjo6ZGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0KToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNG
b3JIb3N0KToKKwogMjAxOC0wMS0zMCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbV2ViVlJdW0dUS11bV1BFXSBFeGNsdWRlIE9wZW5WUiBmcm9t
IHRhcmJhbGxzCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAkocmV2aXNpb24gMjI3ODM2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNDUsNiArMTM0NSwxMiBAQCB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkaWRDbGVhclN0YXRpc3RpY3NUCiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0lu
amVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5w
YWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKIH0KIAordm9pZCBUZXN0SW52b2NhdGlvbjo6
ZGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0KCkKK3sKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJDYWxsRGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0IikpOwor
ICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9
CisKIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygp
CiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVk
ZW50aWFsc0NhbGxiYWNrIikpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uaAkocmV2aXNpb24gMjI3ODM2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG5vdGlmeURvd25sb2FkRG9uZSgpOwogCiAgICAgdm9pZCBkaWRDbGVhclN0YXRpc3Rp
Y3NUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7CisgICAgdm9pZCBkaWRTZXRQYXJ0aXRpb25P
ckJsb2NrQ29va2llc0Zvckhvc3QoKTsKIAogICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNy
ZWRlbnRpYWxzKCk7CiAgICAgCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMjI3ODM2
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsMTEgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUbwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0
UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0IikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVy
LT5zdGF0aXN0aWNzQ2FsbERpZFNldFBhcnRpdGlvbk9yQmxvY2tDb29raWVzRm9ySG9zdENhbGxi
YWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVu
dGlhbHNDYWxsYmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFs
bFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAkocmV2aXNpb24gMjI3ODM2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUxLDYgKzY1MSw3IEBA
IGVudW0gewogICAgIFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFja0lELAogICAg
IFN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRD
bGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFja0lELAorICAgIFN0YXRpc3RpY3NE
aWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhvc3RDYWxsYmFja0lELAogICAgIERpZFJl
bW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrSUQsCiAgICAgR2V0QXBwbGljYXRpb25N
YW5pZmVzdENhbGxiYWNrSUQsCiAgICAgRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQgPSAxMDAKQEAg
LTE1NTksOCArMTU2MCwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NVcGRhdGVDb29r
aWVQCiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAsIG51bGxwdHIpOwogfQog
Ci12b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9y
SG9zdChKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6
c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIHZhbHVlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogeworICAgIGNhY2hlVGVz
dFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zv
ckhvc3RDYWxsYmFja0lELCBjYWxsYmFjayk7CisKICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+PiBrZXlzOwogICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1
ZXM7CiAgICAgCkBAIC0xNTg0LDYgKzE1ODcsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0
aWNzU2V0U2hvdWxkUGFydAogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNz
YWdlQm9keS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGlj
c0NhbGxEaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhvc3RDYWxsYmFjaygpCit7Cisg
ICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0UGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNGb3JIb3N0Q2FsbGJhY2tJRCk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlz
dGljc1N1Ym1pdFRlbGVtZXRyeSgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1l
c3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0
aWNzU3VibWl0VGVsZW1ldHJ5IikpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHJldmlzaW9uIDIyNzgzNikKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjgsNyArMzY4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc05v
dGlmeU9ic2VydmVyKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmRE
YXRhUmVjb3JkcygpOwogICAgIHZvaWQgc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmlu
ZygpOwotICAgIHZvaWQgc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0
KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NT
ZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdChKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9v
bCB2YWx1ZSwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CisgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERp
ZFNldFBhcnRpdGlvbk9yQmxvY2tDb29raWVzRm9ySG9zdENhbGxiYWNrKCk7CiAgICAgdm9pZCBz
dGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTGFzdFNl
ZW4oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1
ZSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHJldmlzaW9uIDIyNzgzNikKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw3ICsyODQsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1
bm5lciB7CiAgICAgdm9pZCBzdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKICAgICB2b2lkIHN0
YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAgICAgdm9pZCBzdGF0
aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNzU2V0
U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29sZWFu
IHZhbHVlKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9y
SG9zdChET01TdHJpbmcgaG9zdE5hbWUsIGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjayk7
CiAgICAgdm9pZCBzdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgdm9pZCBzZXRTdGF0
aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sZWFuIHZhbHVl
KTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURh
dGFSZWNvcmRzUmVtb3ZhbChib29sZWFuIHZhbHVlKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHJldmlzaW9uIDIy
NzgzNikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgxLDcgKzM4MSw5IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OnN0YXRpc3RpY3NVcGRhdGVDb28KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGlj
c1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBi
b29sIHZhbHVlKQogewotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0
YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczp2
YWx1ZSBmb3JIb3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKKyAgICBbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNo
b3VsZFBhcnRpdGlvbkNvb2tpZXM6dmFsdWUgZm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKSBj
b21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRT
ZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhvc3QoKTsKKyAgICB9XTsKIH0KIAogdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSgpCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMjc4MzYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyOCBAQAorMjAxOC0wMS0zMCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgY2FsbGJhY2sgdG8gdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0
U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoKSBhZGRyZXNzIHRlc3QgY2FzZSBmbGFraW5l
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTk1
OAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyMDcy
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjgwMTgwND4KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM2ODQ1Nzk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSB3aGl0ZXNwYWNlIGNoYW5nZXMgdG8gZm91ciBleHBlY3QgZmlsZXMgYXJlIG9m
IHVua25vd24gb3JpZ2luLgorCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVj
dC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQt
cGFydGl0aW9uaW5nLXRvLXJlZGlyZWN0Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL25vbi1wcmV2YWxlbnQtcmVzb3VyY2VzLWNhbi1hY2Nlc3MtY29v
a2llcy1pbi1hLXRoaXJkLXBhcnR5LWNvbnRleHQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29v
a2llLWRlbGV0aW9uLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0
aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rp
b24uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVt
b3ZlLWJsb2NraW5nLWluLXJlZGlyZWN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLWJsb2NraW5nLWluLXJlZGlyZWN0Lmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1w
YXJ0aXRpb25pbmctaW4tcmVkaXJlY3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtcGFydGl0aW9uaW5nLWluLXJlZGlyZWN0
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJk
LXBhcnR5LWNvb2tpZS13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbDoKKwog
MjAxOC0wMS0zMCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAy
Mjc4MzYpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
YWRkLWJsb2NraW5nLXRvLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
Niw3ICs2LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCi0KKyAgCiAKIC0t
LS0tLS0tCiBGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JwpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9ja2lu
Zy10by1yZWRpcmVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QuaHRtbAkocmV2
aXNpb24gMjI3ODM2KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00
LDcgKzQsNyBAQAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorPGJvZHk+CiA8c2NyaXB0PgogICAgIGRlc2NyaXB0aW9uKCJU
ZXN0cyB0aGF0IGJsb2NraW5nIGlzIGFkZGVkIG1pZC1mbGlnaHQgaW4gcmVkaXJlY3RzLiIpOwog
ICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwpAQCAtMTYsMTYgKzE2LDYgQEAKICAgICAgICAgdGVz
dFJ1bm5lci5zZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOwogICAg
IH0KIAotICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgewotICAgICAgICBz
ZXRFbmFibGVGZWF0dXJlKHRydWUpOwotICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQotICAgICAgICAgICAgdGVz
dEZhaWxlZCgiTG9jYWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBi
ZWZvcmUgdGhlIHRlc3Qgc3RhcnRzLiIpOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdv
cmsgcHJvY2VzcyBpcyB1cC10by1kYXRlLgotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NT
ZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UpOwotICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICBkb2N1bWVu
dC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKLSAgICB9Ci0KICAgICBjb25zdCBwYXJ0aXRpb25I
b3N0ID0gIjEyNy4wLjAuMTo4MDAwIjsKICAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CiAgICAgY29uc3QgcmVzb3VyY2VQYXRoID0gIi9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcyI7CkBAIC0xMDMsNiArOTMsMTggQEAKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmIChkb2N1bWVudC5sb2Nh
dGlvbi5oYXNoID09PSAiIikgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOworICAg
ICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDov
L2xvY2FsaG9zdCIpKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jYWxob3N0IHdhcyBjbGFz
c2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRzLiIpOwor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgICAgICBkb2N1
bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBu
ZXR3b3JrIHByb2Nlc3MgaXMgdXAtdG8tZGF0ZS4KKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0
aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoImxvY2FsaG9zdCIsIGZhbHNlLCBy
dW5UZXN0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBydW5UZXN0KCk7CisgICAgfQogPC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvYWRkLXBhcnRpdGlvbmluZy10by1yZWRpcmVjdC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9h
ZGQtcGFydGl0aW9uaW5nLXRvLXJlZGlyZWN0Lmh0bWwJKHJldmlzaW9uIDIyNzgzNikKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtcGFydGl0aW9u
aW5nLXRvLXJlZGlyZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBACiAgICAg
PG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+Cis8Ym9keT4KIDxzY3JpcHQ+CiAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgcGFydGl0
aW9uaW5nIGlzIGFkZGVkIG1pZC1mbGlnaHQgaW4gcmVkaXJlY3RzLiIpOwogICAgIGpzVGVzdElz
QXN5bmMgPSB0cnVlOwpAQCAtMTYsMTYgKzE2LDYgQEAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRD
b29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOwogICAgIH0KIAotICAgIGlm
IChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgewotICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKHRydWUpOwotICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9j
YWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRl
c3Qgc3RhcnRzLiIpOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBp
cyB1cC10by1kYXRlLgotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0
aXRpb25Db29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UpOwotICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5o
YXNoID0gInN0ZXAxIjsKLSAgICB9Ci0KICAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEyNy4w
LjAuMTo4MDAwIjsKICAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMCI7CiAgICAgY29uc3QgcmVzb3VyY2VQYXRoID0gIi9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3Jlc291cmNlcyI7CkBAIC0xMDQsNiArOTQsMTggQEAKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09
PSAiIikgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOworICAgICAgICBpZiAodGVz
dFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIp
KQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jYWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHBy
ZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRlZC4iKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICAgICAgZG9jdW1lbnQubG9jYXRp
b24uaGFzaCA9ICJzdGVwMSI7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgbmV0d29yayBwcm9j
ZXNzIGlzIHVwLXRvLWRhdGUuCisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KCJsb2NhbGhvc3QiLCBmYWxzZSwgcnVuVGVzdCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0KIDwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL25vbi1wcmV2YWxlbnQtcmVzb3VyY2VzLWNhbi1hY2Nlc3MtY29va2llcy1pbi1hLXRo
aXJkLXBhcnR5LWNvbnRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVudC1yZXNvdXJjZXMtY2FuLWFj
Y2Vzcy1jb29raWVzLWluLWEtdGhpcmQtcGFydHktY29udGV4dC5odG1sCShyZXZpc2lvbiAyMjc4
MzYpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvbm9u
LXByZXZhbGVudC1yZXNvdXJjZXMtY2FuLWFjY2Vzcy1jb29raWVzLWluLWEtdGhpcmQtcGFydHkt
Y29udGV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxNyArNjAsMjEgQEAKICAgICAgICAg
ICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2ll
cyArICImbWVzc2FnZT1TaG91bGQgcmVjZWl2ZSBvbmUgY29va2llLiIsIHJ1blRlc3QpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiI3N0ZXAzIjoKLSAgICAgICAg
ICAgICAgICAvLyBTZXR1cCBsb2NhbGhvc3QgZm9yIHBhcnRpdGlvbmluZyBhbmQgc2V0IGEgcGFy
dGl0aW9uZWQgY29va2llIGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xLgorICAgICAgICAg
ICAgICAgIC8vIFNldHVwIGxvY2FsaG9zdCBmb3IgcGFydGl0aW9uaW5nLgogICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDQiOwotICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KHRoaXJk
UGFydHlIb3N0bmFtZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBh
cnR5QmFzZVVybCArIHN1YlBhdGhUb1NldFBhcnRpdGlvbmVkQ29va2llICsgIiZtZXNzYWdlPVNl
dHRpbmcgcGFydGl0aW9uZWQsIHRoaXJkIHBhcnR5IGNvb2tpZS4iLCBydW5UZXN0KTsKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVz
Rm9ySG9zdCh0aGlyZFBhcnR5SG9zdG5hbWUsIHRydWUsIHJ1blRlc3QpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiI3N0ZXA0IjoKLSAgICAgICAgICAgICAgICAv
LyBMb2FkIGxvY2FsaG9zdCB1bmRlciAxMjcuMC4wLjEgYW5kIGNoZWNrIHRoYXQgaXQgZ2V0cyBv
bmx5IHRoZSBwYXJ0aXRpb25lZCBjb29raWUuIEVuZCBieSBhcXVpcmluZyB1c2VyIGludGVyYWN0
aW9uIGZvciBsb2NhbGhvc3QuCisgICAgICAgICAgICAgICAgLy8gU2V0IGEgcGFydGl0aW9uZWQg
Y29va2llIGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xLgogICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDUiOwotICAgICAgICAgICAgICAgIG9wZW5JZnJh
bWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPVNo
b3VsZCByZWNlaXZlIG9uZSBwYXJ0aXRpb25lZCwgdGhpcmQgcGFydHkgY29va2llLiIsIHNldFVz
ZXJJbnRlcmFjdGlvbkFuZENvbnRpbnVlKTsKKyAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRo
aXJkUGFydHlCYXNlVXJsICsgc3ViUGF0aFRvU2V0UGFydGl0aW9uZWRDb29raWUgKyAiJm1lc3Nh
Z2U9U2V0dGluZyBwYXJ0aXRpb25lZCwgdGhpcmQgcGFydHkgY29va2llLiIsIHJ1blRlc3QpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiI3N0ZXA1IjoKKyAgICAg
ICAgICAgICAgICAvLyBMb2FkIGxvY2FsaG9zdCB1bmRlciAxMjcuMC4wLjEgYW5kIGNoZWNrIHRo
YXQgaXQgZ2V0cyBvbmx5IHRoZSBwYXJ0aXRpb25lZCBjb29raWUuIEVuZCBieSBhY3F1aXJpbmcg
dXNlciBpbnRlcmFjdGlvbiBmb3IgbG9jYWxob3N0LgorICAgICAgICAgICAgICAgIGRvY3VtZW50
LmxvY2F0aW9uLmhhc2ggPSAic3RlcDYiOworICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhp
cmRQYXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPVNob3VsZCBy
ZWNlaXZlIG9uZSBwYXJ0aXRpb25lZCwgdGhpcmQgcGFydHkgY29va2llLiIsIHNldFVzZXJJbnRl
cmFjdGlvbkFuZENvbnRpbnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgIiNzdGVwNiI6CiAgICAgICAgICAgICAgICAgLy8gTG9hZCBsb2NhbGhvc3QgdW5kZXIg
MTI3LjAuMC4xIGFuZCBjaGVjayB0aGF0IGl0IGdldHMgaXRzIG5vbi1wYXJ0aXRpb25lZCBjb29r
aWUgYWZ0ZXIgdXNlciBpbnRlcmFjdGlvbi4KICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRo
aXJkUGFydHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1BZnRlciB1
c2VyIGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBvbmUgbm9uLXBhcnRpdGlvbmVkLCBmaXJz
dCBwYXJ0eSBjb29raWUuIiwgZmluaXNoVGVzdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC04MiwxNCArODYsMTQgQEAKIAogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZSh0aGlyZFBhcnR5SG9zdG5hbWUsIGZhbHNlKTsKICAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlPcmlnaW4s
IGZhbHNlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9u
Q29va2llc0Zvckhvc3QodGhpcmRQYXJ0eUhvc3RuYW1lLCBmYWxzZSk7Ci0KICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJh
bWVzQXNUZXh0KCk7CiAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDEiOwot
ICAgIH0KIAotICAgIHJ1blRlc3QoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0
U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QodGhpcmRQYXJ0eUhvc3RuYW1lLCBmYWxzZSwg
cnVuVGVzdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0KIDwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS1k
ZWxldGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtZGVs
ZXRpb24uaHRtbAkocmV2aXNpb24gMjI3ODM2KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tp
ZS1kZWxldGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04NiwyNCArODYsMjUgQEAKICAgICAg
ICAgfQogICAgIH0KIAotCiAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhvc3QgPT09IHBhcnRp
dGlvbkhvc3QgJiYgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiIgJiYgd2luZG93LnRlc3RS
dW5uZXIgJiYgd2luZG93LmludGVybmFscykgewogICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRy
dWUpOwogCiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGZhbHNlKTsKICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKDApOwog
Ci0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNG
b3JIb3N0KCJsb2NhbGhvc3QiLCB0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAg
ICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDEiOworCiAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IiwgdHJ1
ZSk7CiAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZSgiaHR0cDovL2xvY2FsaG9zdCIpKQogICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQg
bm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwogCi0gICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpOwotICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3Qo
ImxvY2FsaG9zdCIsIHRydWUsIHJ1blRlc3QpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJ1blRl
c3QoKTsKICAgICB9CiAKLSAgICBydW5UZXN0KCk7CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9w
YXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWlu
dGVyYWN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjI3ODM2KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0
aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKLQorICAKIAogLS0tLS0tLS0KIEZyYW1lOiAnPCEtLWZyYW1lUGF0
aCAvLzwhLS1mcmFtZTAtLT4tLT4nCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVz
ZXItaW50ZXJhY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRo
b3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAkocmV2aXNpb24gMjI3ODM2KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMt
d2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTUsNyArNSw3IEBACiAgICAgPHRpdGxlPlRlc3QgZm9yIFBhcnRpdGlvbmVkIENvb2tpZXMgV2l0
aCBhbmQgV2l0aG91dCBVc2VyIEludGVyYWN0aW9uPC90aXRsZT4KICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxib2R5PgogPHNjcmlwdD4KICAgICBjb25zdCBwYXJ0aXRp
b25Ib3N0ID0gIjEyNy4wLjAuMTo4MDAwIjsKICAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0g
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CkBAIC03MywxMSArNzMsMTMgQEAKICAgICBpZiAoZG9j
dW1lbnQubG9jYXRpb24uaG9zdCA9PT0gcGFydGl0aW9uSG9zdCAmJiBkb2N1bWVudC5sb2NhdGlv
bi5oYXNoID09ICIiICYmIHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsK
ICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlKTsKIAotICAgICAgICB0ZXN0UnVubmVyLnN0
YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgdHJ1
ZSk7Ci0KICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9u
Lmhhc2ggPSAic3RlcDEiOworCisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KCJsb2NhbGhvc3QiLCB0cnVlLCBydW5UZXN0KTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBydW5UZXN0KCk7CiAgICAgfQogPC9zY3JpcHQ+CiA8L2JvZHk+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVt
b3ZlLWJsb2NraW5nLWluLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLWJsb2NraW5n
LWluLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjI3ODM2KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1ibG9ja2luZy1pbi1y
ZWRpcmVjdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBAIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQotCisgIAogCiAtLS0tLS0tLQogRnJhbWU6ICc8
IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3Qu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcmVtb3ZlLWJsb2NraW5nLWluLXJlZGlyZWN0Lmh0bWwJKHJldmlzaW9uIDIyNzgz
NikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1v
dmUtYmxvY2tpbmctaW4tcmVkaXJlY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcg
QEAKICAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzxib2R5PgogPHNjcmlwdD4KICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhh
dCBibG9ja2luZyBpcyByZW1vdmVkIG1pZC1mbGlnaHQgaW4gcmVkaXJlY3RzLiIpOwogICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOwpAQCAtMTYsMTYgKzE2LDYgQEAKICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOwogICAgIH0KIAot
ICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgewotICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKHRydWUpOwotICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQotICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiTG9jYWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUg
dGhlIHRlc3Qgc3RhcnRzLiIpOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJv
Y2VzcyBpcyB1cC10by1kYXRlLgotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91
bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UpOwotICAgICAgICB0
ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICBkb2N1bWVudC5sb2Nh
dGlvbi5oYXNoID0gInN0ZXAxIjsKLSAgICB9Ci0KICAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0g
IjEyNy4wLjAuMTo4MDAwIjsKICAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMCI7CiAgICAgY29uc3QgcmVzb3VyY2VQYXRoID0gIi9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3Jlc291cmNlcyI7CkBAIC05NCw2ICs4NCwxOCBAQAogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhh
c2ggPT09ICIiKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7CisgICAgICAgIGlm
ICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxo
b3N0IikpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NhbGhvc3Qgd2FzIGNsYXNzaWZpZWQg
YXMgcHJldmFsZW50IHJlc291cmNlIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuIik7CisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgIGRvY3VtZW50Lmxv
Y2F0aW9uLmhhc2ggPSAic3RlcDEiOworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsg
cHJvY2VzcyBpcyB1cC10by1kYXRlLgorICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRT
aG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UsIHJ1blRlc3Qp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9CiA8L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9yZW1vdmUtcGFydGl0aW9uaW5nLWluLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVtb3ZlLXBhcnRpdGlvbmluZy1pbi1yZWRpcmVjdC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDIyNzgzNikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9yZW1vdmUtcGFydGl0aW9uaW5nLWluLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNiw3ICs2LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCi0K
KyAgCiAKIC0tLS0tLS0tCiBGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+
JwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jl
bW92ZS1wYXJ0aXRpb25pbmctaW4tcmVkaXJlY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXBhcnRpdGlvbmlu
Zy1pbi1yZWRpcmVjdC5odG1sCShyZXZpc2lvbiAyMjc4MzYpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXBhcnRpdGlvbmluZy1pbi1yZWRp
cmVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogICAgIDxtZXRhIGNoYXJz
ZXQ9IlVURi04Ij4KICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPGJvZHk+
CiA8c2NyaXB0PgogICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHBhcnRpdGlvbmluZyBpcyBy
ZW1vdmVkIG1pZC1mbGlnaHQgaW4gcmVkaXJlY3RzLiIpOwogICAgIGpzVGVzdElzQXN5bmMgPSB0
cnVlOwpAQCAtMTYsMTYgKzE2LDYgQEAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRDb29raWVTdG9y
YWdlUGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOwogICAgIH0KIAotICAgIGlmIChkb2N1bWVu
dC5sb2NhdGlvbi5oYXNoID09PSAiIikgewotICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUp
OwotICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgi
aHR0cDovL2xvY2FsaG9zdCIpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jYWxob3N0IHdh
cyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRz
LiIpOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyB1cC10by1k
YXRlLgotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29r
aWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBD
aGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0
ZXAxIjsKLSAgICB9Ci0KICAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEyNy4wLjAuMTo4MDAw
IjsKICAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7
CiAgICAgY29uc3QgcmVzb3VyY2VQYXRoID0gIi9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291
cmNlcyI7CkBAIC05NSw2ICs4NSwxOCBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfQorCisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09ICIiKSB7Cisg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlz
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCisgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJMb2NhbGhvc3Qgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJl
c291cmNlIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuIik7CisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAi
c3RlcDEiOworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyB1cC10
by1kYXRlLgorICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25D
b29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UsIHJ1blRlc3QpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGly
ZC1wYXJ0eS1jb29raWUtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3RoaXJkLXBhcnR5LWNvb2tpZS13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRt
bAkocmV2aXNpb24gMjI3ODM2KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS13aXRoLWFuZC13aXRob3V0LXVzZXItaW50
ZXJhY3Rpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjksMTQgKzY5LDE4IEBACiAgICAgICAg
ICAgICBjYXNlICIjc3RlcDQiOgogICAgICAgICAgICAgICAgIC8vIEZsYWcgbG9jYWxob3N0IGZv
ciBwYXJ0aXRpb25pbmcgYW5kIHNldCBhIHBhcnRpdGlvbmVkIGNvb2tpZS4KICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA1IjsKLSAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCh0aGly
ZFBhcnR5SG9zdG5hbWUsIHRydWUpOwotICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQ
YXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9TZXRQYXJ0aXRpb25lZFRoaXJkUGFydHlDb29raWUgKyAi
Jm1lc3NhZ2U9U2V0dGluZyBwYXJ0aXRpb25lZCwgdGhpcmQgcGFydHkgY29va2llLiIsIHJ1blRl
c3QpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRp
dGlvbkNvb2tpZXNGb3JIb3N0KHRoaXJkUGFydHlIb3N0bmFtZSwgdHJ1ZSwgcnVuVGVzdCk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICIjc3RlcDUiOgorICAgICAg
ICAgICAgICAgIC8vIEZsYWcgbG9jYWxob3N0IGZvciBwYXJ0aXRpb25pbmcgYW5kIHNldCBhIHBh
cnRpdGlvbmVkIGNvb2tpZS4KICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNo
ID0gInN0ZXA2IjsKLSAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJs
ICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgb25seSByZWNlaXZlIHBh
cnRpdGlvbmVkLCB0aGlyZCBwYXJ0eSBjb29raWUuIiwgc2V0VXNlckludGVyYWN0aW9uQW5kQ29u
dGludWUpOworICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBz
dWJQYXRoVG9TZXRQYXJ0aXRpb25lZFRoaXJkUGFydHlDb29raWUgKyAiJm1lc3NhZ2U9U2V0dGlu
ZyBwYXJ0aXRpb25lZCwgdGhpcmQgcGFydHkgY29va2llLiIsIHJ1blRlc3QpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiI3N0ZXA2IjoKKyAgICAgICAgICAgICAg
ICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA3IjsKKyAgICAgICAgICAgICAgICBvcGVu
SWZyYW1lKHRoaXJkUGFydHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2Fn
ZT1TaG91bGQgb25seSByZWNlaXZlIHBhcnRpdGlvbmVkLCB0aGlyZCBwYXJ0eSBjb29raWUuIiwg
c2V0VXNlckludGVyYWN0aW9uQW5kQ29udGludWUpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAiI3N0ZXA3IjoKICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRo
aXJkUGFydHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1BZnRlciB1
c2VyIGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBub24tcGFydGl0aW9uZWQgY29va2llcyBz
ZXQgaW4gYSBmaXJzdC1wYXJ0eSBjb250ZXh0IGFuZCBpbiBhIHRoaXJkLXBhcnR5IGNvbnRleHQu
IiwgZmluaXNoVGVzdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTg1
LDE3ICs4OSwxNyBAQAogICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ob3N0ID09PSBwYXJ0aXRp
b25Ib3N0ICYmIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT0gIiIgJiYgd2luZG93LnRlc3RSdW5u
ZXIgJiYgd2luZG93LmludGVybmFscykgewogICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUp
OwogCi0gICAgICAgIC8vIFN0YXJ0IHRlc3Qgd2l0aCB0aGlyZCBwYXJ0eSBhcyBub24tcHJldmFs
ZW50Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRo
aXJkUGFydHlIb3N0bmFtZSwgZmFsc2UpOwotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3Rp
Y3NIYXNIYWRVc2VySW50ZXJhY3Rpb24odGhpcmRQYXJ0eU9yaWdpbiwgZmFsc2UpOwotICAgICAg
ICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCh0
aGlyZFBhcnR5SG9zdG5hbWUsIGZhbHNlKTsKLQogICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKICAg
ICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7Ci0gICAgfQogCi0gICAgcnVu
VGVzdCgpOworICAgICAgICAvLyBTdGFydCB0ZXN0IHdpdGggdGhpcmQgcGFydHkgYXMgbm9uLXBy
ZXZhbGVudAorICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZSh0aGlyZFBhcnR5SG9zdG5hbWUsIGZhbHNlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0
aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlPcmlnaW4sIGZhbHNlKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhv
c3QodGhpcmRQYXJ0eUhvc3RuYW1lLCBmYWxzZSwgcnVuVGVzdCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgcnVuVGVzdCgpOworICAgIH0KIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332707</attachid>
            <date>2018-01-30 14:20:33 -0800</date>
            <delta_ts>2018-01-30 18:18:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181958-20180130142032.patch</filename>
            <type>text/plain</type>
            <size>57597</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc4MzYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE4LTAxLTMwICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBjYWxsYmFja3MgdG8gdGVz
dFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoKSBhbmQg
dGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTk1OAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyMDcyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zNjgwMTgwND4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2ODQ1Nzk1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTaG91bGRQYXJ0aXRpb25Db29raWVzRm9y
SG9zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ10pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmc6XSk6Cisg
ICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNo
b3VsZFBhcnRpdGlvbkNvb2tpZXM6Zm9ySG9zdDpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczpm
b3JIb3N0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dVc2Vy
SW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmxvZ05vblJlY2VudFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdV
cGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhclBhcnRp
dGlvbmluZ1N0YXRlRm9yRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VXaXRoRGF0YUZyb21EZWNvZGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29r
aWVQYXJ0aXRpb25pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUGFydGl0aW9uaW5n
U3RhdGVGb3JEb21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmg6CisKIDIwMTgtMDEtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRlbGVtZXRyeSB0byB0cmFjayBzdG9yYWdlIGFjY2Vz
cyBBUEkgYWRvcHRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI3ODM2
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXMKIAogICAgIG1lcmdlU3RhdGlzdGljcyhXVEZNb3Zl
KG9yaWdpbnMpKTsKICAgICAvLyBGaXJlIGJlZm9yZSBwcm9jZXNzaW5nIHN0YXRpc3RpY3MgdG8g
cHJvcGFnYXRlIHVzZXIgaW50ZXJhY3Rpb24gYXMgZmFzdCBhcyBwb3NzaWJsZSB0byB0aGUgbmV0
d29yayBwcm9jZXNzLgotICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOworICAgIHVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZyhbXSgpIHsgfSk7CiAgICAgcHJvY2Vzc1N0YXRpc3RpY3NBbmRE
YXRhUmVjb3JkcygpOwogfQogCkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmxvZwogICAgICAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6Om5vdygpOwogCiAgICAgICAgIGlmIChzdGF0aXN0
aWNzLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nIHx8IHN0YXRpc3RpY3MuaXNNYXJrZWRG
b3JDb29raWVCbG9ja2luZykKLSAgICAgICAgICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnMoeyB9LCB7IH0sIHsgcHJpbWFyeURvbWFpbiB9LCBTaG91bGRDbGVhckZpcnN0OjpO
byk7CisgICAgICAgICAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKHsgfSwg
eyB9LCB7IHByaW1hcnlEb21haW4gfSwgU2hvdWxkQ2xlYXJGaXJzdDo6Tm8sIFtdKCkgeyB9KTsK
ICAgICB9KTsKIH0KIApAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpsb2cKICAgICAgICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24g
PSB0cnVlOwogICAgICAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1l
ID0gV2FsbFRpbWU6Om5vdygpIC0gKG1fcGFyYW1ldGVycy50aW1lVG9MaXZlQ29va2llUGFydGl0
aW9uRnJlZSArIFNlY29uZHM6OmZyb21Ib3VycygxKSk7CiAKLSAgICAgICAgdXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IHByaW1hcnlEb21haW4gfSwgeyB9LCB7IH0sIFNob3Vs
ZENsZWFyRmlyc3Q6Ok5vKTsKKyAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9t
YWlucyh7IHByaW1hcnlEb21haW4gfSwgeyB9LCB7IH0sIFNob3VsZENsZWFyRmlyc3Q6Ok5vLCBb
XSgpIHsgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTU2MSwzMSArNTYxLDMxIEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRl
KCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNvb2tpZVBh
cnRpdGlvbmluZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7
CiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBv
bmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCi0gICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgdXBkYXRlQ29va2llUGFydGl0
aW9uaW5nKCk7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgp
IG11dGFibGUgeworICAgICAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoV1RGTW92ZShjYWxs
YmFjaykpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JEb21haW5zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21h
aW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRp
b25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KQordm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBk
YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hv
dWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewog
ICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25s
eSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUGFydGl0aW9uID0gY3Jvc3NUaHJlYWRD
b3B5KGRvbWFpbnNUb1BhcnRpdGlvbiksIGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5
KGRvbWFpbnNUb0Jsb2NrKSwgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jayksIHNob3VsZENs
ZWFyRmlyc3RdIHsKLSAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhk
b21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFydGl0
aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3QpOworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9Q
YXJ0aXRpb24gPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1Rv
QmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVy
UGFydGl0aW9uTm9yQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRp
dGlvbk5vckJsb2NrKSwgc2hvdWxkQ2xlYXJGaXJzdCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRv
bWFpbnMoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhl
clBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0LCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hl
ZHVsZUNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxl
Q2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICAvLyBI
ZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2Fs
bGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGRvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlucyldIHsKLSAg
ICAgICAgY2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoZG9tYWlucyk7CisgICAgbV9z
dGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGRvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlucyksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICBjbGVhclBhcnRpdGlvbmluZ1N0
YXRlRm9yRG9tYWlucyhkb21haW5zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9CiAK
QEAgLTczMCw3ICs3MzAsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
bWVyCiAgICAgICAgIHJldHVybjsKIAogICAgIG1lcmdlU3RhdGlzdGljcyhXVEZNb3ZlKGxvYWRl
ZFN0YXRpc3RpY3MpKTsKLSAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKKyAgICB1cGRh
dGVDb29raWVQYXJ0aXRpb25pbmcoW10oKSB7IH0pOwogCiAgICAgVmVjdG9yPE9wZXJhdGluZ0Rh
dGU+IG9wZXJhdGluZ0RhdGVzOwogICAgIHN1Y2NlZWRlZCA9IGRlY29kZXIuZGVjb2RlT2JqZWN0
cygib3BlcmF0aW5nRGF0ZXMiLCBvcGVyYXRpbmdEYXRlcywgW10oS2V5ZWREZWNvZGVyJiBkZWNv
ZGVyLCBPcGVyYXRpbmdEYXRlJiBkYXRlKSB7CkBAIC03NTQsNyArNzU0LDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZQogICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNz
TWFwLmNsZWFyKCk7CiAgICAgbV9vcGVyYXRpbmdEYXRlcy5jbGVhcigpOwogCi0gICAgdXBkYXRl
Q29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IH0sIHsgfSwgeyB9LCBTaG91bGRDbGVhckZp
cnN0OjpZZXMpOworICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoeyB9LCB7
IH0sIHsgfSwgU2hvdWxkQ2xlYXJGaXJzdDo6WWVzLCBbXSgpIHsgfSk7CiB9CiAKIGJvb2wgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3YXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRv
VXNlckludGVyYWN0aW9uKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGN1cnJlbnQsIGNv
bnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHVwZGF0ZWQpCkBAIC03OTIsNyArNzkyLDcgQEAg
Ym9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNobwogICAgIHJldHVybiBzdGF0
aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiAhc3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlv
bjsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZygpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBk
YXRlQ29va2llUGFydGl0aW9uaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFj
aykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtODE3LDIwICs4MTcs
MjUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZAogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKGRvbWFpbnNUb1BhcnRpdGlvbi5pc0VtcHR5KCkgJiYgZG9tYWlu
c1RvQmxvY2suaXNFbXB0eSgpICYmIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jay5p
c0VtcHR5KCkpCisgICAgaWYgKGRvbWFpbnNUb1BhcnRpdGlvbi5pc0VtcHR5KCkgJiYgZG9tYWlu
c1RvQmxvY2suaXNFbXB0eSgpICYmIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jay5p
c0VtcHR5KCkpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9zc1RocmVhZENvcHkoZG9tYWlu
c1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1Rv
QmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2sgPSBjcm9zc1RocmVhZENv
cHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKV0gKCkgeworICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBk
b21haW5zVG9QYXJ0aXRpb24gPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvUGFydGl0aW9uKSwg
ZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvTmVp
dGhlclBhcnRpdGlvbk5vckJsb2NrKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkg
ewogICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29r
aWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9O
ZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKKyAgICAgICAg
Y2FsbGJhY2soKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5v
ckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlu
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9O
ZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJz
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlmIChkb21haW5zVG9QYXJ0aXRpb24uaXNFbXB0eSgp
ICYmIGRvbWFpbnNUb0Jsb2NrLmlzRW1wdHkoKSAmJiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9u
Tm9yQmxvY2suaXNFbXB0eSgpICYmIHNob3VsZENsZWFyRmlyc3QgPT0gU2hvdWxkQ2xlYXJGaXJz
dDo6Tm8pCisgICAgaWYgKGRvbWFpbnNUb1BhcnRpdGlvbi5pc0VtcHR5KCkgJiYgZG9tYWluc1Rv
QmxvY2suaXNFbXB0eSgpICYmIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jay5pc0Vt
cHR5KCkgJiYgc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpObykgeworICAg
ICAgICBjYWxsYmFjaygpOwogICAgICAgICByZXR1cm47Ci0KKyAgICB9CisgICAgCiAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzaG91bGRDbGVhckZpcnN0LCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNUb1BhcnRpdGlvbiA9IGNyb3NzVGhyZWFkQ29w
eShkb21haW5zVG9QYXJ0aXRpb24pLCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29weShk
b21haW5zVG9CbG9jayksIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jayA9IGNyb3Nz
VGhyZWFkQ29weShkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2spXSAoKSB7CiAgICAg
ICAgIG1fdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5k
bGVyKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7CiAgICAgfSk7CkBAIC04NTAsMTMg
Kzg1NSwxNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkCiAKICAg
ICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb0Jsb2NrKQogICAgICAgICBlbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGRvbWFpbikuaXNNYXJrZWRGb3JDb29raWVC
bG9ja2luZyA9IHRydWU7CisKKyAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Y2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoZG9tYWlucy5pc0VtcHR5
KCkpCisgICAgaWYgKGRvbWFpbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGNhbGxiYWNrKCk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWlucyA9IGNyb3NzVGhyZWFk
Q29weShkb21haW5zKV0gKCkgewogICAgICAgICBtX3JlbW92ZURvbWFpbnNIYW5kbGVyKGRvbWFp
bnMpOwpAQCAtODY3LDYgKzg3Niw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpjbGUKICAgICAgICAgc3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5n
ID0gZmFsc2U7CiAgICAgICAgIHN0YXRpc3RpYy5pc01hcmtlZEZvckNvb2tpZUJsb2NraW5nID0g
ZmFsc2U7CiAgICAgfQorCisgICAgY2FsbGJhY2soKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0Q29va2llUGFydGl0aW9uaW5nU3RhdGUoKQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDIyNzgzNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDYsOSArMTA2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3ViZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
dG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNv
bnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJh
bWUpOwogICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNv
cmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVj
dGVkVG8pOwotICAgIHZvaWQgc2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGUoKTsKLSAg
ICB2b2lkIHNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFy
dGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3QpOwotICAgIHZvaWQgc2NoZWR1bGVDbGVh
clBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
cyk7CisgICAgdm9pZCBzY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdV
cGRhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJQYXJ0
aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NB
bmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwog
ICAgIHZvaWQgc2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdTdGF0ZVJlc2V0KCk7CkBAIC0xNjIs
OSArMTYyLDkgQEAgcHJpdmF0ZToKICAgICBib29sIGhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJ
bnRlcmFjdGlvbihXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7CiAgICAg
dm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0
YUZvcigpOwotICAgIHZvaWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7Ci0gICAgdm9pZCB1
cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywg
U2hvdWxkQ2xlYXJGaXJzdCk7Ci0gICAgdm9pZCBjbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9t
YWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CisgICAgdm9pZCB1cGRhdGVDb29r
aWVQYXJ0aXRpb25pbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBT
aG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
Y2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBtZXJnZVN0YXRp
c3RpY3MoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwogICAgIFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHJldmlzaW9uIDIyNzgzNikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NVcGRhdGVDCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc3RvcmUtPnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlKCk7CisgICAgc3Rv
cmUtPnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlKFtdKCkgeyB9KTsKIH0KIAogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkUGFydGl0aW9uQ29va2llc0Zv
ckhvc3QoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9z
dCwgYm9vbCB2YWx1ZSkKQEAgLTI1NCw5ICsyNTQsOSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NTaG91CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh2YWx1ZSkKLSAg
ICAgICAgc3RvcmUtPnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyh7
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSB9LCB7IH0sIHsgfSwgV2ViS2l0OjpTaG91
bGRDbGVhckZpcnN0OjpObyk7CisgICAgICAgIHN0b3JlLT5zY2hlZHVsZUNvb2tpZVBhcnRpdGlv
bmluZ1VwZGF0ZUZvckRvbWFpbnMoeyBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkgfSwg
eyB9LCB7IH0sIFdlYktpdDo6U2hvdWxkQ2xlYXJGaXJzdDo6Tm8sIFtdKCkgeyB9KTsKICAgICBl
bHNlCi0gICAgICAgIHN0b3JlLT5zY2hlZHVsZUNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JEb21h
aW5zKHsgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpIH0pOworICAgICAgICBzdG9yZS0+
c2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyh7IFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSB9LCBbXSgpIHsgfSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyMjc4MzYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00OTcsMjMgKzQ5Nyw0MyBAQCAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUHJvY2Vzc1N0CiAKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVDb29r
aWVQYXJ0aXRpb25pbmcKIHsKKyAgICBbc2VsZiBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZzpeKCkgeyB9XTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZzoodm9pZCAoXikoKSljb21wbGV0aW9u
SGFuZGxlcgorewogICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7Ci0gICAgaWYgKCFzdG9yZSkKKyAg
ICBpZiAoIXN0b3JlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJl
dHVybjsKLQotICAgIHN0b3JlLT5zY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZSgpOwor
ICAgIH0KKyAgICAKKyAgICBzdG9yZS0+c2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGUo
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7CiB9CiAKIC0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzOihCT09MKXZhbHVl
IGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAogeworICAgIFtzZWxmIF9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczp2YWx1ZSBmb3JIb3N0Omhvc3QgY29tcGxl
dGlvbkhhbmRsZXI6XigpIHsgfV07Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5n
ICopaG9zdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgor
ewogICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7Ci0gICAgaWYgKCFzdG9yZSkKKyAgICBpZiAoIXN0
b3JlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5zY2hlZHVsZUNvb2tpZVBhcnRp
dGlvbmluZ1VwZGF0ZUZvckRvbWFpbnMoeyBob3N0IH0sIHsgfSwgeyB9LCBXZWJLaXQ6OlNob3Vs
ZENsZWFyRmlyc3Q6Ok5vKTsKKyAgICAgICAgc3RvcmUtPnNjaGVkdWxlQ29va2llUGFydGl0aW9u
aW5nVXBkYXRlRm9yRG9tYWlucyh7IGhvc3QgfSwgeyB9LCB7IH0sIFdlYktpdDo6U2hvdWxkQ2xl
YXJGaXJzdDo6Tm8sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildKCkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAg
fSk7CiAgICAgZWxzZQotICAgICAgICBzdG9yZS0+c2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0
YXRlRm9yRG9tYWlucyh7IGhvc3QgfSk7CisgICAgICAgIHN0b3JlLT5zY2hlZHVsZUNsZWFyUGFy
dGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKHsgaG9zdCB9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgIH0pOwogfQogCiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3VibWl0VGVsZW1ldHJ5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHJl
dmlzaW9uIDIyNzgzNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDEwIEBA
IHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXQKIC0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXRNYXhTdGF0aXN0aWNzRW50cmllczooc2l6ZV90KWVudHJpZXMg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1NldFBydW5lRW50cmllc0Rvd25Ubzooc2l6ZV90KWVudHJpZXMg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwotLSAodm9pZClfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeCgxMC4xMyksIGlvcygxMS4wKSk7Ci0tICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2V0U2hvdWxkUGFydGl0aW9uQ29va2llczooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAq
KWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOworLSAodm9p
ZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyBXS19BUElf
REVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZyIsIG1hY29zeCgxMC4xMywgV0tfTUFDX1RCQSksIGlvcygxMS4w
LCBXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlQ29v
a2llUGFydGl0aW9uaW5nOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXM6KEJPT0wpdmFsdWUg
Zm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1F
TlQoIl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llcyIsIG1h
Y29zeCgxMC4xMywgV0tfTUFDX1RCQSksIGlvcygxMS4wLCBXS19JT1NfVEJBKSk7CistICh2b2lk
KV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczooQk9PTCl2
YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3VibWl0
VGVsZW1ldHJ5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIC0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkOihCT09MKXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwg
aW9zKDExLjApKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRDbGFz
c2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbDooQk9PTCl2YWx1ZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc4NTEpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxOC0wMS0z
MCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY2Fs
bGJhY2tzIHRvIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNG
b3JIb3N0KCkgYW5kIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmlu
ZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE5
NTgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjA3
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY4MDE4MDQ+CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNjg0NTc5NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZl
TWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc1Vw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRp
c3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCk6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JI
b3N0Q2FsbGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkU2V0UGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNGb3JIb3N0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1VwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzdGF0aXN0
aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QpOgorCiAyMDE4LTAxLTMwICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXZWJWUl1b
R1RLXVtXUEVdIEV4Y2x1ZGUgT3BlblZSIGZyb20gdGFyYmFsbHMKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCShyZXZpc2lvbiAyMjc4MzYpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM0NSw2ICsxMzQ1LDEyIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZENsZWFyU3RhdGlzdGlj
c1QKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAp
OwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2ll
c0Zvckhvc3QoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRTZXRQYXJ0aXRp
b25PckJsb2NrQ29va2llc0Zvckhvc3QiKSk7CisgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVj
dGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlk
UmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJDYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2siKSk7CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCShyZXZpc2lvbiAyMjc4MzYpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5RG93bmxvYWREb25lKCk7
CiAKICAgICB2b2lkIGRpZENsZWFyU3RhdGlzdGljc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwo
KTsKKyAgICB2b2lkIGRpZFNldFBhcnRpdGlvbk9yQmxvY2tDb29raWVzRm9ySG9zdCgpOwogCiAg
ICAgdm9pZCBkaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKICAgICAKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAyMjc4MzYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1
LDYgKzI0NSwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhv
c3QiKSkgeworICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxsRGlkU2V0UGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0Q2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
Q2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrIikpIHsKICAgICAgICAg
bV90ZXN0UnVubmVyLT5jYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2so
KTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyMjc4MzYpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NTEsNiArNjUxLDcgQEAgZW51bSB7CiAgICAgU3RhdGlzdGljc0RpZFNj
YW5EYXRhUmVjb3Jkc0NhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNh
bGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZENsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bENhbGxiYWNrSUQsCisgICAgU3RhdGlzdGljc0RpZFNldFBhcnRpdGlvbk9yQmxvY2tDb29raWVz
Rm9ySG9zdENhbGxiYWNrSUQsCiAgICAgRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2Fs
bGJhY2tJRCwKICAgICBHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tJRCwKICAgICBGaXJz
dFVJU2NyaXB0Q2FsbGJhY2tJRCA9IDEwMApAQCAtMTU1MywxNCArMTU1NCwxOCBAQCB2b2lkIFRl
c3RSdW5uZXI6OnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzCiAgICAgV0tCdW5kbGVQb3N0U3luY2hy
b25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIDAsIG51bGxwdHIpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3Rp
Y3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKQordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNz
VXBkYXRlQ29va2llUGFydGl0aW9uaW5nKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CisgICAgY2Fj
aGVUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldFBhcnRpdGlvbk9yQmxvY2tDb29r
aWVzRm9ySG9zdENhbGxiYWNrSUQsIGNhbGxiYWNrKTsKKwogICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyIpKTsKICAgICBXS0J1bmRsZVBv
c3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgMCwgbnVsbHB0cik7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6
c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIHZhbHVlKQordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzU2V0U2hvdWxk
UGFydGl0aW9uQ29va2llc0Zvckhvc3QoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUs
IEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CisgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU3Rh
dGlzdGljc0RpZFNldFBhcnRpdGlvbk9yQmxvY2tDb29raWVzRm9ySG9zdENhbGxiYWNrSUQsIGNh
bGxiYWNrKTsKKwogICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CiAg
ICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsKICAgICAKQEAgLTE1ODQs
NiArMTU4OSwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0CiAg
ICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxs
cHRyKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFBhcnRpdGlv
bk9yQmxvY2tDb29raWVzRm9ySG9zdENhbGxiYWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNh
bGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhvc3RDYWxs
YmFja0lEKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5
KCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnki
KSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAkocmV2aXNpb24gMjI3ODM2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw4ICsz
NjcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJh
Y2sodW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFs
ZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5k
ZXJUb3BGcmFtZU9yaWdpbnMpOwogICAgIHZvaWQgc3RhdGlzdGljc05vdGlmeU9ic2VydmVyKCk7
CiAgICAgdm9pZCBzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwot
ICAgIHZvaWQgc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOwotICAgIHZvaWQg
c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIHZhbHVlKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0
aXRpb25pbmcoSlNWYWx1ZVJlZiBjYWxsYmFjayk7CisgICAgdm9pZCBzdGF0aXN0aWNzU2V0U2hv
dWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFs
dWUsIEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRQ
YXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhvc3RDYWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlz
dGljc1N1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0xhc3RTZWVuKEpT
U3RyaW5nUmVmIGhvc3ROYW1lLCBkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzZXRTdGF0aXN0
aWNzUHJldmFsZW50UmVzb3VyY2UoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpOwpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCShyZXZpc2lvbiAyMjc4MzYpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yODMsOCArMjgzLDggQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIg
ewogICAgIHZvaWQgc2V0U3RhdGlzdGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKGRv
dWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigpOwogICAg
IHZvaWQgc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKLSAgICB2
b2lkIHN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKLSAgICB2b2lkIHN0YXRp
c3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdChET01TdHJpbmcgaG9zdE5hbWUs
IGJvb2xlYW4gdmFsdWUpOworICAgIHZvaWQgc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlv
bmluZyhvYmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgc3RhdGlzdGljc1NldFNob3VsZFBhcnRp
dGlvbkNvb2tpZXNGb3JIb3N0KERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiB2YWx1ZSwgb2Jq
ZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
KGJvb2xlYW4gdmFsdWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2xlYW4gdmFsdWUpOwpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bQkocmV2aXNpb24gMjI3ODM2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsMTIgKzM3NiwxNiBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUHJvY2Vzc1N0CiAKIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKQogewotICAgIFtnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nXTsKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZp
Z3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZzpeKCkgeworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRT
ZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhvc3QoKTsKKyAgICB9XTsKIH0KIAogdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0
KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQogewotICAgIFtnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0
U2hvdWxkUGFydGl0aW9uQ29va2llczp2YWx1ZSBmb3JIb3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUp
XTsKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXM6dmFsdWUgZm9ySG9z
dDp0b05TU3RyaW5nKGhvc3ROYW1lKSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBt
X2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhvc3Qo
KTsKKyAgICB9XTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1N1Ym1pdFRl
bGVtZXRyeSgpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc4MzYpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxOC0wMS0zMCAgSm9obiBX
aWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY2FsbGJhY2tzIHRv
IHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KCkg
YW5kIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE5NTgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjA3MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzY4MDE4MDQ+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjg0
NTc5NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJl
Y3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLXBhcnRpdGlvbmluZy10by1yZWRpcmVjdC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Fk
ZC1wYXJ0aXRpb25pbmctdG8tcmVkaXJlY3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVudC1yZXNvdXJjZXMtY2FuLWFjY2Vzcy1j
b29raWVzLWluLWEtdGhpcmQtcGFydHktY29udGV4dC5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1j
b29raWUtZGVsZXRpb24uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLXdpdGgtcGFydGl0
aW9uaW5nLXRpbWVvdXQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJh
Y3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFj
dGlvbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9y
ZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3Qu
aHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3Zl
LXBhcnRpdGlvbmluZy1pbi1yZWRpcmVjdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1wYXJ0aXRpb25pbmctaW4tcmVkaXJl
Y3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhp
cmQtcGFydHktY29va2llLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxOC0wMS0z
MCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCB0ZXN0IGdhcmRlbmluZy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9h
ZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjc4MzYpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLWJsb2Nr
aW5nLXRvLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcg
QEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCi0KKyAgCiAKIC0tLS0tLS0tCiBG
cmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRp
cmVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QuaHRtbAkocmV2aXNpb24gMjI3
ODM2KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Fk
ZC1ibG9ja2luZy10by1yZWRpcmVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBA
QAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorPGJvZHk+CiA8c2NyaXB0PgogICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0
IGJsb2NraW5nIGlzIGFkZGVkIG1pZC1mbGlnaHQgaW4gcmVkaXJlY3RzLiIpOwogICAgIGpzVGVz
dElzQXN5bmMgPSB0cnVlOwpAQCAtMTYsMTYgKzE2LDYgQEAKICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOwogICAgIH0KIAotICAg
IGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgewotICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKHRydWUpOwotICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgi
TG9jYWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhl
IHRlc3Qgc3RhcnRzLiIpOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2Vz
cyBpcyB1cC10by1kYXRlLgotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQ
YXJ0aXRpb25Db29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UpOwotICAgICAgICB0ZXN0
UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICBkb2N1bWVudC5sb2NhdGlv
bi5oYXNoID0gInN0ZXAxIjsKLSAgICB9Ci0KICAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEy
Ny4wLjAuMTo4MDAwIjsKICAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMCI7CiAgICAgY29uc3QgcmVzb3VyY2VQYXRoID0gIi9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3Jlc291cmNlcyI7CkBAIC02NywxMCArNTcsMTEgQEAKICAgICAgICAgICAgICAgICAv
LyBTZXQgbG9jYWxob3N0IGFzIHByZXZhbGVudCBhbmQgd2l0aCBubyB1c2VyIGludGVyYWN0aW9u
IHRvIHB1dCBpdCBpbiB0aGUgYmxvY2tpbmcgY2F0ZWdvcnkuCiAgICAgICAgICAgICAgICAgZG9j
dW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwNSI7CiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiLCB0cnVl
KTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0
aXRpb25pbmcoKTsKICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiKSkKICAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNl
LiIpOwotICAgICAgICAgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgIiNzdGVwNSI6CiAgICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgdGhhdCBubyBjb29raWUgZ2V0cyBzZW50IGZvciBsb2NhbGhvc3QgdW5kZXIg
MTI3LjAuMC4xIHNpbmNlIGxvY2FsaG9zdCdzIGNvb2tpZXMgYXJlIGJsb2NrZWQuCkBAIC0xMDMs
NiArOTQsMTggQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKwor
ICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgeworICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKHRydWUpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQorICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiTG9jYWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUg
dGhlIHRlc3Qgc3RhcnRzLiIpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpOworICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKyAgICAg
ICAgLy8gTWFrZSBzdXJlIHRoZSBuZXR3b3JrIHByb2Nlc3MgaXMgdXAtdG8tZGF0ZS4KKyAgICAg
ICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3Qo
ImxvY2FsaG9zdCIsIGZhbHNlLCBydW5UZXN0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBydW5U
ZXN0KCk7CisgICAgfQogPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLXBhcnRpdGlvbmluZy10
by1yZWRpcmVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1wYXJ0aXRpb25pbmctdG8tcmVkaXJlY3Qt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjc4MzYpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLXBhcnRpdGlvbmluZy10by1yZWRpcmVjdC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQotCisgIAogCiAtLS0tLS0tLQogRnJhbWU6ICc8IS0tZnJhbWVQYXRo
IC8vPCEtLWZyYW1lMC0tPi0tPicKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9hZGQtcGFydGl0aW9uaW5nLXRvLXJlZGlyZWN0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Fk
ZC1wYXJ0aXRpb25pbmctdG8tcmVkaXJlY3QuaHRtbAkocmV2aXNpb24gMjI3ODM2KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1wYXJ0aXRpb25p
bmctdG8tcmVkaXJlY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKICAgICA8
bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKzxib2R5PgogPHNjcmlwdD4KICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBwYXJ0aXRp
b25pbmcgaXMgYWRkZWQgbWlkLWZsaWdodCBpbiByZWRpcmVjdHMuIik7CiAgICAganNUZXN0SXNB
c3luYyA9IHRydWU7CkBAIC0xNiwxNiArMTYsNiBAQAogICAgICAgICB0ZXN0UnVubmVyLnNldENv
b2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKGVuYWJsZSk7CiAgICAgfQogCi0gICAgaWYg
KGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09ICIiKSB7Ci0gICAgICAgIHNldEVuYWJsZUZlYXR1
cmUodHJ1ZSk7Ci0gICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2Nh
bGhvc3Qgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJlZm9yZSB0aGUgdGVz
dCBzdGFydHMuIik7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgbmV0d29yayBwcm9jZXNzIGlz
IHVwLXRvLWRhdGUuCi0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRp
dGlvbkNvb2tpZXNGb3JIb3N0KCJsb2NhbGhvc3QiLCBmYWxzZSk7Ci0gICAgICAgIHRlc3RSdW5u
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhh
c2ggPSAic3RlcDEiOwotICAgIH0KLQogICAgIGNvbnN0IHBhcnRpdGlvbkhvc3QgPSAiMTI3LjAu
MC4xOjgwMDAiOwogICAgIGNvbnN0IHRoaXJkUGFydHlPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9z
dDo4MDAwIjsKICAgICBjb25zdCByZXNvdXJjZVBhdGggPSAiL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVzb3VyY2VzIjsKQEAgLTY3LDExICs1NywxMiBAQAogICAgICAgICAgICAgICAgIC8vIFNl
dCBsb2NhbGhvc3QgYXMgcHJldmFsZW50IGFuZCB3aXRoIG5vbi1yZWNlbnQgdXNlciBpbnRlcmFj
dGlvbiB0byBwdXQgaXQgaW4gdGhlIHBhcnRpdGlvbmluZyBjYXRlZ29yeS4KICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA1IjsKICAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9z
dCIsIHRydWUpOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hh
ZE5vblJlY2VudFVzZXJJbnRlcmFjdGlvbigiaHR0cDovL2xvY2FsaG9zdCIpOwotICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpOwog
ICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQogICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7Ci0gICAgICAg
ICAgICAgICAgcnVuVGVzdCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc0hhc0hhZE5vblJlY2VudFVzZXJJbnRlcmFjdGlvbigiaHR0cDovL2xvY2FsaG9zdCIpOwor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlv
bmluZyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgcnVuVGVzdCgpOworICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAi
I3N0ZXA1IjoKICAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IG5vIGNvb2tpZSBnZXRzIHNl
bnQgZm9yIGxvY2FsaG9zdCB1bmRlciAxMjcuMC4wLjEgc2luY2UgbG9jYWxob3N0IGlzIHBhcnRp
dGlvbmVkLgpAQCAtMTA0LDYgKzk1LDE4IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiIpIHsK
KyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiKSkKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIkxvY2FsaG9zdCB3YXMgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQg
cmVzb3VyY2UgYmVmb3JlIHRoZSB0ZXN0IHN0YXJ0ZWQuIik7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2gg
PSAic3RlcDEiOworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyB1
cC10by1kYXRlLgorICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRp
b25Db29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UsIHJ1blRlc3QpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9u
b24tcHJldmFsZW50LXJlc291cmNlcy1jYW4tYWNjZXNzLWNvb2tpZXMtaW4tYS10aGlyZC1wYXJ0
eS1jb250ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL25vbi1wcmV2YWxlbnQtcmVzb3VyY2VzLWNhbi1hY2Nlc3MtY29v
a2llcy1pbi1hLXRoaXJkLXBhcnR5LWNvbnRleHQuaHRtbAkocmV2aXNpb24gMjI3ODM2KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL25vbi1wcmV2YWxl
bnQtcmVzb3VyY2VzLWNhbi1hY2Nlc3MtY29va2llcy1pbi1hLXRoaXJkLXBhcnR5LWNvbnRleHQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTcgKzYwLDIxIEBACiAgICAgICAgICAgICAgICAg
b3BlbklmcmFtZSh0aGlyZFBhcnR5QmFzZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1l
c3NhZ2U9U2hvdWxkIHJlY2VpdmUgb25lIGNvb2tpZS4iLCBydW5UZXN0KTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgIiNzdGVwMyI6Ci0gICAgICAgICAgICAgICAg
Ly8gU2V0dXAgbG9jYWxob3N0IGZvciBwYXJ0aXRpb25pbmcgYW5kIHNldCBhIHBhcnRpdGlvbmVk
IGNvb2tpZSBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMS4KKyAgICAgICAgICAgICAgICAv
LyBTZXR1cCBsb2NhbGhvc3QgZm9yIHBhcnRpdGlvbmluZy4KICAgICAgICAgICAgICAgICBkb2N1
bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA0IjsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCh0aGlyZFBhcnR5SG9z
dG5hbWUsIHRydWUpOwotICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VV
cmwgKyBzdWJQYXRoVG9TZXRQYXJ0aXRpb25lZENvb2tpZSArICImbWVzc2FnZT1TZXR0aW5nIHBh
cnRpdGlvbmVkLCB0aGlyZCBwYXJ0eSBjb29raWUuIiwgcnVuVGVzdCk7CisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3Qo
dGhpcmRQYXJ0eUhvc3RuYW1lLCB0cnVlLCBydW5UZXN0KTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6Ci0gICAgICAgICAgICAgICAgLy8gTG9hZCBs
b2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xIGFuZCBjaGVjayB0aGF0IGl0IGdldHMgb25seSB0aGUg
cGFydGl0aW9uZWQgY29va2llLiBFbmQgYnkgYXF1aXJpbmcgdXNlciBpbnRlcmFjdGlvbiBmb3Ig
bG9jYWxob3N0LgorICAgICAgICAgICAgICAgIC8vIFNldCBhIHBhcnRpdGlvbmVkIGNvb2tpZSBm
b3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMS4KICAgICAgICAgICAgICAgICBkb2N1bWVudC5s
b2NhdGlvbi5oYXNoID0gInN0ZXA1IjsKLSAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJk
UGFydHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgcmVj
ZWl2ZSBvbmUgcGFydGl0aW9uZWQsIHRoaXJkIHBhcnR5IGNvb2tpZS4iLCBzZXRVc2VySW50ZXJh
Y3Rpb25BbmRDb250aW51ZSk7CisgICAgICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5
QmFzZVVybCArIHN1YlBhdGhUb1NldFBhcnRpdGlvbmVkQ29va2llICsgIiZtZXNzYWdlPVNldHRp
bmcgcGFydGl0aW9uZWQsIHRoaXJkIHBhcnR5IGNvb2tpZS4iLCBydW5UZXN0KTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgIiNzdGVwNSI6CisgICAgICAgICAgICAg
ICAgLy8gTG9hZCBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xIGFuZCBjaGVjayB0aGF0IGl0IGdl
dHMgb25seSB0aGUgcGFydGl0aW9uZWQgY29va2llLiBFbmQgYnkgYWNxdWlyaW5nIHVzZXIgaW50
ZXJhY3Rpb24gZm9yIGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlv
bi5oYXNoID0gInN0ZXA2IjsKKyAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlC
YXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgcmVjZWl2ZSBv
bmUgcGFydGl0aW9uZWQsIHRoaXJkIHBhcnR5IGNvb2tpZS4iLCBzZXRVc2VySW50ZXJhY3Rpb25B
bmRDb250aW51ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIj
c3RlcDYiOgogICAgICAgICAgICAgICAgIC8vIExvYWQgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAu
MSBhbmQgY2hlY2sgdGhhdCBpdCBnZXRzIGl0cyBub24tcGFydGl0aW9uZWQgY29va2llIGFmdGVy
IHVzZXIgaW50ZXJhY3Rpb24uCiAgICAgICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5
QmFzZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1lc3NhZ2U9QWZ0ZXIgdXNlciBpbnRl
cmFjdGlvbiwgc2hvdWxkIHJlY2VpdmUgb25lIG5vbi1wYXJ0aXRpb25lZCwgZmlyc3QgcGFydHkg
Y29va2llLiIsIGZpbmlzaFRlc3QpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIsMTQg
Kzg2LDE0IEBACiAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UodGhpcmRQYXJ0eUhvc3RuYW1lLCBmYWxzZSk7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbih0aGlyZFBhcnR5T3JpZ2luLCBmYWxzZSk7
Ci0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNG
b3JIb3N0KHRoaXJkUGFydHlIb3N0bmFtZSwgZmFsc2UpOwotCiAgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpOwogICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKLSAgICB9CiAK
LSAgICBydW5UZXN0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBh
cnRpdGlvbkNvb2tpZXNGb3JIb3N0KHRoaXJkUGFydHlIb3N0bmFtZSwgZmFsc2UsIHJ1blRlc3Qp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9CiA8L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtZGVsZXRpb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0
bWwJKHJldmlzaW9uIDIyNzgzNikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtZGVsZXRp
b24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtODYsMjQgKzg2LDI1IEBACiAgICAgICAgIH0KICAg
ICB9CiAKLQogICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ob3N0ID09PSBwYXJ0aXRpb25Ib3N0
ICYmIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09ICIiICYmIHdpbmRvdy50ZXN0UnVubmVyICYm
IHdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlKTsKIAog
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbChmYWxzZSk7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3Rh
dGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCgwKTsKIAotICAgICAg
ICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgi
bG9jYWxob3N0IiwgdHJ1ZSk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgICAgICBkb2N1
bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKwogICAgICAgICB0ZXN0UnVubmVyLnNldFN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIsIHRydWUpOwogICAg
ICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6
Ly9sb2NhbGhvc3QiKSkKICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQg
c2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKIAotICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsK
LSAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7CisgICAgICAgIHRlc3RS
dW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KCJsb2NhbGhv
c3QiLCB0cnVlLCBydW5UZXN0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBydW5UZXN0KCk7CiAg
ICAgfQogCi0gICAgcnVuVGVzdCgpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9u
ZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLXdpdGgtcGFydGl0aW9uaW5nLXRpbWVvdXQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLXdpdGgtcGFydGl0aW9u
aW5nLXRpbWVvdXQuaHRtbAkocmV2aXNpb24gMjI3ODM2KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVk
LWNvb2tpZS13aXRoLXBhcnRpdGlvbmluZy10aW1lb3V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDggKzQwLDcgQEAKICAgICB9CiAKICAgICBmdW5jdGlvbiBmaXJlU2hvdWxkUGFydGl0aW9u
Q29va2llc0hhbmRsZXJBbmRDb250aW51ZSgpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0
aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7Ci0gICAgICAgIHJ1blRlc3QoKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKHJ1blRlc3Qp
OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHNldFNob3J0Q29va2llUGFydGl0aW9uaW5nVGltZU91
dFBsdXNGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJBbmRDb250aW51ZSgpIHsKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRp
b25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0
aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjI3ODM2KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQt
d2l0aG91dC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDQgQEAKLQorICAKIAogLS0tLS0tLS0KIEZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4nCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50
ZXJhY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVz
ZXItaW50ZXJhY3Rpb24uaHRtbAkocmV2aXNpb24gMjI3ODM2KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1h
bmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNyAr
NSw3IEBACiAgICAgPHRpdGxlPlRlc3QgZm9yIFBhcnRpdGlvbmVkIENvb2tpZXMgV2l0aCBhbmQg
V2l0aG91dCBVc2VyIEludGVyYWN0aW9uPC90aXRsZT4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzxib2R5PgogPHNjcmlwdD4KICAgICBjb25zdCBwYXJ0aXRpb25Ib3N0
ID0gIjEyNy4wLjAuMTo4MDAwIjsKICAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMCI7CkBAIC03MywxMSArNzMsMTMgQEAKICAgICBpZiAoZG9jdW1lbnQu
bG9jYXRpb24uaG9zdCA9PT0gcGFydGl0aW9uSG9zdCAmJiBkb2N1bWVudC5sb2NhdGlvbi5oYXNo
ID09ICIiICYmIHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlKTsKIAotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3Rp
Y3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgdHJ1ZSk7Ci0K
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2gg
PSAic3RlcDEiOworCisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRp
dGlvbkNvb2tpZXNGb3JIb3N0KCJsb2NhbGhvc3QiLCB0cnVlLCBydW5UZXN0KTsKKyAgICB9IGVs
c2UgeworICAgICAgICBydW5UZXN0KCk7CiAgICAgfQogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLWJs
b2NraW5nLWluLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLWJsb2NraW5nLWluLXJl
ZGlyZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjI3ODM2KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1ibG9ja2luZy1pbi1yZWRpcmVj
dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBAIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQotCisgIAogCiAtLS0tLS0tLQogRnJhbWU6ICc8IS0tZnJh
bWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3QuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVtb3ZlLWJsb2NraW5nLWluLXJlZGlyZWN0Lmh0bWwJKHJldmlzaW9uIDIyNzgzNikKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtYmxv
Y2tpbmctaW4tcmVkaXJlY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKICAg
ICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KKzxib2R5PgogPHNjcmlwdD4KICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBibG9j
a2luZyBpcyByZW1vdmVkIG1pZC1mbGlnaHQgaW4gcmVkaXJlY3RzLiIpOwogICAgIGpzVGVzdElz
QXN5bmMgPSB0cnVlOwpAQCAtMTYsMTYgKzE2LDYgQEAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRD
b29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOwogICAgIH0KIAotICAgIGlm
IChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgewotICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKHRydWUpOwotICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9j
YWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRl
c3Qgc3RhcnRzLiIpOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBp
cyB1cC10by1kYXRlLgotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0
aXRpb25Db29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UpOwotICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5o
YXNoID0gInN0ZXAxIjsKLSAgICB9Ci0KICAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEyNy4w
LjAuMTo4MDAwIjsKICAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMCI7CiAgICAgY29uc3QgcmVzb3VyY2VQYXRoID0gIi9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3Jlc291cmNlcyI7CkBAIC02OCwxMCArNTgsMTEgQEAKICAgICAgICAgICAgICAgICAvLyBT
ZXQgbG9jYWxob3N0IGFzIHByZXZhbGVudCBhbmQgd2l0aCBub24tcmVjZW50IHVzZXIgaW50ZXJh
Y3Rpb24gdG8gcHV0IGl0IGluIHRoZSBibG9ja2luZyBjYXRlZ29yeS4KICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA1IjsKICAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIs
IHRydWUpOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZygpOwogICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQogICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVz
b3VyY2UuIik7Ci0gICAgICAgICAgICAgICAgcnVuVGVzdCgpOworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyhmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgcnVuVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiI3N0ZXA1IjoKICAgICAgICAg
ICAgICAgICAvLyBTZXQgcGFydGl0aW9uZWQgY29va2llIGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3
LjAuMC4xLgpAQCAtOTQsNiArODUsMTggQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgewor
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQorICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiTG9jYWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCBy
ZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRzLiIpOworICAgICAgICB0ZXN0UnVubmVyLmR1
bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0g
InN0ZXAxIjsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBuZXR3b3JrIHByb2Nlc3MgaXMgdXAt
dG8tZGF0ZS4KKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9u
Q29va2llc0Zvckhvc3QoImxvY2FsaG9zdCIsIGZhbHNlLCBydW5UZXN0KTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBydW5UZXN0KCk7CisgICAgfQogPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVt
b3ZlLXBhcnRpdGlvbmluZy1pbi1yZWRpcmVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1wYXJ0
aXRpb25pbmctaW4tcmVkaXJlY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjc4MzYpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXBhcnRp
dGlvbmluZy1pbi1yZWRpcmVjdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyAr
Niw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQotCisgIAogCiAtLS0tLS0t
LQogRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtcGFydGl0aW9u
aW5nLWluLXJlZGlyZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1wYXJ0aXRpb25pbmctaW4tcmVkaXJlY3Qu
aHRtbAkocmV2aXNpb24gMjI3ODM2KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1wYXJ0aXRpb25pbmctaW4tcmVkaXJlY3QuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKICAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAg
ICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxib2R5PgogPHNjcmlwdD4KICAg
ICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBwYXJ0aXRpb25pbmcgaXMgcmVtb3ZlZCBtaWQtZmxp
Z2h0IGluIHJlZGlyZWN0cy4iKTsKICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKQEAgLTE2LDE2
ICsxNiw2IEBACiAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmlu
Z0VuYWJsZWQoZW5hYmxlKTsKICAgICB9CiAKLSAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFz
aCA9PT0gIiIpIHsKLSAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlKTsKLSAgICAgICAgaWYg
KHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhv
c3QiKSkKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2FsaG9zdCB3YXMgY2xhc3NpZmllZCBh
cyBwcmV2YWxlbnQgcmVzb3VyY2UgYmVmb3JlIHRoZSB0ZXN0IHN0YXJ0cy4iKTsKLSAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoZSBuZXR3b3JrIHByb2Nlc3MgaXMgdXAtdG8tZGF0ZS4KLSAgICAgICAg
dGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoImxv
Y2FsaG9zdCIsIGZhbHNlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1Rl
eHQoKTsKLSAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7Ci0gICAgfQot
CiAgICAgY29uc3QgcGFydGl0aW9uSG9zdCA9ICIxMjcuMC4wLjE6ODAwMCI7CiAgICAgY29uc3Qg
dGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOwogICAgIGNvbnN0IHJl
c291cmNlUGF0aCA9ICIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMiOwpAQCAtNjgs
MTEgKzU4LDEyIEBACiAgICAgICAgICAgICAgICAgLy8gU2V0IGxvY2FsaG9zdCBhcyBwcmV2YWxl
bnQgYW5kIHdpdGggbm9uLXJlY2VudCB1c2VyIGludGVyYWN0aW9uIHRvIHB1dCBpdCBpbiB0aGUg
cGFydGl0aW9uaW5nIGNhdGVnb3J5LgogICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9u
Lmhhc2ggPSAic3RlcDUiOwogICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IiwgdHJ1ZSk7Ci0gICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkTm9uUmVjZW50VXNlckludGVyYWN0
aW9uKCJodHRwOi8vbG9jYWxob3N0Iik7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0
aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CiAgICAgICAgICAgICAgICAgaWYgKCF0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0
IikpCiAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0
IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLSAgICAgICAgICAgICAgICBydW5UZXN0KCk7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkTm9uUmVjZW50VXNl
ckludGVyYWN0aW9uKCJodHRwOi8vbG9jYWxob3N0Iik7CisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgICAgICBydW5UZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICIjc3RlcDUiOgogICAgICAgICAgICAg
ICAgIC8vIFNldCBwYXJ0aXRpb25lZCBjb29raWUgZm9yIGxvY2FsaG9zdCB1bmRlciAxMjcuMC4w
LjEuCkBAIC05NSw2ICs4NiwxOCBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgfQorCisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09ICIiKSB7CisgICAg
ICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJMb2NhbGhvc3Qgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291
cmNlIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuIik7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcENo
aWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3Rl
cDEiOworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyB1cC10by1k
YXRlLgorICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29r
aWVzRm9ySG9zdCgibG9jYWxob3N0IiwgZmFsc2UsIHJ1blRlc3QpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHJ1blRlc3QoKTsKKyAgICB9CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1w
YXJ0eS1jb29raWUtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Ro
aXJkLXBhcnR5LWNvb2tpZS13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAko
cmV2aXNpb24gMjI3ODM2KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJh
Y3Rpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjksMTQgKzY5LDE4IEBACiAgICAgICAgICAg
ICBjYXNlICIjc3RlcDQiOgogICAgICAgICAgICAgICAgIC8vIEZsYWcgbG9jYWxob3N0IGZvciBw
YXJ0aXRpb25pbmcgYW5kIHNldCBhIHBhcnRpdGlvbmVkIGNvb2tpZS4KICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA1IjsKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCh0aGlyZFBh
cnR5SG9zdG5hbWUsIHRydWUpOwotICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0
eUJhc2VVcmwgKyBzdWJQYXRoVG9TZXRQYXJ0aXRpb25lZFRoaXJkUGFydHlDb29raWUgKyAiJm1l
c3NhZ2U9U2V0dGluZyBwYXJ0aXRpb25lZCwgdGhpcmQgcGFydHkgY29va2llLiIsIHJ1blRlc3Qp
OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlv
bkNvb2tpZXNGb3JIb3N0KHRoaXJkUGFydHlIb3N0bmFtZSwgdHJ1ZSwgcnVuVGVzdCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICIjc3RlcDUiOgorICAgICAgICAg
ICAgICAgIC8vIEZsYWcgbG9jYWxob3N0IGZvciBwYXJ0aXRpb25pbmcgYW5kIHNldCBhIHBhcnRp
dGlvbmVkIGNvb2tpZS4KICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0g
InN0ZXA2IjsKLSAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJsICsg
c3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1TaG91bGQgb25seSByZWNlaXZlIHBhcnRp
dGlvbmVkLCB0aGlyZCBwYXJ0eSBjb29raWUuIiwgc2V0VXNlckludGVyYWN0aW9uQW5kQ29udGlu
dWUpOworICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQ
YXRoVG9TZXRQYXJ0aXRpb25lZFRoaXJkUGFydHlDb29raWUgKyAiJm1lc3NhZ2U9U2V0dGluZyBw
YXJ0aXRpb25lZCwgdGhpcmQgcGFydHkgY29va2llLiIsIHJ1blRlc3QpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiI3N0ZXA2IjoKKyAgICAgICAgICAgICAgICBk
b2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA3IjsKKyAgICAgICAgICAgICAgICBvcGVuSWZy
YW1lKHRoaXJkUGFydHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1T
aG91bGQgb25seSByZWNlaXZlIHBhcnRpdGlvbmVkLCB0aGlyZCBwYXJ0eSBjb29raWUuIiwgc2V0
VXNlckludGVyYWN0aW9uQW5kQ29udGludWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAiI3N0ZXA3IjoKICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJk
UGFydHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1BZnRlciB1c2Vy
IGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBub24tcGFydGl0aW9uZWQgY29va2llcyBzZXQg
aW4gYSBmaXJzdC1wYXJ0eSBjb250ZXh0IGFuZCBpbiBhIHRoaXJkLXBhcnR5IGNvbnRleHQuIiwg
ZmluaXNoVGVzdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTg1LDE3
ICs4OSwxNyBAQAogICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ob3N0ID09PSBwYXJ0aXRpb25I
b3N0ICYmIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT0gIiIgJiYgd2luZG93LnRlc3RSdW5uZXIg
JiYgd2luZG93LmludGVybmFscykgewogICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOwog
Ci0gICAgICAgIC8vIFN0YXJ0IHRlc3Qgd2l0aCB0aGlyZCBwYXJ0eSBhcyBub24tcHJldmFsZW50
Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRoaXJk
UGFydHlIb3N0bmFtZSwgZmFsc2UpOwotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NI
YXNIYWRVc2VySW50ZXJhY3Rpb24odGhpcmRQYXJ0eU9yaWdpbiwgZmFsc2UpOwotICAgICAgICB0
ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCh0aGly
ZFBhcnR5SG9zdG5hbWUsIGZhbHNlKTsKLQogICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKICAgICAg
ICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7Ci0gICAgfQogCi0gICAgcnVuVGVz
dCgpOworICAgICAgICAvLyBTdGFydCB0ZXN0IHdpdGggdGhpcmQgcGFydHkgYXMgbm9uLXByZXZh
bGVudAorICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh0
aGlyZFBhcnR5SG9zdG5hbWUsIGZhbHNlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlPcmlnaW4sIGZhbHNlKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3Qo
dGhpcmRQYXJ0eUhvc3RuYW1lLCBmYWxzZSwgcnVuVGVzdCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgcnVuVGVzdCgpOworICAgIH0KIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNp
b24gMjI3ODM2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRp
b25zCSh3b3JraW5nIGNvcHkpCkBAIC04MDQsMTMgKzgwNCwxMyBAQCB3ZWJraXQub3JnL2IvMTc2
MTIyIG1lZGlhL3ZpZGVvLWNvbnRyb2xzCiBbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS13aXRoLWFuZC13aXRob3V0LXVz
ZXItaW50ZXJhY3Rpb24uaHRtbCBbIFBhc3MgXQogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29r
aWUtZGVsZXRpb24uaHRtbCBbIFBhc3MgVGltZW91dCBdCiBbIEhpZ2hTaWVycmErIF0gaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL25vbi1wcmV2YWxlbnQtcmVzb3VyY2VzLWNhbi1h
Y2Nlc3MtY29va2llcy1pbi1hLXRoaXJkLXBhcnR5LWNvbnRleHQuaHRtbCBbIFBhc3MgXQorWyBI
aWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtcGFydGl0
aW9uaW5nLXRvLXJlZGlyZWN0Lmh0bWwgWyBQYXNzIF0KIFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLWJsb2NraW5nLXRvLXJlZGlyZWN0Lmh0bWwg
WyBQYXNzIF0KIFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVtb3ZlLXBhcnRpdGlvbmluZy1pbi1yZWRpcmVjdC5odG1sIFsgUGFzcyBdCiBbIEhpZ2hT
aWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1ibG9ja2lu
Zy1pbi1yZWRpcmVjdC5odG1sIFsgUGFzcyBdCiBbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsZWFyLWluLW1lbW9yeS1hbmQtcGVyc2lzdGVudC1zdG9y
ZS5odG1sIFsgUGFzcyBdCiBbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NsZWFyLWluLW1lbW9yeS1hbmQtcGVyc2lzdGVudC1zdG9yZS1vbmUtaG91ci5o
dG1sIFsgUGFzcyBdCi0KLXdlYmtpdC5vcmcvYi8xODE5NTggWyBIaWdoU2llcnJhKyBdIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtcGFydGl0aW9uaW5nLXRvLXJlZGlyZWN0
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQorWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9ncmFuZGZhdGhlcmluZy5odG1sIFsgUGFzcyBdCiAKICMgPHJkYXI6
Ly9wcm9ibGVtLzMzNTU1NzU5Pgogd2Via2l0Lm9yZy9iLzE3NzYxNiBbIEhpZ2hTaWVycmErIF0g
aHR0cC90ZXN0cy9tZWRpYS92aWRlby1idWZmZXJlZC1yYW5nZS1jb250YWlucy1jdXJyZW50VGlt
ZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KQEAgLTg3NSw4ICs4NzUsNiBAQCB3ZWJraXQub3JnL2Iv
MTgxODM5IFsgRGVidWcgXSBpbnNwZWN0b3IvCiAKIHdlYmtpdC5vcmcvYi8xODE3NTMgWyBIaWdo
U2llcnJhIFJlbGVhc2UgXSBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvdXBkYXRlLXNlcnZpY2Ut
d29ya2VyLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTgxNDgy
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9ncmFuZGZhdGhlcmluZy5odG1sIFsg
UGFzcyBdCi0KIHdlYmtpdC5vcmcvYi8xODE4MzEgWyBIaWdoU2llcnJhIF0gZmFzdC9mb3Jtcy9z
ZWFyY2hmaWVsZC1oZWlnaHRzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MTgxOTU3IFsgUmVsZWFzZSBdIGh0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZS10aW1pbmctcmVzb2x1
dGlvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332734</attachid>
            <date>2018-01-30 18:18:08 -0800</date>
            <delta_ts>2018-01-30 22:01:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181958-20180130181808.patch</filename>
            <type>text/plain</type>
            <size>58381</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc4NjYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE4LTAxLTMwICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBjYWxsYmFja3MgdG8gdGVz
dFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoKSBhbmQg
dGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTk1OAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyMDcyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zNjgwMTgwND4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2ODQ1Nzk1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlY2F1
c2Ugb2YgdGhlIGFzeW5jaHJvbm91cyBuYXR1cmUgb2YgWFBDIGFuZCBjb29raWVzLAorICAgICAg
ICB3ZSBuZWVkIGNhbGxiYWNrcyBpbiB0aGVzZSBUZXN0UnVubmVyIGZ1bmN0aW9ucyBzbyB0aGF0
CisgICAgICAgIHRoZSBsYXlvdXQgdGVzdHMgY2FuIHdhaXQgZm9yIHN0YXRlIGNoYW5nZXMgdG8g
ZmluaXNoCisgICAgICAgIGJlZm9yZSBjaGVja2luZyB0ZXN0IGNvbmRpdGlvbnMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcpOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Nob3VsZFBhcnRpdGlvbkNv
b2tpZXNGb3JIb3N0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nXSk6CisgICAgICAgICgtW1dLV2Vic2l0
ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmlu
ZzpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczpmb3JIb3N0Ol0pOgorICAgICAgICAoLVtXS1dl
YnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25D
b29raWVzOmZvckhvc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1Vw
ZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmxvZ1VzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6bG9nTm9uUmVjZW50VXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNvb2tpZVBhcnRp
dGlvbmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JEb21haW5zKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNs
ZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZVdpdGhEYXRhRnJvbURlY29kZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1v
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQYXJ0
aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKwogMjAxOC0wMS0zMCAgRG9uIE9sbXN0ZWFkICA8ZG9u
Lm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIEpTRXhwb3J0cy5oIHNob3VsZCBiZSBpbmNs
dWRlZCBhcyA8SmF2YVNjcmlwdENvcmUvSlNFeHBvcnRNYWNyb3MuaD4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAkocmV2aXNpb24gMjI3ODY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU0
LDcgKzI1NCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXMKIAog
ICAgIG1lcmdlU3RhdGlzdGljcyhXVEZNb3ZlKG9yaWdpbnMpKTsKICAgICAvLyBGaXJlIGJlZm9y
ZSBwcm9jZXNzaW5nIHN0YXRpc3RpY3MgdG8gcHJvcGFnYXRlIHVzZXIgaW50ZXJhY3Rpb24gYXMg
ZmFzdCBhcyBwb3NzaWJsZSB0byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAgIHVwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZygpOworICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyhbXSgpIHsgfSk7
CiAgICAgcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogfQogCkBAIC0zODYsNyAr
Mzg2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZwogICAgICAg
ICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6Om5v
dygpOwogCiAgICAgICAgIGlmIChzdGF0aXN0aWNzLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9u
aW5nIHx8IHN0YXRpc3RpY3MuaXNNYXJrZWRGb3JDb29raWVCbG9ja2luZykKLSAgICAgICAgICAg
IHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoeyB9LCB7IH0sIHsgcHJpbWFyeURv
bWFpbiB9LCBTaG91bGRDbGVhckZpcnN0OjpObyk7CisgICAgICAgICAgICB1cGRhdGVDb29raWVQ
YXJ0aXRpb25pbmdGb3JEb21haW5zKHsgfSwgeyB9LCB7IHByaW1hcnlEb21haW4gfSwgU2hvdWxk
Q2xlYXJGaXJzdDo6Tm8sIFtdKCkgeyB9KTsKICAgICB9KTsKIH0KIApAQCAtNDAwLDcgKzQwMCw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2cKICAgICAgICAgc3Rh
dGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwogICAgICAgICBzdGF0aXN0aWNzLm1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6Om5vdygpIC0gKG1fcGFyYW1l
dGVycy50aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSArIFNlY29uZHM6OmZyb21Ib3Vycygx
KSk7CiAKLSAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IHByaW1h
cnlEb21haW4gfSwgeyB9LCB7IH0sIFNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKKyAgICAgICAgdXBk
YXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IHByaW1hcnlEb21haW4gfSwgeyB9LCB7
IH0sIFNob3VsZENsZWFyRmlyc3Q6Ok5vLCBbXSgpIHsgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTU2
MywzMSArNTYzLDMxIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXQK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVk
dWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlKCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQg
YnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRo
cmVhZC4KICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgbV9zdGF0aXN0aWNz
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsK
LSAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CisgICAgbV9zdGF0aXN0aWNzUXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICB1cGRhdGVDb29r
aWVQYXJ0aXRpb25pbmcoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0pOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdV
cGRhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBz
aG91bGRDbGVhckZpcnN0KQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNj
aGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5
IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJl
YWQuCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3N0YXRpc3RpY3NRdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWlu
c1RvUGFydGl0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb1BhcnRpdGlvbiksIGRvbWFp
bnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgZG9tYWluc1RvTmVp
dGhlclBhcnRpdGlvbk5vckJsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jayksIHNob3VsZENsZWFyRmlyc3RdIHsKLSAgICAgICAgdXBkYXRlQ29v
a2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Js
b2NrLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3Qp
OworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9zc1RocmVhZENvcHkoZG9t
YWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlu
c1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2sgPSBjcm9zc1RocmVh
ZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKSwgc2hvdWxkQ2xlYXJGaXJz
dCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHVw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoZG9tYWluc1RvUGFydGl0aW9uLCBkb21h
aW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVh
ckZpcnN0LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JE
b21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQordm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFp
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykKIHsKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0aW5n
IHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnMgPSBjcm9z
c1RocmVhZENvcHkoZG9tYWlucyldIHsKLSAgICAgICAgY2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZv
ckRvbWFpbnMoZG9tYWlucyk7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnMgPSBjcm9zc1RocmVhZENv
cHkoZG9tYWlucyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewor
ICAgICAgICBjbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyhkb21haW5zLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9CiAKQEAgLTczMiw3ICs3MzIsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyCiAgICAgICAgIHJldHVybjsKIAogICAgIG1l
cmdlU3RhdGlzdGljcyhXVEZNb3ZlKGxvYWRlZFN0YXRpc3RpY3MpKTsKLSAgICB1cGRhdGVDb29r
aWVQYXJ0aXRpb25pbmcoKTsKKyAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoW10oKSB7IH0p
OwogCiAgICAgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG9wZXJhdGluZ0RhdGVzOwogICAgIHN1Y2Nl
ZWRlZCA9IGRlY29kZXIuZGVjb2RlT2JqZWN0cygib3BlcmF0aW5nRGF0ZXMiLCBvcGVyYXRpbmdE
YXRlcywgW10oS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBPcGVyYXRpbmdEYXRlJiBkYXRlKSB7CkBA
IC03NTYsNyArNzU2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNs
ZQogICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmNsZWFyKCk7CiAgICAgbV9vcGVyYXRpbmdE
YXRlcy5jbGVhcigpOwogCi0gICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7
IH0sIHsgfSwgeyB9LCBTaG91bGRDbGVhckZpcnN0OjpZZXMpOworICAgIHVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnMoeyB9LCB7IH0sIHsgfSwgU2hvdWxkQ2xlYXJGaXJzdDo6WWVz
LCBbXSgpIHsgfSk7CiB9CiAKIGJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3
YXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKGNvbnN0IFJlc291cmNl
TG9hZFN0YXRpc3RpY3MmIGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHVw
ZGF0ZWQpCkBAIC03OTQsNyArNzk0LDcgQEAgYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNobwogICAgIHJldHVybiBzdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiAh
c3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbjsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtODE5LDIwICs4MTksMjUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnVwZAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGRvbWFpbnNUb1Bh
cnRpdGlvbi5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxvY2suaXNFbXB0eSgpICYmIGRvbWFpbnNU
b05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jay5pc0VtcHR5KCkpCisgICAgaWYgKGRvbWFpbnNUb1Bh
cnRpdGlvbi5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxvY2suaXNFbXB0eSgpICYmIGRvbWFpbnNU
b05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jay5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2FsbGJhY2so
KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRp
b24gPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sg
PSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0
aW9uTm9yQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5v
ckJsb2NrKV0gKCkgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9zc1RocmVh
ZENvcHkoZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENv
cHkoZG9tYWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2sgPSBj
cm9zc1RocmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgewogICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERv
bWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24s
IGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3Vs
ZENsZWFyRmlyc3Q6Ok5vKTsKKyAgICAgICAgY2FsbGJhY2soKTsKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmlu
Z0ZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3Vs
ZENsZWFyRmlyc3QpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRl
Q29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3Vs
ZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNhbGxiYWNrKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlmIChk
b21haW5zVG9QYXJ0aXRpb24uaXNFbXB0eSgpICYmIGRvbWFpbnNUb0Jsb2NrLmlzRW1wdHkoKSAm
JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2suaXNFbXB0eSgpICYmIHNob3VsZENs
ZWFyRmlyc3QgPT0gU2hvdWxkQ2xlYXJGaXJzdDo6Tm8pCisgICAgaWYgKGRvbWFpbnNUb1BhcnRp
dGlvbi5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxvY2suaXNFbXB0eSgpICYmIGRvbWFpbnNUb05l
aXRoZXJQYXJ0aXRpb25Ob3JCbG9jay5pc0VtcHR5KCkgJiYgc2hvdWxkQ2xlYXJGaXJzdCA9PSBT
aG91bGRDbGVhckZpcnN0OjpObykgeworICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICByZXR1
cm47Ci0KKyAgICB9CisgICAgCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBz
aG91bGRDbGVhckZpcnN0LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNU
b1BhcnRpdGlvbiA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9QYXJ0aXRpb24pLCBkb21haW5z
VG9CbG9jayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9CbG9jayksIGRvbWFpbnNUb05laXRo
ZXJQYXJ0aXRpb25Ob3JCbG9jayA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zVG9OZWl0aGVyUGFy
dGl0aW9uTm9yQmxvY2spXSAoKSB7CiAgICAgICAgIG1fdXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWlu
c1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJG
aXJzdCk7CiAgICAgfSk7CkBAIC04NTIsMTMgKzg1NywxNyBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dXBkCiAKICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNU
b0Jsb2NrKQogICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWlu
KGRvbWFpbikuaXNNYXJrZWRGb3JDb29raWVCbG9ja2luZyA9IHRydWU7CisKKyAgICBjYWxsYmFj
aygpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQYXJ0
aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQYXJ0aXRpb25pbmdTdGF0
ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICBpZiAoZG9tYWlucy5pc0VtcHR5KCkpCisgICAgaWYgKGRvbWFpbnMuaXNFbXB0eSgp
KSB7CisgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zKV0gKCkgewogICAgICAgICBt
X3JlbW92ZURvbWFpbnNIYW5kbGVyKGRvbWFpbnMpOwpAQCAtODY5LDYgKzg3OCw4IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGUKICAgICAgICAgc3RhdGlzdGljLmlz
TWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nID0gZmFsc2U7CiAgICAgICAgIHN0YXRpc3RpYy5p
c01hcmtlZEZvckNvb2tpZUJsb2NraW5nID0gZmFsc2U7CiAgICAgfQorCisgICAgY2FsbGJhY2so
KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0Q29va2ll
UGFydGl0aW9uaW5nU3RhdGUoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDIyNzg2
NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsOSArMTA2LDkgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Vi
ZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2Us
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwotICAgIHZvaWQgc2NoZWR1bGVDb29r
aWVQYXJ0aXRpb25pbmdVcGRhdGUoKTsKLSAgICB2b2lkIHNjaGVkdWxlQ29va2llUGFydGl0aW9u
aW5nVXBkYXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0
aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmly
c3QpOwotICAgIHZvaWQgc2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CisgICAgdm9pZCBzY2hlZHVsZUNvb2tpZVBh
cnRpdGlvbmluZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25O
b3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoKTsKICAg
ICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVQYXJ0aXRp
b25pbmdTdGF0ZVJlc2V0KCk7CkBAIC0xNjIsOSArMTYyLDkgQEAgcHJpdmF0ZToKICAgICBib29s
IGhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJikgY29uc3Q7CiAgICAgdm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0Rh
dGVJZk5lY2Vzc2FyeSgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpOwotICAgIHZvaWQgdXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nKCk7Ci0gICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21h
aW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCk7Ci0gICAgdm9pZCBj
bGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWlucyk7CisgICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFp
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
TmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFp
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiYpOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJik7
CiAgICAgdm9pZCBwcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAJKHJldmlzaW9uIDIyNzg2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw3ICsy
NDQsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDCiAgICAgaWYg
KCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmUtPnNjaGVkdWxlQ29va2llUGFy
dGl0aW9uaW5nVXBkYXRlKCk7CisgICAgc3RvcmUtPnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5n
VXBkYXRlKFtdKCkgeyB9KTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzU2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSkKQEAgLTI1NCw5ICsyNTQs
OSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTaG91CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPnNjaGVkdWxlQ29va2llUGFy
dGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyh7IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSB9LCB7IH0sIHsgfSwgV2ViS2l0OjpTaG91bGRDbGVhckZpcnN0OjpObyk7CisgICAgICAgIHN0
b3JlLT5zY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZUZvckRvbWFpbnMoeyBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkgfSwgeyB9LCB7IH0sIFdlYktpdDo6U2hvdWxkQ2xlYXJG
aXJzdDo6Tm8sIFtdKCkgeyB9KTsKICAgICBlbHNlCi0gICAgICAgIHN0b3JlLT5zY2hlZHVsZUNs
ZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKHsgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpIH0pOworICAgICAgICBzdG9yZS0+c2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0YXRl
Rm9yRG9tYWlucyh7IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSB9LCBbXSgpIHsgfSk7
CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShy
ZXZpc2lvbiAyMjc4NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsMjMgKzQ5Nyw0MyBAQCAt
ICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc1N0CiAKIC0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcKIHsKKyAgICBbc2VsZiBf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZzpeKCkgeyB9XTsK
K30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlv
bmluZzoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgorewogICAgIGF1dG8qIHN0b3JlID0g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCk7Ci0gICAgaWYgKCFzdG9yZSkKKyAgICBpZiAoIXN0b3JlKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKLQotICAgIHN0b3JlLT5zY2hlZHVsZUNv
b2tpZVBhcnRpdGlvbmluZ1VwZGF0ZSgpOworICAgIH0KKyAgICAKKyAgICBzdG9yZS0+c2NoZWR1
bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSk7CiB9CiAKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQ
YXJ0aXRpb25Db29raWVzOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAogewor
ICAgIFtzZWxmIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2ll
czp2YWx1ZSBmb3JIb3N0Omhvc3QgY29tcGxldGlvbkhhbmRsZXI6XigpIHsgfV07Cit9CisKKy0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzOihC
T09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgorewogICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7Ci0g
ICAgaWYgKCFzdG9yZSkKKyAgICBpZiAoIXN0b3JlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAodmFsdWUpCi0gICAgICAg
IHN0b3JlLT5zY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZUZvckRvbWFpbnMoeyBob3N0
IH0sIHsgfSwgeyB9LCBXZWJLaXQ6OlNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKKyAgICAgICAgc3Rv
cmUtPnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyh7IGhvc3QgfSwg
eyB9LCB7IH0sIFdlYktpdDo6U2hvdWxkQ2xlYXJGaXJzdDo6Tm8sIFtjb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgfSk7CiAgICAgZWxzZQotICAgICAgICBzdG9yZS0+
c2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyh7IGhvc3QgfSk7CisgICAg
ICAgIHN0b3JlLT5zY2hlZHVsZUNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JEb21haW5zKHsgaG9z
dCB9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
XSgpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0pOwogfQog
CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHJldmlzaW9uIDIyNzg2NikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTczLDggKzczLDEwIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2Vy
LCBfV0tXZWJzaXQKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRNYXhTdGF0aXN0
aWNzRW50cmllczooc2l6ZV90KWVudHJpZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMp
LCBpb3MoMTEuMCkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFBydW5lRW50
cmllc0Rvd25Ubzooc2l6ZV90KWVudHJpZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMp
LCBpb3MoMTEuMCkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NTdGF0
aXN0aWNzQW5kRGF0YVJlY29yZHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3Mo
MTEuMCkpOwotLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRp
dGlvbmluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7Ci0tICh2
b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llczooQk9P
TCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTMpLCBpb3MoMTEuMCkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZyBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyIsIG1hY29zeCgx
MC4xMywgV0tfTUFDX1RCQSksIGlvcygxMS4wLCBXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nOih2b2lkICheKSgpKWNv
bXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFBh
cnRpdGlvbkNvb2tpZXM6KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQ
SV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0
U2hvdWxkUGFydGl0aW9uQ29va2llcyIsIG1hY29zeCgxMC4xMywgV0tfTUFDX1RCQSksIGlvcygx
MS4wLCBXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hv
dWxkUGFydGl0aW9uQ29va2llczooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3Qg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkOihCT09MKXZhbHVlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIC0gKHZvaWQpX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRz
UmVtb3ZhbDooQk9PTCl2YWx1ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygx
MS4wKSk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjc4NjYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzMyBAQAorMjAxOC0wMS0zMCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgY2FsbGJhY2tzIHRvIHRlc3RSdW5uZXIuc3RhdGlzdGlj
c1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KCkgYW5kIHRlc3RSdW5uZXIuc3RhdGlz
dGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE5NTgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjA3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY4
MDE4MDQ+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjg0NTc5NT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWNhdXNlIG9mIHRoZSBhc3luY2hy
b25vdXMgbmF0dXJlIG9mIFhQQyBhbmQgY29va2llcywKKyAgICAgICAgd2UgbmVlZCBjYWxsYmFj
a3MgaW4gdGhlc2UgVGVzdFJ1bm5lciBmdW5jdGlvbnMgc28gdGhhdAorICAgICAgICB0aGUgbGF5
b3V0IHRlc3RzIGNhbiB3YWl0IGZvciBzdGF0ZSBjaGFuZ2VzIHRvIGZpbmlzaAorICAgICAgICBi
ZWZvcmUgY2hlY2tpbmcgdGVzdCBjb25kaXRpb25zLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5n
KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlv
bkNvb2tpZXNGb3JIb3N0KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0Nh
bGxEaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhvc3RDYWxsYmFjayk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRl
c3RJbnZvY2F0aW9uOjpkaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhvc3QpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25D
b29raWVzRm9ySG9zdCk6CisKIDIwMTgtMDEtMzAgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVh
ZEBzb255LmNvbT4KIAogICAgICAgICBKU0V4cG9ydHMuaCBzaG91bGQgYmUgaW5jbHVkZWQgYXMg
PEphdmFTY3JpcHRDb3JlL0pTRXhwb3J0TWFjcm9zLmg+CkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkocmV2aXNpb24gMjI3ODY2KQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNDUs
NiArMTM0NSwxMiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRDbGVhclN0YXRpc3RpY3NUCiAg
ICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKIH0K
IAordm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JI
b3N0KCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkU2V0UGFydGl0aW9uT3JC
bG9ja0Nvb2tpZXNGb3JIb3N0IikpOworICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1
bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBt
ZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlbW92
ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2Fs
bERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrIikpOwpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAkocmV2aXNpb24gMjI3ODY2KQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeURvd25sb2FkRG9uZSgpOwogCiAg
ICAgdm9pZCBkaWRDbGVhclN0YXRpc3RpY3NUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7Cisg
ICAgdm9pZCBkaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhvc3QoKTsKIAogICAgIHZv
aWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAgICAgCkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAkocmV2aXNpb24gMjI3ODY2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsy
NDUsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0Iikp
IHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldFBhcnRpdGlvbk9y
QmxvY2tDb29raWVzRm9ySG9zdENhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxE
aWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjayIpKSB7CiAgICAgICAgIG1fdGVz
dFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CiAg
ICAgICAgIHJldHVybjsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMjI3ODY2KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjUxLDYgKzY1MSw3IEBAIGVudW0gewogICAgIFN0YXRpc3RpY3NEaWRTY2FuRGF0
YVJlY29yZHNDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFj
a0lELAogICAgIFN0YXRpc3RpY3NEaWRDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxs
YmFja0lELAorICAgIFN0YXRpc3RpY3NEaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhv
c3RDYWxsYmFja0lELAogICAgIERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNr
SUQsCiAgICAgR2V0QXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrSUQsCiAgICAgRmlyc3RVSVNj
cmlwdENhbGxiYWNrSUQgPSAxMDAKQEAgLTE1NTMsMTQgKzE1NTQsMTggQEAgdm9pZCBUZXN0UnVu
bmVyOjpzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpcwogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3Vz
TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1l
LmdldCgpLCAwLCBudWxscHRyKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzVXBk
YXRlQ29va2llUGFydGl0aW9uaW5nKCkKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1VwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogeworICAgIGNhY2hlVGVz
dFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zv
ckhvc3RDYWxsYmFja0lELCBjYWxsYmFjayk7CisKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0
YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmciKSk7CiAgICAgV0tCdW5kbGVQb3N0U3lu
Y2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIDAsIG51bGxwdHIpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnN0YXRp
c3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdChKU1N0cmluZ1JlZiBob3N0TmFt
ZSwgYm9vbCB2YWx1ZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldFNob3VsZFBhcnRp
dGlvbkNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlLCBKU1Zh
bHVlUmVmIGNhbGxiYWNrKQogeworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3Rp
Y3NEaWRTZXRQYXJ0aXRpb25PckJsb2NrQ29va2llc0Zvckhvc3RDYWxsYmFja0lELCBjYWxsYmFj
ayk7CisKICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOwogICAgIFZl
Y3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CiAgICAgCkBAIC0xNTg0LDYgKzE1
ODksMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzU2V0U2hvdWxkUGFydAogICAgIFdL
QnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
YnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7
CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRQYXJ0aXRpb25PckJs
b2NrQ29va2llc0Zvckhvc3RDYWxsYmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFj
ayhTdGF0aXN0aWNzRGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0Q2FsbGJhY2tJ
RCk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSgpCiB7
CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5IikpOwpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgJKHJldmlzaW9uIDIyNzg2NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsOCArMzY3LDkg
QEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNrKHVu
c2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9w
RnJhbWVPcmlnaW5zKTsKICAgICB2b2lkIHN0YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigpOwogICAg
IHZvaWQgc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKLSAgICB2
b2lkIHN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKLSAgICB2b2lkIHN0YXRp
c3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdChKU1N0cmluZ1JlZiBob3N0TmFt
ZSwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBzdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9u
aW5nKEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZvaWQgc3RhdGlzdGljc1NldFNob3VsZFBh
cnRpdGlvbkNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlLCBK
U1ZhbHVlUmVmIGNhbGxiYWNrKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0UGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0Q2FsbGJhY2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NT
dWJtaXRUZWxlbWV0cnkoKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NMYXN0U2VlbihKU1N0cmlu
Z1JlZiBob3N0TmFtZSwgZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAkocmV2aXNpb24gMjI3ODY2KQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjgzLDggKzI4Myw4IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUg
c2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKICAgICB2b2lk
IHN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7Ci0gICAgdm9pZCBz
dGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNz
U2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29s
ZWFuIHZhbHVlKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmco
b2JqZWN0IGNhbGxiYWNrKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25D
b29raWVzRm9ySG9zdChET01TdHJpbmcgaG9zdE5hbWUsIGJvb2xlYW4gdmFsdWUsIG9iamVjdCBj
YWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29s
ZWFuIHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRDbGFzc2lmeVJlc291cmNl
c0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sZWFuIHZhbHVlKTsKSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHJl
dmlzaW9uIDIyNzg2NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzc2LDEyICszNzYsMTYgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Byb2Nlc3NTdAogCiB2b2lkIFRlc3RDb250cm9sbGVy
OjpzdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKIHsKLSAgICBbZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ107CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0
aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVDb29raWVQ
YXJ0aXRpb25pbmc6XigpIHsKKyAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0UGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0KCk7CisgICAgfV07CiB9CiAKIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdChXS1N0
cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKIHsKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZp
Z3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXM6dmFsdWUgZm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cisg
ICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzOnZhbHVlIGZvckhvc3Q6dG9O
U1N0cmluZyhob3N0TmFtZSkgY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgbV9jdXJy
ZW50SW52b2NhdGlvbi0+ZGlkU2V0UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNGb3JIb3N0KCk7Cisg
ICAgfV07CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0
cnkoKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI3ODY2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTgtMDEtMzAgIEpvaG4gV2lsYW5k
ZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGNhbGxiYWNrcyB0byB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgpIGFuZCB0
ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxOTU4CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwNzIKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM2ODAxODA0PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY4NDU3OTU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVz
ZSBvZiB0aGUgYXN5bmNocm9ub3VzIG5hdHVyZSBvZiBYUEMgYW5kIGNvb2tpZXMsCisgICAgICAg
IHdlIG5lZWQgY2FsbGJhY2tzIGluIHRoZXNlIFRlc3RSdW5uZXIgZnVuY3Rpb25zIHNvIHRoYXQK
KyAgICAgICAgdGhlIGxheW91dCB0ZXN0cyBjYW4gd2FpdCBmb3Igc3RhdGUgY2hhbmdlcyB0byBm
aW5pc2gKKyAgICAgICAgYmVmb3JlIGNoZWNraW5nIHRlc3QgY29uZGl0aW9ucy4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVk
aXJlY3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLXBhcnRpdGlvbmluZy10by1yZWRpcmVjdC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2FkZC1wYXJ0aXRpb25pbmctdG8tcmVkaXJlY3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVudC1yZXNvdXJjZXMtY2FuLWFjY2Vz
cy1jb29raWVzLWluLWEtdGhpcmQtcGFydHktY29udGV4dC5odG1sOgorICAgICAgICAqIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25l
ZC1jb29raWUtZGVsZXRpb24uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLXdpdGgtcGFy
dGl0aW9uaW5nLXRpbWVvdXQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50
ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRl
cmFjdGlvbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJl
Y3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVt
b3ZlLXBhcnRpdGlvbmluZy1pbi1yZWRpcmVjdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1wYXJ0aXRpb25pbmctaW4tcmVk
aXJlY3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
dGhpcmQtcGFydHktY29va2llLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1s
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxOC0w
MS0zMCAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmtlZCBm
YXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1sIGFzIGZsYWt5IG9uIG1hY09TIFJlbGVh
c2UuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
YWRkLWJsb2NraW5nLXRvLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLWJsb2NraW5nLXRv
LXJlZGlyZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjI3ODY2KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVj
dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBAIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQotCisgIAogCiAtLS0tLS0tLQogRnJhbWU6ICc8IS0tZnJh
bWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
YWRkLWJsb2NraW5nLXRvLXJlZGlyZWN0Lmh0bWwJKHJldmlzaW9uIDIyNzg2NikKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtYmxvY2tpbmctdG8t
cmVkaXJlY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKICAgICA8bWV0YSBj
aGFyc2V0PSJVVEYtOCI+CiAgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxi
b2R5PgogPHNjcmlwdD4KICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBibG9ja2luZyBpcyBh
ZGRlZCBtaWQtZmxpZ2h0IGluIHJlZGlyZWN0cy4iKTsKICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKQEAgLTE2LDE2ICsxNiw2IEBACiAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q29va2llU3RvcmFn
ZVBhcnRpdGlvbmluZ0VuYWJsZWQoZW5hYmxlKTsKICAgICB9CiAKLSAgICBpZiAoZG9jdW1lbnQu
bG9jYXRpb24uaGFzaCA9PT0gIiIpIHsKLSAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlKTsK
LSAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0
dHA6Ly9sb2NhbGhvc3QiKSkKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2FsaG9zdCB3YXMg
Y2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UgYmVmb3JlIHRoZSB0ZXN0IHN0YXJ0cy4i
KTsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBuZXR3b3JrIHByb2Nlc3MgaXMgdXAtdG8tZGF0
ZS4KLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2ll
c0Zvckhvc3QoImxvY2FsaG9zdCIsIGZhbHNlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hp
bGRGcmFtZXNBc1RleHQoKTsKLSAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVw
MSI7Ci0gICAgfQotCiAgICAgY29uc3QgcGFydGl0aW9uSG9zdCA9ICIxMjcuMC4wLjE6ODAwMCI7
CiAgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOwog
ICAgIGNvbnN0IHJlc291cmNlUGF0aCA9ICIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJj
ZXMiOwpAQCAtNjcsMTAgKzU3LDExIEBACiAgICAgICAgICAgICAgICAgLy8gU2V0IGxvY2FsaG9z
dCBhcyBwcmV2YWxlbnQgYW5kIHdpdGggbm8gdXNlciBpbnRlcmFjdGlvbiB0byBwdXQgaXQgaW4g
dGhlIGJsb2NraW5nIGNhdGVnb3J5LgogICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9u
Lmhhc2ggPSAic3RlcDUiOwogICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IiwgdHJ1ZSk7Ci0gICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCiAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ikhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLSAgICAgICAg
ICAgICAgICBydW5UZXN0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNz
VXBkYXRlQ29va2llUGFydGl0aW9uaW5nKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg
ICBydW5UZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlICIjc3RlcDUiOgogICAgICAgICAgICAgICAgIC8vIENoZWNrIHRo
YXQgbm8gY29va2llIGdldHMgc2VudCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMSBzaW5j
ZSBsb2NhbGhvc3QncyBjb29raWVzIGFyZSBibG9ja2VkLgpAQCAtMTAzLDYgKzk0LDE4IEBACiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAoZG9jdW1l
bnQubG9jYXRpb24uaGFzaCA9PT0gIiIpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVl
KTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uo
Imh0dHA6Ly9sb2NhbGhvc3QiKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2FsaG9zdCB3
YXMgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UgYmVmb3JlIHRoZSB0ZXN0IHN0YXJ0
cy4iKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICAg
ICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7CisgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgbmV0d29yayBwcm9jZXNzIGlzIHVwLXRvLWRhdGUuCisgICAgICAgIHRlc3RSdW5uZXIu
c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KCJsb2NhbGhvc3QiLCBm
YWxzZSwgcnVuVGVzdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0K
IDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1wYXJ0aXRpb25pbmctdG8tcmVkaXJlY3QtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9hZGQtcGFydGl0aW9uaW5nLXRvLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjI3ODY2KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2FkZC1wYXJ0aXRpb25pbmctdG8tcmVkaXJlY3QtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKLQorICAKIAogLS0tLS0tLS0KIEZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAt
LT4tLT4nCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvYWRkLXBhcnRpdGlvbmluZy10by1yZWRpcmVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtcGFydGl0aW9uaW5n
LXRvLXJlZGlyZWN0Lmh0bWwJKHJldmlzaW9uIDIyNzg2NikKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtcGFydGl0aW9uaW5nLXRvLXJlZGlyZWN0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBACiAgICAgPG1ldGEgY2hhcnNldD0i
VVRGLTgiPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8Ym9keT4KIDxz
Y3JpcHQ+CiAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgcGFydGl0aW9uaW5nIGlzIGFkZGVk
IG1pZC1mbGlnaHQgaW4gcmVkaXJlY3RzLiIpOwogICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwpA
QCAtMTYsMTYgKzE2LDYgQEAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRDb29raWVTdG9yYWdlUGFy
dGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOwogICAgIH0KIAotICAgIGlmIChkb2N1bWVudC5sb2Nh
dGlvbi5oYXNoID09PSAiIikgewotICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOwotICAg
ICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDov
L2xvY2FsaG9zdCIpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jYWxob3N0IHdhcyBjbGFz
c2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRzLiIpOwot
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyB1cC10by1kYXRlLgot
ICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9y
SG9zdCgibG9jYWxob3N0IiwgZmFsc2UpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZy
YW1lc0FzVGV4dCgpOwotICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsK
LSAgICB9Ci0KICAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEyNy4wLjAuMTo4MDAwIjsKICAg
ICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CiAgICAg
Y29uc3QgcmVzb3VyY2VQYXRoID0gIi9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcyI7
CkBAIC02NywxMSArNTcsMTIgQEAKICAgICAgICAgICAgICAgICAvLyBTZXQgbG9jYWxob3N0IGFz
IHByZXZhbGVudCBhbmQgd2l0aCBub24tcmVjZW50IHVzZXIgaW50ZXJhY3Rpb24gdG8gcHV0IGl0
IGluIHRoZSBwYXJ0aXRpb25pbmcgY2F0ZWdvcnkuCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
bG9jYXRpb24uaGFzaCA9ICJzdGVwNSI7CiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiLCB0cnVlKTsKLSAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWROb25SZWNlbnRVc2Vy
SW50ZXJhY3Rpb24oImh0dHA6Ly9sb2NhbGhvc3QiKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKICAgICAgICAgICAgICAg
ICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9s
b2NhbGhvc3QiKSkKICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90
IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotICAgICAgICAgICAgICAgIHJ1blRl
c3QoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWROb25S
ZWNlbnRVc2VySW50ZXJhY3Rpb24oImh0dHA6Ly9sb2NhbGhvc3QiKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgIiNzdGVwNSI6CiAgICAg
ICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCBubyBjb29raWUgZ2V0cyBzZW50IGZvciBsb2NhbGhv
c3QgdW5kZXIgMTI3LjAuMC4xIHNpbmNlIGxvY2FsaG9zdCBpcyBwYXJ0aXRpb25lZC4KQEAgLTEw
NCw2ICs5NSwxOCBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQor
CisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09ICIiKSB7CisgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUodHJ1ZSk7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJMb2NhbGhvc3Qgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJlZm9y
ZSB0aGUgdGVzdCBzdGFydGVkLiIpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1l
c0FzVGV4dCgpOworICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKyAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoZSBuZXR3b3JrIHByb2Nlc3MgaXMgdXAtdG8tZGF0ZS4KKyAg
ICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhv
c3QoImxvY2FsaG9zdCIsIGZhbHNlLCBydW5UZXN0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBy
dW5UZXN0KCk7CisgICAgfQogPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVudC1y
ZXNvdXJjZXMtY2FuLWFjY2Vzcy1jb29raWVzLWluLWEtdGhpcmQtcGFydHktY29udGV4dC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9ub24tcHJldmFsZW50LXJlc291cmNlcy1jYW4tYWNjZXNzLWNvb2tpZXMtaW4tYS10aGly
ZC1wYXJ0eS1jb250ZXh0Lmh0bWwJKHJldmlzaW9uIDIyNzg2NikKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9ub24tcHJldmFsZW50LXJlc291cmNlcy1j
YW4tYWNjZXNzLWNvb2tpZXMtaW4tYS10aGlyZC1wYXJ0eS1jb250ZXh0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDE3ICs2MCwyMSBAQAogICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhp
cmRQYXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPVNob3VsZCBy
ZWNlaXZlIG9uZSBjb29raWUuIiwgcnVuVGVzdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlICIjc3RlcDMiOgotICAgICAgICAgICAgICAgIC8vIFNldHVwIGxvY2Fs
aG9zdCBmb3IgcGFydGl0aW9uaW5nIGFuZCBzZXQgYSBwYXJ0aXRpb25lZCBjb29raWUgZm9yIGxv
Y2FsaG9zdCB1bmRlciAxMjcuMC4wLjEuCisgICAgICAgICAgICAgICAgLy8gU2V0dXAgbG9jYWxo
b3N0IGZvciBwYXJ0aXRpb25pbmcuCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24u
aGFzaCA9ICJzdGVwNCI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0
U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QodGhpcmRQYXJ0eUhvc3RuYW1lLCB0cnVlKTsK
LSAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJsICsgc3ViUGF0aFRv
U2V0UGFydGl0aW9uZWRDb29raWUgKyAiJm1lc3NhZ2U9U2V0dGluZyBwYXJ0aXRpb25lZCwgdGhp
cmQgcGFydHkgY29va2llLiIsIHJ1blRlc3QpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KHRoaXJkUGFydHlIb3N0
bmFtZSwgdHJ1ZSwgcnVuVGVzdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlICIjc3RlcDQiOgotICAgICAgICAgICAgICAgIC8vIExvYWQgbG9jYWxob3N0IHVuZGVy
IDEyNy4wLjAuMSBhbmQgY2hlY2sgdGhhdCBpdCBnZXRzIG9ubHkgdGhlIHBhcnRpdGlvbmVkIGNv
b2tpZS4gRW5kIGJ5IGFxdWlyaW5nIHVzZXIgaW50ZXJhY3Rpb24gZm9yIGxvY2FsaG9zdC4KKyAg
ICAgICAgICAgICAgICAvLyBTZXQgYSBwYXJ0aXRpb25lZCBjb29raWUgZm9yIGxvY2FsaG9zdCB1
bmRlciAxMjcuMC4wLjEuCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9
ICJzdGVwNSI7Ci0gICAgICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5QmFzZVVybCAr
IHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1lc3NhZ2U9U2hvdWxkIHJlY2VpdmUgb25lIHBhcnRp
dGlvbmVkLCB0aGlyZCBwYXJ0eSBjb29raWUuIiwgc2V0VXNlckludGVyYWN0aW9uQW5kQ29udGlu
dWUpOworICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQ
YXRoVG9TZXRQYXJ0aXRpb25lZENvb2tpZSArICImbWVzc2FnZT1TZXR0aW5nIHBhcnRpdGlvbmVk
LCB0aGlyZCBwYXJ0eSBjb29raWUuIiwgcnVuVGVzdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlICIjc3RlcDUiOgorICAgICAgICAgICAgICAgIC8vIExvYWQgbG9j
YWxob3N0IHVuZGVyIDEyNy4wLjAuMSBhbmQgY2hlY2sgdGhhdCBpdCBnZXRzIG9ubHkgdGhlIHBh
cnRpdGlvbmVkIGNvb2tpZS4gRW5kIGJ5IGFjcXVpcmluZyB1c2VyIGludGVyYWN0aW9uIGZvciBs
b2NhbGhvc3QuCisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVw
NiI7CisgICAgICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5QmFzZVVybCArIHN1YlBh
dGhUb0dldENvb2tpZXMgKyAiJm1lc3NhZ2U9U2hvdWxkIHJlY2VpdmUgb25lIHBhcnRpdGlvbmVk
LCB0aGlyZCBwYXJ0eSBjb29raWUuIiwgc2V0VXNlckludGVyYWN0aW9uQW5kQ29udGludWUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXA2IjoKICAgICAg
ICAgICAgICAgICAvLyBMb2FkIGxvY2FsaG9zdCB1bmRlciAxMjcuMC4wLjEgYW5kIGNoZWNrIHRo
YXQgaXQgZ2V0cyBpdHMgbm9uLXBhcnRpdGlvbmVkIGNvb2tpZSBhZnRlciB1c2VyIGludGVyYWN0
aW9uLgogICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQ
YXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPUFmdGVyIHVzZXIgaW50ZXJhY3Rpb24sIHNob3Vs
ZCByZWNlaXZlIG9uZSBub24tcGFydGl0aW9uZWQsIGZpcnN0IHBhcnR5IGNvb2tpZS4iLCBmaW5p
c2hUZXN0KTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTgyLDE0ICs4NiwxNCBAQAogCiAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRoaXJkUGFy
dHlIb3N0bmFtZSwgZmFsc2UpOwogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNI
YWRVc2VySW50ZXJhY3Rpb24odGhpcmRQYXJ0eU9yaWdpbiwgZmFsc2UpOwotICAgICAgICB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCh0aGlyZFBh
cnR5SG9zdG5hbWUsIGZhbHNlKTsKLQogICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKICAgICAgICAg
ZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7Ci0gICAgfQogCi0gICAgcnVuVGVzdCgp
OworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVz
Rm9ySG9zdCh0aGlyZFBhcnR5SG9zdG5hbWUsIGZhbHNlLCBydW5UZXN0KTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBydW5UZXN0KCk7CisgICAgfQogPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFy
dGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRp
dGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS1kZWxldGlvbi5odG1sCShyZXZpc2lvbiAy
Mjc4NjYpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDI0ICs4NiwyNSBAQAogICAgICAgICB9CiAgICAgfQogCi0KICAgICBp
ZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0gcGFydGl0aW9uSG9zdCAmJiBkb2N1bWVudC5s
b2NhdGlvbi5oYXNoID09PSAiIiAmJiB3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJu
YWxzKSB7CiAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7CiAKICAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jk
c1JlbW92YWwoZmFsc2UpOwogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNaW5pbXVt
VGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMCk7CiAKLSAgICAgICAgdGVzdFJ1bm5lci5z
dGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoImxvY2FsaG9zdCIsIHRy
dWUpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICAgICAgZG9jdW1lbnQubG9jYXRpb24u
aGFzaCA9ICJzdGVwMSI7CisKICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiLCB0cnVlKTsKICAgICAgICAgaWYgKCF0ZXN0
UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0Iikp
CiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxl
bnQgcmVzb3VyY2UuIik7CiAKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0g
ICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgICAgIGRvY3Vt
ZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDEiOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3Rp
Y3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdCgibG9jYWxob3N0IiwgdHJ1ZSwgcnVu
VGVzdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcnVuVGVzdCgpOwogICAgIH0KIAotICAgIHJ1
blRlc3QoKTsKIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRp
dGlvbmVkLWNvb2tpZS13aXRoLXBhcnRpdGlvbmluZy10aW1lb3V0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlv
bmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRoLXBhcnRpdGlvbmluZy10aW1lb3V0Lmh0
bWwJKHJldmlzaW9uIDIyNzg2NikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtd2l0aC1w
YXJ0aXRpb25pbmctdGltZW91dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw3IEBA
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
QW5kQ29udGludWUoKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZygpOwotICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIHRlc3RSdW5uZXIu
c3RhdGlzdGljc1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyhydW5UZXN0KTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiBzZXRTaG9ydENvb2tpZVBhcnRpdGlvbmluZ1RpbWVPdXRQbHVzRmlyZVNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyQW5kQ29udGludWUoKSB7CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13
aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRp
b25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDIyNzg2NikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1p
bnRlcmFjdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0K
KyAgCiAKIC0tLS0tLS0tCiBGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+
JwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Bh
cnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3BhcnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9u
Lmh0bWwJKHJldmlzaW9uIDIyNzg2NikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNl
ci1pbnRlcmFjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQAogICAgIDx0
aXRsZT5UZXN0IGZvciBQYXJ0aXRpb25lZCBDb29raWVzIFdpdGggYW5kIFdpdGhvdXQgVXNlciBJ
bnRlcmFjdGlvbjwvdGl0bGU+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Cis8Ym9keT4KIDxzY3JpcHQ+CiAgICAgY29uc3QgcGFydGl0aW9uSG9zdCA9ICIxMjcuMC4wLjE6
ODAwMCI7CiAgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0Ojgw
MDAiOwpAQCAtNzMsMTEgKzczLDEzIEBACiAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhvc3Qg
PT09IHBhcnRpdGlvbkhvc3QgJiYgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PSAiIiAmJiB3aW5k
b3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CiAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUodHJ1ZSk7CiAKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFy
dGl0aW9uQ29va2llc0Zvckhvc3QoImxvY2FsaG9zdCIsIHRydWUpOwotCiAgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1l
c0FzVGV4dCgpOwogICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKwor
ICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9y
SG9zdCgibG9jYWxob3N0IiwgdHJ1ZSwgcnVuVGVzdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
cnVuVGVzdCgpOwogICAgIH0KIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1ibG9ja2luZy1pbi1yZWRp
cmVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1ibG9ja2luZy1pbi1yZWRpcmVjdC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDIyNzg2NikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3QtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUKLQorICAKIAogLS0tLS0tLS0KIEZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTAtLT4tLT4nCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcmVtb3ZlLWJsb2NraW5nLWluLXJlZGlyZWN0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1ibG9j
a2luZy1pbi1yZWRpcmVjdC5odG1sCShyZXZpc2lvbiAyMjc4NjYpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLWJsb2NraW5nLWluLXJlZGly
ZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBACiAgICAgPG1ldGEgY2hhcnNl
dD0iVVRGLTgiPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8Ym9keT4K
IDxzY3JpcHQ+CiAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYmxvY2tpbmcgaXMgcmVtb3Zl
ZCBtaWQtZmxpZ2h0IGluIHJlZGlyZWN0cy4iKTsKICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
QEAgLTE2LDE2ICsxNiw2IEBACiAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q29va2llU3RvcmFnZVBh
cnRpdGlvbmluZ0VuYWJsZWQoZW5hYmxlKTsKICAgICB9CiAKLSAgICBpZiAoZG9jdW1lbnQubG9j
YXRpb24uaGFzaCA9PT0gIiIpIHsKLSAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlKTsKLSAg
ICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6
Ly9sb2NhbGhvc3QiKSkKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2FsaG9zdCB3YXMgY2xh
c3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UgYmVmb3JlIHRoZSB0ZXN0IHN0YXJ0cy4iKTsK
LSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBuZXR3b3JrIHByb2Nlc3MgaXMgdXAtdG8tZGF0ZS4K
LSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zv
ckhvc3QoImxvY2FsaG9zdCIsIGZhbHNlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRG
cmFtZXNBc1RleHQoKTsKLSAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7
Ci0gICAgfQotCiAgICAgY29uc3QgcGFydGl0aW9uSG9zdCA9ICIxMjcuMC4wLjE6ODAwMCI7CiAg
ICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOwogICAg
IGNvbnN0IHJlc291cmNlUGF0aCA9ICIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMi
OwpAQCAtNjgsMTAgKzU4LDExIEBACiAgICAgICAgICAgICAgICAgLy8gU2V0IGxvY2FsaG9zdCBh
cyBwcmV2YWxlbnQgYW5kIHdpdGggbm9uLXJlY2VudCB1c2VyIGludGVyYWN0aW9uIHRvIHB1dCBp
dCBpbiB0aGUgYmxvY2tpbmcgY2F0ZWdvcnkuCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9j
YXRpb24uaGFzaCA9ICJzdGVwNSI7CiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiLCB0cnVlKTsKLSAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmco
KTsKICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiKSkKICAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotICAg
ICAgICAgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRp
c3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgIiNzdGVwNSI6CiAgICAgICAgICAgICAgICAgLy8gU2V0
IHBhcnRpdGlvbmVkIGNvb2tpZSBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMS4KQEAgLTk0
LDYgKzg1LDE4IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisK
KyAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiIpIHsKKyAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZSh0cnVlKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiKSkKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkxvY2FsaG9zdCB3YXMgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UgYmVmb3Jl
IHRoZSB0ZXN0IHN0YXJ0cy4iKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNB
c1RleHQoKTsKKyAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7CisgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgbmV0d29yayBwcm9jZXNzIGlzIHVwLXRvLWRhdGUuCisgICAg
ICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0
KCJsb2NhbGhvc3QiLCBmYWxzZSwgcnVuVGVzdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcnVu
VGVzdCgpOworICAgIH0KIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1wYXJ0aXRpb25p
bmctaW4tcmVkaXJlY3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtcGFydGl0aW9uaW5nLWluLXJl
ZGlyZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjI3ODY2KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1wYXJ0aXRpb25pbmctaW4tcmVk
aXJlY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQCBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKLQorICAKIAogLS0tLS0tLS0KIEZyYW1lOiAnPCEt
LWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXBhcnRpdGlvbmluZy1pbi1yZWRpcmVj
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9yZW1vdmUtcGFydGl0aW9uaW5nLWluLXJlZGlyZWN0Lmh0bWwJKHJldmlzaW9u
IDIyNzg2NikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9yZW1vdmUtcGFydGl0aW9uaW5nLWluLXJlZGlyZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQsNyArNCw3IEBACiAgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgIDxzY3JpcHQgc3Jj
PSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8Ym9keT4KIDxzY3JpcHQ+CiAgICAgZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgcGFydGl0aW9uaW5nIGlzIHJlbW92ZWQgbWlkLWZsaWdodCBpbiByZWRpcmVj
dHMuIik7CiAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CkBAIC0xNiwxNiArMTYsNiBAQAogICAg
ICAgICB0ZXN0UnVubmVyLnNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKGVuYWJs
ZSk7CiAgICAgfQogCi0gICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09ICIiKSB7Ci0g
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSk7Ci0gICAgICAgIGlmICh0ZXN0UnVubmVyLmlz
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCi0gICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJMb2NhbGhvc3Qgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJl
c291cmNlIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuIik7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB0
aGUgbmV0d29yayBwcm9jZXNzIGlzIHVwLXRvLWRhdGUuCi0gICAgICAgIHRlc3RSdW5uZXIuc3Rh
dGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KCJsb2NhbGhvc3QiLCBmYWxz
ZSk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgICAg
IGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDEiOwotICAgIH0KLQogICAgIGNvbnN0IHBh
cnRpdGlvbkhvc3QgPSAiMTI3LjAuMC4xOjgwMDAiOwogICAgIGNvbnN0IHRoaXJkUGFydHlPcmln
aW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKICAgICBjb25zdCByZXNvdXJjZVBhdGggPSAi
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzIjsKQEAgLTY4LDExICs1OCwxMiBAQAog
ICAgICAgICAgICAgICAgIC8vIFNldCBsb2NhbGhvc3QgYXMgcHJldmFsZW50IGFuZCB3aXRoIG5v
bi1yZWNlbnQgdXNlciBpbnRlcmFjdGlvbiB0byBwdXQgaXQgaW4gdGhlIHBhcnRpdGlvbmluZyBj
YXRlZ29yeS4KICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA1
IjsKICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZSgiaHR0cDovL2xvY2FsaG9zdCIsIHRydWUpOwotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0U3RhdGlzdGljc0hhc0hhZE5vblJlY2VudFVzZXJJbnRlcmFjdGlvbigiaHR0cDovL2xv
Y2FsaG9zdCIpOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZygpOwogICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQogICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQg
cmVzb3VyY2UuIik7Ci0gICAgICAgICAgICAgICAgcnVuVGVzdCgpOworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZE5vblJlY2VudFVzZXJJbnRlcmFjdGlvbigi
aHR0cDovL2xvY2FsaG9zdCIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGlj
c1VwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcnVuVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSAiI3N0ZXA1IjoKICAgICAgICAgICAgICAgICAvLyBTZXQgcGFy
dGl0aW9uZWQgY29va2llIGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xLgpAQCAtOTUsNiAr
ODYsMTggQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKworICAg
IGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgeworICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKHRydWUpOworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgi
TG9jYWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhl
IHRlc3Qgc3RhcnRzLiIpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpOworICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKyAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoZSBuZXR3b3JrIHByb2Nlc3MgaXMgdXAtdG8tZGF0ZS4KKyAgICAgICAg
dGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoImxv
Y2FsaG9zdCIsIGZhbHNlLCBydW5UZXN0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBydW5UZXN0
KCk7CisgICAgfQogPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLXdp
dGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29r
aWUtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwJKHJldmlzaW9uIDIyNzg2
NikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGly
ZC1wYXJ0eS1jb29raWUtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDE0ICs2OSwxOCBAQAogICAgICAgICAgICAgY2FzZSAiI3N0ZXA0
IjoKICAgICAgICAgICAgICAgICAvLyBGbGFnIGxvY2FsaG9zdCBmb3IgcGFydGl0aW9uaW5nIGFu
ZCBzZXQgYSBwYXJ0aXRpb25lZCBjb29raWUuCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9j
YXRpb24uaGFzaCA9ICJzdGVwNSI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0
aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QodGhpcmRQYXJ0eUhvc3RuYW1lLCB0
cnVlKTsKLSAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJsICsgc3Vi
UGF0aFRvU2V0UGFydGl0aW9uZWRUaGlyZFBhcnR5Q29va2llICsgIiZtZXNzYWdlPVNldHRpbmcg
cGFydGl0aW9uZWQsIHRoaXJkIHBhcnR5IGNvb2tpZS4iLCBydW5UZXN0KTsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9z
dCh0aGlyZFBhcnR5SG9zdG5hbWUsIHRydWUsIHJ1blRlc3QpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSAiI3N0ZXA1IjoKKyAgICAgICAgICAgICAgICAvLyBGbGFn
IGxvY2FsaG9zdCBmb3IgcGFydGl0aW9uaW5nIGFuZCBzZXQgYSBwYXJ0aXRpb25lZCBjb29raWUu
CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwNiI7Ci0gICAg
ICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5QmFzZVVybCArIHN1YlBhdGhUb0dldENv
b2tpZXMgKyAiJm1lc3NhZ2U9U2hvdWxkIG9ubHkgcmVjZWl2ZSBwYXJ0aXRpb25lZCwgdGhpcmQg
cGFydHkgY29va2llLiIsIHNldFVzZXJJbnRlcmFjdGlvbkFuZENvbnRpbnVlKTsKKyAgICAgICAg
ICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJsICsgc3ViUGF0aFRvU2V0UGFydGl0
aW9uZWRUaGlyZFBhcnR5Q29va2llICsgIiZtZXNzYWdlPVNldHRpbmcgcGFydGl0aW9uZWQsIHRo
aXJkIHBhcnR5IGNvb2tpZS4iLCBydW5UZXN0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgIiNzdGVwNiI6CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRp
b24uaGFzaCA9ICJzdGVwNyI7CisgICAgICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5
QmFzZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1lc3NhZ2U9U2hvdWxkIG9ubHkgcmVj
ZWl2ZSBwYXJ0aXRpb25lZCwgdGhpcmQgcGFydHkgY29va2llLiIsIHNldFVzZXJJbnRlcmFjdGlv
bkFuZENvbnRpbnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
IiNzdGVwNyI6CiAgICAgICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5QmFzZVVybCAr
IHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1lc3NhZ2U9QWZ0ZXIgdXNlciBpbnRlcmFjdGlvbiwg
c2hvdWxkIHJlY2VpdmUgbm9uLXBhcnRpdGlvbmVkIGNvb2tpZXMgc2V0IGluIGEgZmlyc3QtcGFy
dHkgY29udGV4dCBhbmQgaW4gYSB0aGlyZC1wYXJ0eSBjb250ZXh0LiIsIGZpbmlzaFRlc3QpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04NSwxNyArODksMTcgQEAKICAg
ICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0gcGFydGl0aW9uSG9zdCAmJiBkb2N1bWVu
dC5sb2NhdGlvbi5oYXNoID09ICIiICYmIHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRl
cm5hbHMpIHsKICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlKTsKIAotICAgICAgICAvLyBT
dGFydCB0ZXN0IHdpdGggdGhpcmQgcGFydHkgYXMgbm9uLXByZXZhbGVudAotICAgICAgICB0ZXN0
UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh0aGlyZFBhcnR5SG9zdG5hbWUs
IGZhbHNlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVy
YWN0aW9uKHRoaXJkUGFydHlPcmlnaW4sIGZhbHNlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0
aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QodGhpcmRQYXJ0eUhvc3RuYW1l
LCBmYWxzZSk7Ci0KICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiAgICAgICAgIGRvY3VtZW50Lmxv
Y2F0aW9uLmhhc2ggPSAic3RlcDEiOwotICAgIH0KIAotICAgIHJ1blRlc3QoKTsKKyAgICAgICAg
Ly8gU3RhcnQgdGVzdCB3aXRoIHRoaXJkIHBhcnR5IGFzIG5vbi1wcmV2YWxlbnQKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodGhpcmRQYXJ0eUhvc3Ru
YW1lLCBmYWxzZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJ
bnRlcmFjdGlvbih0aGlyZFBhcnR5T3JpZ2luLCBmYWxzZSk7CisgICAgICAgIHRlc3RSdW5uZXIu
c3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0KHRoaXJkUGFydHlIb3N0
bmFtZSwgZmFsc2UsIHJ1blRlc3QpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJ1blRlc3QoKTsK
KyAgICB9CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIyNzg2NikKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBj
b3B5KQpAQCAtODA0LDEzICs4MDQsMTMgQEAgd2Via2l0Lm9yZy9iLzE3NjEyMiBtZWRpYS92aWRl
by1jb250cm9scwogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy90aGlyZC1wYXJ0eS1jb29raWUtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9u
Lmh0bWwgWyBQYXNzIF0KIFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0
bWwgWyBQYXNzIFRpbWVvdXQgXQogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9ub24tcHJldmFsZW50LXJlc291cmNlcy1jYW4tYWNjZXNzLWNvb2tpZXMt
aW4tYS10aGlyZC1wYXJ0eS1jb250ZXh0Lmh0bWwgWyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsgXSBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLXBhcnRpdGlvbmluZy10by1yZWRp
cmVjdC5odG1sIFsgUGFzcyBdCiBbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5odG1sIFsgUGFzcyBdCiBbIEhp
Z2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1wYXJ0
aXRpb25pbmctaW4tcmVkaXJlY3QuaHRtbCBbIFBhc3MgXQogWyBIaWdoU2llcnJhKyBdIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3Qu
aHRtbCBbIFBhc3MgXQogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNpc3RlbnQtc3RvcmUuaHRtbCBbIFBhc3Mg
XQogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVh
ci1pbi1tZW1vcnktYW5kLXBlcnNpc3RlbnQtc3RvcmUtb25lLWhvdXIuaHRtbCBbIFBhc3MgXQot
Ci13ZWJraXQub3JnL2IvMTgxOTU4IFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvYWRkLXBhcnRpdGlvbmluZy10by1yZWRpcmVjdC5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KK1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZ3JhbmRmYXRoZXJpbmcuaHRtbCBbIFBhc3MgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8zMzU1
NTc1OT4KIHdlYmtpdC5vcmcvYi8xNzc2MTYgWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvbWVk
aWEvdmlkZW8tYnVmZmVyZWQtcmFuZ2UtY29udGFpbnMtY3VycmVudFRpbWUuaHRtbCBbIFBhc3Mg
VGltZW91dCBdCkBAIC04NzUsOCArODc1LDYgQEAgd2Via2l0Lm9yZy9iLzE4MTgzOSBbIERlYnVn
IF0gaW5zcGVjdG9yLwogCiB3ZWJraXQub3JnL2IvMTgxNzUzIFsgSGlnaFNpZXJyYSBSZWxlYXNl
IF0gaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3VwZGF0ZS1zZXJ2aWNlLXdvcmtlci5odHRwcy5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE4MTQ4MiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvZ3JhbmRmYXRoZXJpbmcuaHRtbCBbIFBhc3MgXQotCiB3ZWJr
aXQub3JnL2IvMTgxODMxIFsgSGlnaFNpZXJyYSBdIGZhc3QvZm9ybXMvc2VhcmNoZmllbGQtaGVp
Z2h0cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE4MTk1NyBbIFJlbGVh
c2UgXSBodHRwL3Rlc3RzL21pc2MvcmVzb3VyY2UtdGltaW5nLXJlc29sdXRpb24uaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>