<?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>152458</bug_id>
          
          <creation_ts>2015-12-18 22:52:13 -0800</creation_ts>
          <short_desc>Split benchmark into two different pages</short_desc>
          <delta_ts>2015-12-23 17:37:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1150509</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-18 22:52:13 -0800</bug_when>
    <thetext>One version is simpler to use, the other has more options</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151163</commentid>
    <comment_count>1</comment_count>
      <attachid>267858</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:21:49 -0800</bug_when>
    <thetext>Created attachment 267858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151164</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-12-23 15:22:08 -0800</bug_when>
    <thetext>&lt;rdar://problem/24002508&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151166</commentid>
    <comment_count>3</comment_count>
      <attachid>267859</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:27:07 -0800</bug_when>
    <thetext>Created attachment 267859
1. Move benchmark resources out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151167</commentid>
    <comment_count>4</comment_count>
      <attachid>267860</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:28:08 -0800</bug_when>
    <thetext>Created attachment 267860
2. Split tests.js into two</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151168</commentid>
    <comment_count>5</comment_count>
      <attachid>267861</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:28:38 -0800</bug_when>
    <thetext>Created attachment 267861
3. Get rid of utilities.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151169</commentid>
    <comment_count>6</comment_count>
      <attachid>267862</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:29:09 -0800</bug_when>
    <thetext>Created attachment 267862
4. Add newer version of harness</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151170</commentid>
    <comment_count>7</comment_count>
      <attachid>267863</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:29:37 -0800</bug_when>
    <thetext>Created attachment 267863
5. A little stylistic cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151172</commentid>
    <comment_count>8</comment_count>
      <attachid>267864</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:31:19 -0800</bug_when>
    <thetext>Created attachment 267864
6. Fix a few fly-by errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151173</commentid>
    <comment_count>9</comment_count>
      <attachid>267865</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:31:45 -0800</bug_when>
    <thetext>Created attachment 267865
7. Make it possible to select</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151175</commentid>
    <comment_count>10</comment_count>
      <attachid>267866</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:32:11 -0800</bug_when>
    <thetext>Created attachment 267866
8. Add tests to &apos;animometer&apos; suite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151177</commentid>
    <comment_count>11</comment_count>
      <attachid>267867</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:32:55 -0800</bug_when>
    <thetext>Created attachment 267867
9. Fix selector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151178</commentid>
    <comment_count>12</comment_count>
      <attachid>267868</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:34:25 -0800</bug_when>
    <thetext>Created attachment 267868
10. Update debug runner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151180</commentid>
    <comment_count>13</comment_count>
      <attachid>267869</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:34:51 -0800</bug_when>
    <thetext>Created attachment 267869
11. Update the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151183</commentid>
    <comment_count>14</comment_count>
      <attachid>267871</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:35:29 -0800</bug_when>
    <thetext>Created attachment 267871
12. Update the structure of the harness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151184</commentid>
    <comment_count>15</comment_count>
      <attachid>267872</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:36:03 -0800</bug_when>
    <thetext>Created attachment 267872
13. Get rid of prefixed flex properties for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151185</commentid>
    <comment_count>16</comment_count>
      <attachid>267873</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:37:05 -0800</bug_when>
    <thetext>Created attachment 267873
14. Adjustment styles for iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151186</commentid>
    <comment_count>17</comment_count>
      <attachid>267874</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:37:26 -0800</bug_when>
    <thetext>Created attachment 267874
15. Adjust styles for iPad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151187</commentid>
    <comment_count>18</comment_count>
      <attachid>267862</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-23 15:37:44 -0800</bug_when>
    <thetext>Comment on attachment 267862
4. Add newer version of harness

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

&gt; PerformanceTests/Animometer/resources/runner/animometer.css:67
&gt; +    border: 2px solid rgb(96, 96, 96);
&gt; +    color: rgb(96, 96, 96);

Shame we can&apos;t use variables!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151188</commentid>
    <comment_count>19</comment_count>
      <attachid>267875</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:37:47 -0800</bug_when>
    <thetext>Created attachment 267875
16. Move Array functions to extensions.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151189</commentid>
    <comment_count>20</comment_count>
      <attachid>267865</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-23 15:39:21 -0800</bug_when>
    <thetext>Comment on attachment 267865
7. Make it possible to select

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

&gt; PerformanceTests/Animometer/resources/runner/animometer.js:92
&gt; +        if (event.charCode != 115) // &apos;s&apos;
&gt; +            return;

Is there any visible text that documents this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151191</commentid>
    <comment_count>21</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 15:40:09 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Comment on attachment 267865 [details]
&gt; 7. Make it possible to select
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267865&amp;action=review
&gt; 
&gt; &gt; PerformanceTests/Animometer/resources/runner/animometer.js:92
&gt; &gt; +        if (event.charCode != 115) // &apos;s&apos;
&gt; &gt; +            return;
&gt; 
&gt; Is there any visible text that documents this?

No, but I do mention it in developer.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151192</commentid>
    <comment_count>22</comment_count>
      <attachid>267866</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-23 15:40:35 -0800</bug_when>
    <thetext>Comment on attachment 267866
8. Add tests to &apos;animometer&apos; suite.

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

&gt; PerformanceTests/Animometer/tests/master/resources/canvas-tests.js:5
&gt; +function CanvasLineSegment(stage) {

Braces on a new line please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151193</commentid>
    <comment_count>23</comment_count>
      <attachid>267867</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-23 15:41:18 -0800</bug_when>
    <thetext>Comment on attachment 267867
9. Fix selector

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

&gt; PerformanceTests/Animometer/resources/debug-runner/animometer.js:15
&gt; +        this.recordTable = new ResultsTable(document.querySelector(&quot;#test-container .results-table&quot;), Headers);

Shouldn&apos;t results-table be an ID if there&apos;s only one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151195</commentid>
    <comment_count>24</comment_count>
      <attachid>267869</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-23 15:42:36 -0800</bug_when>
    <thetext>Comment on attachment 267869
11. Update the tests.

I would like to see new tests, and test changes landed separately from the benchmark harness changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151197</commentid>
    <comment_count>25</comment_count>
      <attachid>267873</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-23 15:44:44 -0800</bug_when>
    <thetext>Comment on attachment 267873
14. Adjustment styles for iOS.

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

&gt; PerformanceTests/Animometer/resources/runner/animometer.css:171
&gt; +        width: calc(100%);
&gt; +        height: calc(100%);

Is that just equivalent to 100%?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151199</commentid>
    <comment_count>26</comment_count>
      <attachid>267875</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-23 15:46:59 -0800</bug_when>
    <thetext>Comment on attachment 267875
16. Move Array functions to extensions.js

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

&gt; PerformanceTests/Animometer/resources/extensions.js:9
&gt; +if (!Array.prototype.fill)  {

Odd spacing.

&gt; PerformanceTests/Animometer/resources/extensions.js:23
&gt; +        for (; k &lt; final; k++) {
&gt; +            object[k] = value;
&gt; +        }

No braces.

&gt; PerformanceTests/Animometer/resources/extensions.js:32
&gt; +        if (this === null)
&gt; +            throw new TypeError(&apos;Array.prototype.find called on null or undefined&apos;);

Why check here, and not for fill?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151209</commentid>
    <comment_count>27</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 16:24:23 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Comment on attachment 267866 [details]
&gt; 8. Add tests to &apos;animometer&apos; suite.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267866&amp;action=review
&gt; 
&gt; &gt; PerformanceTests/Animometer/tests/master/resources/canvas-tests.js:5
&gt; &gt; +function CanvasLineSegment(stage) {
&gt; 
&gt; Braces on a new line please.

Done.

(In reply to comment #23)
&gt; Comment on attachment 267867 [details]
&gt; 9. Fix selector
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267867&amp;action=review
&gt; 
&gt; &gt; PerformanceTests/Animometer/resources/debug-runner/animometer.js:15
&gt; &gt; +        this.recordTable = new ResultsTable(document.querySelector(&quot;#test-container .results-table&quot;), Headers);
&gt; 
&gt; Shouldn&apos;t results-table be an ID if there&apos;s only one?

This gets removed later.

(In reply to comment #24)
&gt; Comment on attachment 267869 [details]
&gt; 11. Update the tests.
&gt; 
&gt; I would like to see new tests, and test changes landed separately from the
&gt; benchmark harness changes.

Will do.

(In reply to comment #25)
&gt; Comment on attachment 267873 [details]
&gt; 14. Adjustment styles for iOS.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267873&amp;action=review
&gt; 
&gt; &gt; PerformanceTests/Animometer/resources/runner/animometer.css:171
&gt; &gt; +        width: calc(100%);
&gt; &gt; +        height: calc(100%);
&gt; 
&gt; Is that just equivalent to 100%?

Yes. Fixed.

(In reply to comment #26)
&gt; Comment on attachment 267875 [details]
&gt; 16. Move Array functions to extensions.js
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267875&amp;action=review
&gt; 
&gt; &gt; PerformanceTests/Animometer/resources/extensions.js:9
&gt; &gt; +if (!Array.prototype.fill)  {
&gt; 
&gt; Odd spacing.

Fixed.

&gt; 
&gt; &gt; PerformanceTests/Animometer/resources/extensions.js:23
&gt; &gt; +        for (; k &lt; final; k++) {
&gt; &gt; +            object[k] = value;
&gt; &gt; +        }
&gt; 
&gt; No braces.

Fixed.

&gt; &gt; PerformanceTests/Animometer/resources/extensions.js:32
&gt; &gt; +        if (this === null)
&gt; &gt; +            throw new TypeError(&apos;Array.prototype.find called on null or undefined&apos;);
&gt; 
&gt; Why check here, and not for fill?

It should. Added. The check also needs to be fixed to ==.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151213</commentid>
    <comment_count>28</comment_count>
      <attachid>267878</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 16:48:36 -0800</bug_when>
    <thetext>Created attachment 267878
17. Follow-up patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151220</commentid>
    <comment_count>29</comment_count>
      <attachid>267881</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 17:17:50 -0800</bug_when>
    <thetext>Created attachment 267881
Patch to commit; harness</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151221</commentid>
    <comment_count>30</comment_count>
      <attachid>267882</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 17:18:36 -0800</bug_when>
    <thetext>Created attachment 267882
Patch to commit; tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151222</commentid>
    <comment_count>31</comment_count>
      <attachid>267881</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-23 17:26:04 -0800</bug_when>
    <thetext>Comment on attachment 267881
Patch to commit; harness

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

&gt; PerformanceTests/Animometer/resources/debug-runner/animometer.js:25
&gt; +window.optionsManager =
&gt; +{

brace on same line.

&gt; PerformanceTests/Animometer/resources/debug-runner/benchmark-runner.js:140
&gt; +    if (state.isFirstTest()) {
&gt; +        this._appendFrame();
&gt; +    }

No braces.

&gt; PerformanceTests/Animometer/resources/runner/animometer.js:29
&gt; +window.sectionsManager =
&gt; +{

brace on same line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151223</commentid>
    <comment_count>32</comment_count>
      <attachid>267882</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-23 17:27:51 -0800</bug_when>
    <thetext>Comment on attachment 267882
Patch to commit; tests

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

&gt; PerformanceTests/Animometer/tests/master/resources/canvas-stage.js:9
&gt; +}
&gt; +SimpleCanvasStage.prototype = Object.create(Stage.prototype);

I would prefer blank lines after functions.

&gt; PerformanceTests/Animometer/tests/master/resources/canvas-stage.js:58
&gt; +function SimpleCanvasBenchmark(suite, test, options, progressBar) {
&gt; +    StageBenchmark.call(this, suite, test, options, progressBar);
&gt; +}
&gt; +SimpleCanvasBenchmark.prototype = Object.create(StageBenchmark.prototype);
&gt; +SimpleCanvasBenchmark.prototype.constructor = SimpleCanvasBenchmark;
&gt; +SimpleCanvasBenchmark.prototype.createAnimator = function() {

Braces on new line.

&gt; PerformanceTests/Animometer/tests/master/resources/canvas-tests.js:221
&gt; +})();

LOL JS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151224</commentid>
    <comment_count>33</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 17:32:22 -0800</bug_when>
    <thetext>Committed r194407: &lt;http://trac.webkit.org/changeset/194407&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151225</commentid>
    <comment_count>34</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-23 17:37:15 -0800</bug_when>
    <thetext>Committed r194408: &lt;http://trac.webkit.org/changeset/194408&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267858</attachid>
            <date>2015-12-23 15:21:49 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152458-20151223152112.patch</filename>
            <type>text/plain</type>
            <size>496421</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MzY0CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
ZGV2ZWxvcGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZkZTE1NGQ0ZjVjNjkxYjkwNzQxMWY4YjAzN2Y4
NGVlZTk2NTVjNgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9kZXZlbG9wZXIuaHRtbApAQCAtMCwwICsxLDk5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmlj
ZS13aWR0aCwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJyZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzIj4KKyAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3MiPgor
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KKwor
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzIiBjaGFyc2V0PSJ1dGYt
OCI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWJ1Zy1ydW5uZXIvdGVz
dHMuanMiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3J1bm5lci9hbmltb21ldGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzIj48L3NjcmlwdD4KKworICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVidWctcnVubmVyL2QzLm1pbi5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWJ1Zy1ydW5uZXIvZ3JhcGgu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPG1haW4+CisgICAgICAgIDxocj4K
KyAgICAgICAgPHNlY3Rpb24gaWQ9ImludHJvIiBjbGFzcz0ic2VsZWN0ZWQiPgorICAgICAgICAg
ICAgPGgxPkFuaW1vbWV0ZXI8L2gxPgorICAgICAgICAgICAgPGRpdj4KKyAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJzdWl0ZXMiPgorICAgICAgICAgICAgICAgICAgICA8aDI+U3VpdGVzOjwvaDI+
CisgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idHJlZSI+PC91bD4KKyAgICAgICAgICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJvcHRpb25zIj4KKyAgICAgICAg
ICAgICAgICAgICAgPGgyPk9wdGlvbnM6PC9oMj4KKyAgICAgICAgICAgICAgICAgICAgPGZvcm0g
bmFtZT0iYmVuY2htYXJrLW9wdGlvbnMiPgorICAgICAgICAgICAgICAgICAgICA8dWw+CisgICAg
ICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5UZXN0
IGxlbmd0aDogPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9InRlc3QtaW50ZXJ2YWwiIHZhbHVlPSIx
MCI+IHNlY29uZHMgZWFjaDwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAgIDwvbGk+CisgICAg
ICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5EaXNwbGF5
OjwvaDM+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFtZT0iZGlzcGxheSIgdHlwZT0icmFkaW8iIHZh
bHVlPSJtaW5pbWFsIiBjaGVja2VkPiBNaW5pbWFsPC9sYWJlbD48L2xpPgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0IG5hbWU9ImRpc3BsYXkiIHR5cGU9InJh
ZGlvIiB2YWx1ZT0icHJvZ3Jlc3MtYmFyIiBjaGVja2VkPiBQcm9ncmVzcyBiYXI8L2xhYmVsPjwv
bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICA8
L2xpPgorICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8
aDM+QWRqdXN0aW5nIHRoZSB0ZXN0IGNvbXBsZXhpdHk6PC9oMz4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1
dCBuYW1lPSJhZGp1c3RtZW50IiB0eXBlPSJyYWRpbyIgdmFsdWU9ImZpeGVkIj4gS2VlcCBjb25z
dGFudDwvbGFiZWw+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVs
PjxpbnB1dCBuYW1lPSJhZGp1c3RtZW50IiB0eXBlPSJyYWRpbyIgdmFsdWU9ImZpeGVkLWFmdGVy
LXdhcm11cCI+IEtlZXAgY29uc3RhbnQgYWZ0ZXIgd2FybXVwIHRvIHRhcmdldCBGUFM8L2xhYmVs
PjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFt
ZT0iYWRqdXN0bWVudCIgdHlwZT0icmFkaW8iIHZhbHVlPSJhZGFwdGl2ZSIgY2hlY2tlZD4gTWFp
bnRhaW4gdGFyZ2V0IEZQUzwvbGFiZWw+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwv
dWw+CisgICAgICAgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgICAgICAgICAgIDxsaT4K
KyAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5UYXJnZXQgZnJhbWUgcmF0ZTogPGlucHV0
IHR5cGU9Im51bWJlciIgaWQ9ImZyYW1lLXJhdGUiIHZhbHVlPSI1MCI+IEZQUzwvbGFiZWw+Cisg
ICAgICAgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJlc3Rp
bWF0ZWQtZnJhbWUtcmF0ZSIgY2hlY2tlZD4gRmlsdGVyIGZyYW1lIHJhdGUgY2FsY3VsYXRpb248
L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICAgICAgICA8
L3VsPgorICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CisgICAgICAgICAgICAgICAgPC9kaXY+
CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iYmVuY2ht
YXJrQ29udHJvbGxlci5zdGFydEJlbmNobWFyaygpIj5TdGFydCBUZXN0PC9idXR0b24+CisgICAg
ICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPHNlY3Rpb24gaWQ9InRlc3QtY29udGFpbmVyIj4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9InJ1bm5pbmctdGVzdCIgY2xhc3M9ImZyYW1lLWNvbnRhaW5lciI+
PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcyI+CisgICAgICAgICAgICAgICAg
PGRpdiBpZD0icHJvZ3Jlc3MtY29tcGxldGVkIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2Pgor
ICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxzZWN0aW9uIGlkPSJyZXN1bHRzIj4KKyAgICAg
ICAgICAgIDxoMT5Bbmltb21ldGVyIHNjb3JlPC9oMT4KKyAgICAgICAgICAgIDxwIGNsYXNzPSJz
Y29yZSI+PC9wPgorICAgICAgICAgICAgPGRpdiBpZD0icmVzdWx0cy10YWJsZXMiPgorICAgICAg
ICAgICAgICAgIDxkaXY+CisgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBpZD0icmVzdWx0cy1z
Y29yZSI+PC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGlkPSJyZXN1bHRzLWRh
dGEiPjwvdGFibGU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPHRh
YmxlIGlkPSJyZXN1bHRzLWhlYWRlciI+PC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAg
ICAgICAgICAgPGRpdiBpZD0icmVzdWx0cy1qc29uIj4KKyAgICAgICAgICAgICAgICBKU09OOgor
ICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSByb3dzPTEgb25jbGljaz0idGhpcy5mb2N1cygpO3Ro
aXMuc2VsZWN0KCkiIHJlYWRvbmx5PjwvdGV4dGFyZWE+CisgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgICAgIDxidXR0b24gb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zdGFydEJlbmNo
bWFyaygpIj5UZXN0IEFnYWluPC9idXR0b24+CisgICAgICAgICAgICA8cD4ncyc6IFNlbGVjdCBk
aWZmZXJlbnQgZGF0YSBmb3IgY29weS9wYXN0ZTwvcD4KKyAgICAgICAgPC9zZWN0aW9uPgorICAg
ICAgICA8c2VjdGlvbiBpZD0idGVzdC1ncmFwaCI+CisgICAgICAgICAgICA8aGVhZGVyPgorICAg
ICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVz
dWx0cygpIj4mbHQ7IFJlc3VsdHM8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8aDE+R3JhcGg6
PC9oMT4KKyAgICAgICAgICAgIDwvaGVhZGVyPgorICAgICAgICAgICAgPHAgY2xhc3M9InNjb3Jl
Ij48L3A+CisgICAgICAgICAgICA8cCBjbGFzcz0ibWVhbiI+PC9wPgorICAgICAgICAgICAgPGRp
diBpZD0idGVzdC1ncmFwaC1kYXRhIj48L2Rpdj4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgICAg
ICA8aHI+CisgICAgPC9tYWluPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzMwMWUzMmFkYTU5NWQ3M2E0YzU2NjRiZjY5
ZmVjMWNhNGE4NmQzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3
cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRl
ci5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiIGNoYXJzZXQ9InV0Zi04Ij48L3Nj
cmlwdD4KKworICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpzIj48
L3NjcmlwdD4KKworICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNo
bWFyay1ydW5uZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPG1haW4+Cisg
ICAgICAgIDxocj4KKyAgICAgICAgPHNlY3Rpb24gaWQ9ImludHJvIiBjbGFzcz0ic2VsZWN0ZWQi
PgorICAgICAgICAgICAgPGgxPkFuaW1vbWV0ZXI8L2gxPgorICAgICAgICAgICAgPHA+QW5pbW9t
ZXRlciBpcyBhIGdyYXBoaWNzIGJlbmNobWFyayB0aGF0IG1lYXN1cmVzIGEgYnJvd3NlcuKAmXMg
Y2FwYWJpbGl0eSB0byBhbmltYXRlIGNvbXBsZXggc2NlbmVzIGF0IGEgdGFyZ2V0IGZyYW1lIHJh
dGUuPC9wPgorICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVy
LnN0YXJ0QmVuY2htYXJrKCkiPlJ1biBiZW5jaG1hcms8L2J1dHRvbj4KKyAgICAgICAgPC9zZWN0
aW9uPgorICAgICAgICA8c2VjdGlvbiBpZD0idGVzdC1jb250YWluZXIiIGNsYXNzPSJmcmFtZS1j
b250YWluZXIiPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxzZWN0aW9uIGlkPSJyZXN1
bHRzIj4KKyAgICAgICAgICAgIDxoMT5Bbmltb21ldGVyIHNjb3JlPC9oMT4KKyAgICAgICAgICAg
IDxwIGNsYXNzPSJzY29yZSI+PC9wPgorICAgICAgICAgICAgPGRpdiBpZD0icmVzdWx0cy10YWJs
ZXMiPgorICAgICAgICAgICAgICAgIDx0YWJsZSBpZD0icmVzdWx0cy1zY29yZSI+PC90YWJsZT4K
KyAgICAgICAgICAgICAgICA8dGFibGUgaWQ9InJlc3VsdHMtaGVhZGVyIj48L3RhYmxlPgorICAg
ICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImJlbmNobWFya0Nv
bnRyb2xsZXIuc3RhcnRCZW5jaG1hcmsoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPgorICAgICAgICA8
L3NlY3Rpb24+CisgICAgICAgIDxocj4KKyAgICA8L21haW4+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29yaXRo
bS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpz
CmluZGV4IDNkMzk3MWYzYzU5ZDQ2ZWQ0ZDNhZTkzZDY4OTdjYWU4NzFlZmJkZWMuLjBlZjIxYTlj
ZDA3NTJhNzQxZWE0NThhZmEzMTE5MjVkZmQ2ZjFkNjIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzCkBAIC0xLDExICsxLDMgQEAK
LUFycmF5LnByb3RvdHlwZS5zd2FwID0gZnVuY3Rpb24oaSwgaikKLXsKLSAgICB2YXIgdCA9IHRo
aXNbaV07Ci0gICAgdGhpc1tpXSA9IHRoaXNbal07Ci0gICAgdGhpc1tqXSA9IHQ7Ci0gICAgcmV0
dXJuIHRoaXM7Ci19Ci0KIGZ1bmN0aW9uIEhlYXAobWF4U2l6ZSwgY29tcGFyZSkKIHsKICAgICB0
aGlzLl9tYXhTaXplID0gbWF4U2l6ZTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjRmODJiZWE1MjJkZTFiZjI5ODkyODdhYmQ0YmY2Y2M0NzM3MmY0MwotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVi
dWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzCkBAIC0wLDAgKzEsMzkxIEBACitib2R5IHsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTYsIDk2LCA5Nik7CisgICAgY29sb3I6IHJnYigyMzUsIDIz
NSwgMjM1KTsKK30KKworaDEgeworICAgIG1hcmdpbjogNXZoIDA7Cit9CisKK2J1dHRvbiB7Cisg
ICAgYm9yZGVyOiAycHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGNvbG9yOiByZ2Io
MjM1LCAyMzUsIDIzNSk7Cit9CisKK2J1dHRvbjpkaXNhYmxlZCB7CisgICAgYm9yZGVyLWNvbG9y
OiByZ2JhKDIzNSwgMjM1LCAyMzUsIC41KTsKKyAgICBjb2xvcjogcmdiYSgyMzUsIDIzNSwgMjM1
LCAuNSk7Cit9CisKK2J1dHRvbjpob3ZlciB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgy
NTUsIDI1NSwgMjU1LCAuMSk7CisgICAgY3Vyc29yOiBwb2ludGVyOworfQorCitidXR0b246YWN0
aXZlIHsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1
NSwgMjU1LCAyNTUsIC4yKTsKK30KKworQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lk
dGg6IDE4MDBweCkgeworICAgIHNlY3Rpb24geworICAgICAgICB3aWR0aDogMTYwMHB4OworICAg
ICAgICBoZWlnaHQ6IDgwMHB4OworICAgIH0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K
Ky8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyZWUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisudHJl
ZSB7CisgICAgcGFkZGluZzogMDsKKyAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7Cit9CisKKy50
cmVlIC5leHBhbmQtYnV0dG9uIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgY2xpcDog
cmVjdCgwLCAwLCAwLCAwKTsKK30KKworLnRyZWUgLmV4cGFuZC1idXR0b24gfiB1bCB7CisgICAg
ZGlzcGxheTogbm9uZTsKK30KKworLnRyZWUgLmV4cGFuZC1idXR0b246Y2hlY2tlZCB+IHVsIHsK
KyAgICBkaXNwbGF5OiBibG9jazsKK30KKworLnRyZWUgdWwgeworICAgIGxpc3Qtc3R5bGUtdHlw
ZTpub25lOworfQorCisudHJlZSBsaSB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHBh
ZGRpbmc6IDAgMCAxZW0gMWVtOworfQorCisudHJlZSB1bCBsaSB7CisgICAgbGlzdC1zdHlsZTpu
b25lOworICAgIHBhZGRpbmc6IDFlbSAwIDAgMGVtOworfQorCisudHJlZSA+IGxpOmxhc3QtY2hp
bGQgeworICAgIHBhZGRpbmctYm90dG9tOiAwOworfQorCisudHJlZS1sYWJlbCB7CisgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKKyAgZGlzcGxheTogaW5saW5lLWJsb2NrOworfQorCitsYWJlbC50cmVl
LWxhYmVsIHsKKyAgICBjdXJzb3I6IHBvaW50ZXI7Cit9CisKKy50cmVlID4gbGkgPiBsYWJlbC50
cmVlLWxhYmVsOmJlZm9yZSB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHotaW5kZXg6
IDE7CisgICAgZmxvYXQ6IGxlZnQ7CisgICAgbWFyZ2luOiAwIDAgMCAtMmVtOworICAgIHdpZHRo
OiAxZW07CisgICAgaGVpZ2h0OiAxZW07CisgICAgY29udGVudDogJ1wyNUJBJzsKKyAgICB0ZXh0
LWFsaWduOiBjZW50ZXI7CisgICAgbGluZS1oZWlnaHQ6IDIuNWVtOworICAgIGZvbnQtc2l6ZTog
LjVlbTsKK30KKworLnRyZWUgPiBsaSA+IDpjaGVja2VkIH4gbGFiZWwudHJlZS1sYWJlbDpiZWZv
cmUgeworICAgIGNvbnRlbnQ6ICdcMjVCQyc7Cit9CisKK0BtZWRpYSBzY3JlZW4gYW5kIChtYXgt
ZGV2aWNlLXdpZHRoOiA0MTRweCkgeworICAgIC50cmVlIHsKKyAgICAgICAgcGFkZGluZy1sZWZ0
OiAxZW07CisgICAgfQorICAgIC50cmVlID4gbGkgPiBsYWJlbC50cmVlLWxhYmVsOmJlZm9yZSB7
CisgICAgICAgIGZvbnQtc2l6ZTogMWVtOworICAgICAgICBtYXJnaW4tbGVmdDogLTEuNzVlbTsK
KyAgICAgICAgbGluZS1oZWlnaHQ6IDFlbTsKKyAgICB9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludHJvIFNlY3Rpb24g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K
KworI2ludHJvIHsKKyAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOworICAgIGp1c3RpZnktY29u
dGVudDogZmxleC1zdGFydDsKKyAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisKKyAgICBtaW4t
aGVpZ2h0OiA2MDBweDsKKyAgICBoZWlnaHQ6IGF1dG87Cit9CisKKyNpbnRybyBoMiB7CisgICAg
bWFyZ2luLXRvcDogMDsKKyAgICBmb250LXNpemU6IDEuMmVtOworfQorCisjaW50cm8gPiBkaXYg
eworICAgIHdpZHRoOiAxMDAlOworICAgIG1hcmdpbjogMmVtIDA7CisgICAgZmxleC1kaXJlY3Rp
b246IHJvdzsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3Rh
cnQ7Cit9CisKKyNzdWl0ZXMgeworICAgIHBhZGRpbmctbGVmdDogMTV2dzsKKyAgICBmbGV4OiAw
IDEgNDAlOworfQorCisjb3B0aW9ucyB7CisgICAgZmxleDogMSAxIGF1dG87Cit9CisKKyNpbnRy
byBpbnB1dFt0eXBlPSJudW1iZXIiXSB7CisgICAgd2lkdGg6IDUwcHg7Cit9CisgCisjc3VpdGVz
IGlucHV0W3R5cGU9Im51bWJlciJdIHsKKyAgICBkaXNwbGF5OiBub25lOworICAgIGZsb2F0OiBy
aWdodDsKK30KKworI3N1aXRlcyBpbnB1dFt0eXBlPSJudW1iZXIiXS5zZWxlY3RlZCB7CisgICAg
ZGlzcGxheTogaW5saW5lOworICAgIG1hcmdpbjogMDsKK30KKworI3N1aXRlcyB1bCB1bCB7Cisg
ICAgZm9udC1zaXplOiAuOGVtOworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwIDAgMCAx
ZW07Cit9CisKKyNvcHRpb25zIHVsIHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsK
KyAgICBsaXN0LXN0eWxlOiBub25lOworfQorCisjb3B0aW9ucyBoMyB7CisgICAgZm9udC1zaXpl
OiAxZW07CisgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CisgICAgbWFyZ2luOiAwIDAgLjNlbSAw
OworICAgIHBhZGRpbmc6IDA7Cit9CisKKyNvcHRpb25zID4gZm9ybSA+IHVsID4gbGkgeworICAg
IHBhZGRpbmc6IDAgMCAxZW0gMDsKK30KKworI29wdGlvbnMgdWwgdWwgeworICAgIHBhZGRpbmc6
IDA7Cit9CisKKyNvcHRpb25zIGxpIHsKKyAgICBwYWRkaW5nOiAuMWVtIDA7Cit9CisKK0BtZWRp
YSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoOiAxODAwcHgpIHsKKyAgICAjaW50cm8gewor
ICAgICAgICBtaW4taGVpZ2h0OiA4MDBweDsKKyAgICB9Cit9CisKK0BtZWRpYSBzY3JlZW4gYW5k
IChtYXgtZGV2aWNlLXdpZHRoOiA0MTRweCkgeworICAgICNpbnRybyB7CisgICAgICAgIG1pbi1o
ZWlnaHQ6IDEwMCU7CisgICAgfQorCisgICAgI2ludHJvID4gZGl2IHsKKyAgICAgICAgZmxleC1k
aXJlY3Rpb246IGNvbHVtbjsKKyAgICB9CisKKyAgICAjc3VpdGVzLAorICAgICNvcHRpb25zIHsK
KyAgICAgICAgcGFkZGluZzogMCA1cHg7CisgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgZmxl
eDogMCAwIGF1dG87CisgICAgfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogICAg
ICAgICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIFNlY3Rpb24gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyN0ZXN0LWNvbnRh
aW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorCisjcnVubmluZy10ZXN0IHsKKyAg
ICBkaXNwbGF5OiBmbGV4OworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CisgICAganVzdGlmeS1j
b250ZW50OiBjZW50ZXI7Cit9CisKKyNwcm9ncmVzcyB7CisgICAgZGlzcGxheTogbm9uZTsKK30K
KworLmRpc3BsYXktcHJvZ3Jlc3MtYmFyICNwcm9ncmVzcyB7CisgICAgZGlzcGxheTogYmxvY2s7
CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIGhl
aWdodDogNnB4OworICAgIHdpZHRoOiAxMDAlOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigx
MjgsIDEyOCwgMTI4KTsKK30KKworLmRpc3BsYXktcHJvZ3Jlc3MtYmFyICNwcm9ncmVzcy1jb21w
bGV0ZWQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDog
MDsKKyAgICBoZWlnaHQ6IDZweDsKKyAgICB3aWR0aDogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMjM1LCA5NiwgMzIpOworfQorCitAbWVkaWEgc2NyZWVuIGFuZCAobWluLWRldmljZS13
aWR0aDogMTgwMHB4KSB7CisgICAgLmZyYW1lLWNvbnRhaW5lciA+IGlmcmFtZSB7CisgICAgICAg
IHdpZHRoOiAxNjAwcHg7CisgICAgICAgIGhlaWdodDogODAwcHg7CisgICAgfQorfQorCisvKiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRz
IFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tICovCisKKyNyZXN1bHRzIGgxLCAjdGVzdC1ncmFwaCBoMSB7CisgICAgZm9udC1z
aXplOiAyZW07Cit9CisKKy5zY29yZSB7CisgICAgZm9udC1zaXplOiAzZW07Cit9CisKKy5tZWFu
IHsKKyAgICBtYXJnaW4tdG9wOiAwOworICAgIG1hcmdpbi1ib3R0b206IDFlbTsKKyAgICBmb250
LXNpemU6IDEuNWVtOworICAgIGZvbnQtd2VpZ2h0OiA0MDA7Cit9CisKKyNyZXN1bHRzLWRhdGEg
LmF2ZXJhZ2UgeworICAgIHBhZGRpbmctbGVmdDogMWVtOworICAgIHRleHQtYWxpZ246IHJpZ2h0
OworfQorCisjcmVzdWx0cy1kYXRhIC5zdGRldiB7CisgICAgdGV4dC1hbGlnbjogbGVmdDsKKyAg
ICBwYWRkaW5nLWxlZnQ6IC4yNWVtOworfQorCisjcmVzdWx0cy1kYXRhIGJ1dHRvbi5zbWFsbC1i
dXR0b24geworICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjM1LCAyMzUsIDIzNSwgLjkpOwor
ICAgIGNvbG9yOiByZ2JhKDIzNSwgMjM1LCAyMzUsIC45KTsKKyAgICBib3JkZXItcmFkaXVzOiAy
cHg7CisgICAgcGFkZGluZzogMXB4IDRweDsKKyAgICBtYXJnaW46IDAgMCAwIDFlbTsKKyAgICBm
b250LXNpemU6IDlweDsKK30KKworI3Jlc3VsdHMtZGF0YSBidXR0b24uc21hbGwtYnV0dG9uOmFj
dGl2ZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMzUsIDIzNSwgMjM1LCAuMik7Cisg
ICAgY29sb3I6IGluaGVyaXQ7Cit9CisKKyNyZXN1bHRzLXRhYmxlcyB0ZC5ub2lzeS1yZXN1bHRz
IHsKKyAgICBjb2xvcjogcmdiKDI1NSwgMTA0LCAxMDQpOworfQorCisjcmVzdWx0cy10YWJsZXMg
ZGl2IHsKKyAgICBkaXJlY3Rpb246IGx0cjsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGZsZXgt
ZGlyZWN0aW9uOiByb3c7Cit9CisKKyNyZXN1bHRzLWpzb24geworICAgIG1hcmdpbi1ib3R0b206
IDNlbTsKK30KKworI3Jlc3VsdHMtanNvbiB0ZXh0YXJlYSB7CisgICAgdmVydGljYWwtYWxpZ246
IHN1YjsKK30KKworI3Rlc3QtZ3JhcGggeworICAgIGZsZXg6IDEgMCBjYWxjKDEwMCUgLSA0MHB4
KTsKK30KKworI3Rlc3QtZ3JhcGggaDEgeworICAgIG1hcmdpbi1ib3R0b206IDA7Cit9CisKKyN0
ZXN0LWdyYXBoIGhlYWRlciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHdpZHRoOiAx
MDAlOworfQorCisjdGVzdC1ncmFwaCBoZWFkZXIgYnV0dG9uIHsKKyAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgdG9wOiAxLjVlbTsKKyAgICBsZWZ0OiAwOworICAgIGJvcmRlci13aWR0aDog
MXB4OworICAgIGZvbnQtc2l6ZTogMWVtOworICAgIHBhZGRpbmc6IC41ZW0gMWVtOworfQorCisj
dGVzdC1ncmFwaC1kYXRhIHsKKyAgICBmbGV4OiAxIDEgYXV0bzsKKyAgICBhbGlnbi1zZWxmOiBz
dHJldGNoOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogICAgICAgICAgICAgICAg
ICAgICAgICAgICBHcmFwaCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyN0ZXN0LWdyYXBoLWRhdGEgeworICAg
IGZvbnQ6IDEwcHggc2Fucy1zZXJpZjsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOwor
fQorCisjdGVzdC1ncmFwaC1kYXRhID4gc3ZnIHsKKyAgICBmaWxsOiBub25lOworfQorCisuYXhp
cyBwYXRoLAorLmF4aXMgbGluZSB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6ICM5OTk5
OTk7CisgICAgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOworfQorCisubGVmdC1zYW1wbGVz
IHsKKyAgICBzdHJva2U6ICM3QURENDk7CisgICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKK30KKwor
LnJpZ2h0LXNhbXBsZXMgeworICAgIHN0cm9rZTogI0ZBNDkyNTsKKyAgICBzdHJva2Utd2lkdGg6
IDEuNXB4OworfQorCisuc2FtcGxlLXRpbWUgeworICAgIHN0cm9rZTogIzU0OTNENjsKK30KKwor
LmxlZnQtbWVhbiB7CisgICAgc3Ryb2tlOiAjN0FERDQ5OworICAgIG9wYWNpdHk6IC44OworfQor
CisucmlnaHQtbWVhbiB7CisgICAgc3Ryb2tlOiAjRkE0OTI1OworICAgIG9wYWNpdHk6IC44Owor
fQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1
Zy1ydW5uZXIvYW5pbW9tZXRlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhmZDA2N2ZmN2Iz
OTQ4ODg4Yzg0YjkyMzJiOTU1M2I4NDM1NWIxOAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanMK
QEAgLTAsMCArMSwzNjIgQEAKK1V0aWxpdGllcy5leHRlbmRPYmplY3Qod2luZG93LmJlbmNobWFy
a1J1bm5lckNsaWVudCwgeworICAgIHRlc3RzQ291bnQ6IG51bGwsCisgICAgcHJvZ3Jlc3NCYXI6
IG51bGwsCisKKyAgICBkaWRSdW5UZXN0OiBmdW5jdGlvbiAoKQorICAgIHsKKyAgICAgICAgdGhp
cy5wcm9ncmVzc0Jhci5pbmNSYW5nZSgpOworICAgIH0sCisgICAgCisgICAgd2lsbFN0YXJ0Rmly
c3RJdGVyYXRpb246IGZ1bmN0aW9uICgpCisgICAgeworICAgICAgICB0aGlzLnJlc3VsdHMgPSBu
ZXcgUmVzdWx0c0Rhc2hib2FyZCgpOworICAgICAgICB0aGlzLnByb2dyZXNzQmFyID0gbmV3IFBy
b2dyZXNzQmFyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9ncmVzcy1jb21wbGV0ZWQiKSwg
dGhpcy50ZXN0c0NvdW50KTsKKyAgICB9Cit9KTsKKworVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh3
aW5kb3cuc2VjdGlvbnNNYW5hZ2VyLCB7CisgICAgc2V0U2VjdGlvbkhlYWRlcjogZnVuY3Rpb24o
c2VjdGlvbklkZW50aWZpZXIsIHRpdGxlKQorICAgIHsKKyAgICAgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiIyIgKyBzZWN0aW9uSWRlbnRpZmllciArICIgaDEiKS50ZXh0Q29udGVudCA9IHRp
dGxlOworICAgIH0KK30pOworCit3aW5kb3cub3B0aW9uc01hbmFnZXIgPQoreworICAgIHZhbHVl
Rm9yT3B0aW9uOiBmdW5jdGlvbihuYW1lKQorICAgIHsKKyAgICAgICAgdmFyIGZvcm1FbGVtZW50
ID0gZG9jdW1lbnQuZm9ybXNbImJlbmNobWFyay1vcHRpb25zIl0uZWxlbWVudHNbbmFtZV07Cisg
ICAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09ICJjaGVja2JveCIpCisgICAgICAgICAgICBy
ZXR1cm4gZm9ybUVsZW1lbnQuY2hlY2tlZDsKKyAgICAgICAgcmV0dXJuIGZvcm1FbGVtZW50LnZh
bHVlOworICAgIH0sCisgICAgCisgICAgdXBkYXRlVUlGcm9tTG9jYWxTdG9yYWdlOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB2YXIgZm9ybUVsZW1lbnRzID0gZG9jdW1lbnQuZm9ybXNbImJl
bmNobWFyay1vcHRpb25zIl0uZWxlbWVudHM7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBmb3JtRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBmb3JtRWxlbWVu
dCA9IGZvcm1FbGVtZW50c1tpXTsKKyAgICAgICAgICAgIHZhciBuYW1lID0gZm9ybUVsZW1lbnQu
aWQgfHwgZm9ybUVsZW1lbnQubmFtZTsKKyAgICAgICAgICAgIHZhciB0eXBlID0gZm9ybUVsZW1l
bnQudHlwZTsKKworICAgICAgICAgICAgdmFyIHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0o
bmFtZSk7CisgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIGlmICh0eXBlID09ICJudW1iZXIiKQorICAgICAgICAg
ICAgICAgIGZvcm1FbGVtZW50c1tuYW1lXS52YWx1ZSA9ICt2YWx1ZTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKHR5cGUgPT0gImNoZWNrYm94IikKKyAgICAgICAgICAgICAgICBmb3JtRWxlbWVudHNb
bmFtZV0uY2hlY2tlZCA9IHZhbHVlID09ICJ0cnVlIjsKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5
cGUgPT0gInJhZGlvIikKKyAgICAgICAgICAgICAgICBmb3JtRWxlbWVudHNbbmFtZV0udmFsdWUg
PSB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICB1cGRhdGVMb2NhbFN0b3JhZ2VGcm9t
VUk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBmb3JtRWxlbWVudHMgPSBkb2N1bWVu
dC5mb3Jtc1siYmVuY2htYXJrLW9wdGlvbnMiXS5lbGVtZW50czsKKyAgICAgICAgdmFyIG9wdGlv
bnMgPSB7fTsgICAgICAgIAorCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm9ybUVsZW1l
bnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgZm9ybUVsZW1lbnQgPSBmb3JtRWxl
bWVudHNbaV07CisgICAgICAgICAgICB2YXIgbmFtZSA9IGZvcm1FbGVtZW50LmlkIHx8IGZvcm1F
bGVtZW50Lm5hbWU7CisgICAgICAgICAgICB2YXIgdHlwZSA9IGZvcm1FbGVtZW50LnR5cGU7CisK
KyAgICAgICAgICAgIGlmICh0eXBlID09ICJudW1iZXIiKQorICAgICAgICAgICAgICAgIG9wdGlv
bnNbbmFtZV0gPSBmb3JtRWxlbWVudC52YWx1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUg
PT0gImNoZWNrYm94IikKKyAgICAgICAgICAgICAgICBvcHRpb25zW25hbWVdID0gZm9ybUVsZW1l
bnQuY2hlY2tlZDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInJhZGlvIikKKyAgICAg
ICAgICAgICAgICBvcHRpb25zW25hbWVdID0gZm9ybUVsZW1lbnRzW25hbWVdLnZhbHVlOworICAg
IAorICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgb3B0aW9uc1tuYW1lXSk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBvcHRpb25zOworICAgIH0KK30K
Kword2luZG93LnN1aXRlc01hbmFnZXIgPQoreworICAgIF90cmVlRWxlbWVudDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzdWl0ZXMg
PiAudHJlZSIpOworICAgIH0sCisgICAgCisgICAgX3N1aXRlc0VsZW1lbnRzOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI3N1aXRl
cyA+IHVsID4gbGkiKTsKKyAgICB9LAorICAgIAorICAgIF9jaGVja2JveEVsZW1lbnQ6IGZ1bmN0
aW9uKGVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gZWxlbWVudC5xdWVyeVNlbGVjdG9y
KCJpbnB1dFt0eXBlPSdjaGVja2JveCddOm5vdCguZXhwYW5kLWJ1dHRvbikiKTsKKyAgICB9LAor
CisgICAgX2VkaXRFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGVsZW1lbnQucXVlcnlTZWxlY3RvcigiaW5wdXRbdHlwZT0nbnVtYmVyJ10iKTsKKyAgICB9
LAorCisgICAgX2VkaXRzRWxlbWVudHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjc3VpdGVzIGlucHV0W3R5cGU9J251bWJlcidd
Iik7CisgICAgfSwKKyAgICAgICAgCisgICAgX2xvY2FsU3RvcmFnZU5hbWVGb3JUZXN0OiBmdW5j
dGlvbihzdWl0ZU5hbWUsIHRlc3ROYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1aXRlTmFt
ZSArICIvIiArIHRlc3ROYW1lOworICAgIH0sCisKKyAgICBfdXBkYXRlU3VpdGVDaGVja2JveFN0
YXRlOiBmdW5jdGlvbihzdWl0ZUNoZWNrYm94KQorICAgIHsKKyAgICAgICAgdmFyIG51bWJlckVu
YWJsZWRUZXN0cyA9IDA7CisgICAgICAgIHN1aXRlQ2hlY2tib3gudGVzdHNFbGVtZW50cy5mb3JF
YWNoKGZ1bmN0aW9uKHRlc3RFbGVtZW50KSB7CisgICAgICAgICAgICB2YXIgdGVzdENoZWNrYm94
ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHRlc3RFbGVtZW50KTsKKyAgICAgICAgICAgIGlmICh0
ZXN0Q2hlY2tib3guY2hlY2tlZCkKKyAgICAgICAgICAgICAgICArK251bWJlckVuYWJsZWRUZXN0
czsKKyAgICAgICAgfSwgdGhpcyk7CisgICAgICAgIHN1aXRlQ2hlY2tib3guY2hlY2tlZCA9IG51
bWJlckVuYWJsZWRUZXN0cyA+IDA7CisgICAgICAgIHN1aXRlQ2hlY2tib3guaW5kZXRlcm1pbmF0
ZSA9IG51bWJlckVuYWJsZWRUZXN0cyA+IDAgJiYgbnVtYmVyRW5hYmxlZFRlc3RzIDwgc3VpdGVD
aGVja2JveC50ZXN0c0VsZW1lbnRzLmxlbmd0aDsKKyAgICB9LAorCisgICAgX3VwZGF0ZVN0YXJ0
QnV0dG9uU3RhdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzdWl0ZXNFbGVtZW50
cyA9IHRoaXMuX3N1aXRlc0VsZW1lbnRzKCk7CisgICAgICAgIHZhciBzdGFydEJ1dHRvbiA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNpbnRybyBidXR0b24iKTsKKyAgICAgICAgCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgc3VpdGVzRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhciBzdWl0ZUVsZW1lbnQgPSBzdWl0ZXNFbGVtZW50c1tpXTsKKyAgICAgICAgICAg
IHZhciBzdWl0ZUNoZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHN1aXRlRWxlbWVudCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzdWl0ZUNoZWNrYm94LmNoZWNrZWQpIHsK
KyAgICAgICAgICAgICAgICBzdGFydEJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIAorICAgICAgICBz
dGFydEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7CisgICAgfSwKKworICAgIF9vbkNoYW5nZVN1aXRl
Q2hlY2tib3g6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVjdGVkID0g
ZXZlbnQudGFyZ2V0LmNoZWNrZWQ7CisgICAgICAgIGV2ZW50LnRhcmdldC50ZXN0c0VsZW1lbnRz
LmZvckVhY2goZnVuY3Rpb24odGVzdEVsZW1lbnQpIHsKKyAgICAgICAgICAgIHZhciB0ZXN0Q2hl
Y2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQodGVzdEVsZW1lbnQpOworICAgICAgICAgICAg
dGVzdENoZWNrYm94LmNoZWNrZWQgPSBzZWxlY3RlZDsgICAgICAgIAorICAgICAgICB9LCB0aGlz
KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlU3RhcnRCdXR0b25TdGF0ZSgpOworICAgIH0sCisKKyAg
ICBfb25DaGFuZ2VUZXN0Q2hlY2tib3g6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAg
dmFyIHN1aXRlQ2hlY2tib3ggPSBldmVudC50YXJnZXQuc3VpdGVDaGVja2JveDsKKyAgICAgICAg
dGhpcy5fdXBkYXRlU3VpdGVDaGVja2JveFN0YXRlKHN1aXRlQ2hlY2tib3gpOworICAgICAgICB0
aGlzLl91cGRhdGVTdGFydEJ1dHRvblN0YXRlKCk7CisgICAgfSwKKworICAgIF9jcmVhdGVTdWl0
ZUVsZW1lbnQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBzdWl0ZSwgaWQpCisgICAgeworICAgICAg
ICB2YXIgc3VpdGVFbGVtZW50ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgibGki
LCB7fSwgdHJlZUVsZW1lbnQpOworICAgICAgICB2YXIgZXhwYW5kID0gRG9jdW1lbnRFeHRlbnNp
b24uY3JlYXRlRWxlbWVudCgiaW5wdXQiLCB7IHR5cGU6ICJjaGVja2JveCIsICBjbGFzczogImV4
cGFuZC1idXR0b24iLCBpZDogaWQgfSwgc3VpdGVFbGVtZW50KTsKKyAgICAgICAgdmFyIGxhYmVs
ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgibGFiZWwiLCB7IGNsYXNzOiAidHJl
ZS1sYWJlbCIsIGZvcjogaWQgfSwgc3VpdGVFbGVtZW50KTsKKworICAgICAgICB2YXIgc3VpdGVD
aGVja2JveCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImlucHV0IiwgeyB0eXBl
OiAiY2hlY2tib3giIH0sIGxhYmVsKTsKKyAgICAgICAgc3VpdGVDaGVja2JveC5zdWl0ZSA9IHN1
aXRlOworICAgICAgICBzdWl0ZUNoZWNrYm94Lm9uY2hhbmdlID0gdGhpcy5fb25DaGFuZ2VTdWl0
ZUNoZWNrYm94LmJpbmQodGhpcyk7CisgICAgICAgIHN1aXRlQ2hlY2tib3gudGVzdHNFbGVtZW50
cyA9IFtdOworCisgICAgICAgIGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCIgIiArIHN1aXRlLm5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHN1aXRlRWxlbWVudDsKKyAg
ICB9LAorCisgICAgX2NyZWF0ZVRlc3RFbGVtZW50OiBmdW5jdGlvbihsaXN0RWxlbWVudCwgdGVz
dCwgc3VpdGVDaGVja2JveCkKKyAgICB7CisgICAgICAgIHZhciB0ZXN0RWxlbWVudCA9IERvY3Vt
ZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImxpIiwge30sIGxpc3RFbGVtZW50KTsKKyAgICAg
ICAgdmFyIHNwYW4gPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJsYWJlbCIsIHsg
Y2xhc3M6ICJ0cmVlLWxhYmVsIiB9LCB0ZXN0RWxlbWVudCk7CisKKyAgICAgICAgdmFyIHRlc3RD
aGVja2JveCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImlucHV0IiwgeyB0eXBl
OiAiY2hlY2tib3giIH0sIHNwYW4pOworICAgICAgICB0ZXN0Q2hlY2tib3gudGVzdCA9IHRlc3Q7
CisgICAgICAgIHRlc3RDaGVja2JveC5vbmNoYW5nZSA9IHRoaXMuX29uQ2hhbmdlVGVzdENoZWNr
Ym94LmJpbmQodGhpcyk7CisgICAgICAgIHRlc3RDaGVja2JveC5zdWl0ZUNoZWNrYm94ID0gc3Vp
dGVDaGVja2JveDsKKworICAgICAgICBzdWl0ZUNoZWNrYm94LnRlc3RzRWxlbWVudHMucHVzaCh0
ZXN0RWxlbWVudCk7CisgICAgICAgIHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIiAiICsgdGVzdC5uYW1lKSk7CisgICAgICAgIERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0
ZUVsZW1lbnQoImlucHV0IiwgeyB0eXBlOiAibnVtYmVyIiB9LCB0ZXN0RWxlbWVudCk7CisgICAg
ICAgIHJldHVybiB0ZXN0RWxlbWVudDsKKyAgICB9LAorCisgICAgY3JlYXRlRWxlbWVudHM6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX3RyZWVFbGVt
ZW50KCk7CisKKyAgICAgICAgU3VpdGVzLmZvckVhY2goZnVuY3Rpb24oc3VpdGUsIGluZGV4KSB7
CisgICAgICAgICAgICB2YXIgc3VpdGVFbGVtZW50ID0gdGhpcy5fY3JlYXRlU3VpdGVFbGVtZW50
KHRyZWVFbGVtZW50LCBzdWl0ZSwgInN1aXRlLSIgKyBpbmRleCk7CisgICAgICAgICAgICB2YXIg
bGlzdEVsZW1lbnQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ1bCIsIHt9LCBz
dWl0ZUVsZW1lbnQpOworICAgICAgICAgICAgdmFyIHN1aXRlQ2hlY2tib3ggPSB0aGlzLl9jaGVj
a2JveEVsZW1lbnQoc3VpdGVFbGVtZW50KTsKKworICAgICAgICAgICAgc3VpdGUudGVzdHMuZm9y
RWFjaChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgICAgICAgICAgdmFyIHRlc3RFbGVtZW50ID0g
dGhpcy5fY3JlYXRlVGVzdEVsZW1lbnQobGlzdEVsZW1lbnQsIHRlc3QsIHN1aXRlQ2hlY2tib3gp
OworICAgICAgICAgICAgfSwgdGhpcyk7CisgICAgICAgIH0sIHRoaXMpOworICAgIH0sCisgICAg
CisgICAgdXBkYXRlRWRpdHNFbGVtZW50c1N0YXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgZWRpdHNFbGVtZW50cyA9IHRoaXMuX2VkaXRzRWxlbWVudHMoKTsKKyAgICAgICAgdmFy
IHNob3dDb21wbGV4aXR5SW5wdXRzID0gb3B0aW9uc01hbmFnZXIudmFsdWVGb3JPcHRpb24oImFk
anVzdG1lbnQiKSA9PSAiZml4ZWQiOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRp
dHNFbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGVkaXRFbGVtZW50ID0g
ZWRpdHNFbGVtZW50c1tpXTsKKyAgICAgICAgICAgIGlmIChzaG93Q29tcGxleGl0eUlucHV0cykK
KyAgICAgICAgICAgICAgICBlZGl0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVkaXRFbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoInNlbGVjdGVkIik7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgdXBkYXRlRGlzcGxh
eTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAi
ZGlzcGxheS0iICsgb3B0aW9uc01hbmFnZXIudmFsdWVGb3JPcHRpb24oImRpc3BsYXkiKTsKKyAg
ICB9LAorCisgICAgdXBkYXRlVUlGcm9tTG9jYWxTdG9yYWdlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgc3VpdGVzRWxlbWVudHMgPSB0aGlzLl9zdWl0ZXNFbGVtZW50cygpOworICAg
ICAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWl0ZXNFbGVtZW50cy5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgdmFyIHN1aXRlRWxlbWVudCA9IHN1aXRlc0VsZW1lbnRzW2ld
OworICAgICAgICAgICAgdmFyIHN1aXRlQ2hlY2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQo
c3VpdGVFbGVtZW50KTsKKyAgICAgICAgICAgIHZhciBzdWl0ZSA9IHN1aXRlQ2hlY2tib3guc3Vp
dGU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN1aXRlQ2hlY2tib3gudGVzdHNFbGVtZW50
cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgdmFyIHRl
c3RDaGVja2JveCA9IHRoaXMuX2NoZWNrYm94RWxlbWVudCh0ZXN0RWxlbWVudCk7CisgICAgICAg
ICAgICAgICAgdmFyIHRlc3RFZGl0ID0gdGhpcy5fZWRpdEVsZW1lbnQodGVzdEVsZW1lbnQpOwor
ICAgICAgICAgICAgICAgIHZhciB0ZXN0ID0gdGVzdENoZWNrYm94LnRlc3Q7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgdmFyIHN0ciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRo
aXMuX2xvY2FsU3RvcmFnZU5hbWVGb3JUZXN0KHN1aXRlLm5hbWUsIHRlc3QubmFtZSkpOworICAg
ICAgICAgICAgICAgIGlmIChzdHIgPT09IG51bGwpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IEpTT04ucGFyc2Uoc3RyKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0Q2hlY2tib3guY2hlY2tlZCA9IHZhbHVlLmNoZWNrZWQ7CisgICAgICAg
ICAgICAgICAgdGVzdEVkaXQudmFsdWUgPSB2YWx1ZS5jb21wbGV4aXR5OworICAgICAgICAgICAg
fSwgdGhpcyk7CisKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN1aXRlQ2hlY2tib3hTdGF0ZShz
dWl0ZUNoZWNrYm94KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGhpcy5fdXBkYXRl
U3RhcnRCdXR0b25TdGF0ZSgpOworICAgIH0sCisKKyAgICB1cGRhdGVMb2NhbFN0b3JhZ2VGcm9t
VUk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzdWl0ZXNFbGVtZW50cyA9IHRoaXMu
X3N1aXRlc0VsZW1lbnRzKCk7CisgICAgICAgIHZhciBzdWl0ZXMgPSBbXTsKKyAgICAgICAgCisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3VpdGVzRWxlbWVudHMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIHZhciBzdWl0ZUVsZW1lbnQgPSBzdWl0ZXNFbGVtZW50c1tpXTsKKyAgICAg
ICAgICAgIHZhciBzdWl0ZUNoZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHN1aXRlRWxl
bWVudCk7CisgICAgICAgICAgICB2YXIgc3VpdGUgPSBzdWl0ZUNoZWNrYm94LnN1aXRlOworCisg
ICAgICAgICAgICB2YXIgdGVzdHMgPSBbXTsKKyAgICAgICAgICAgIHN1aXRlQ2hlY2tib3gudGVz
dHNFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RFbGVtZW50KSB7CisgICAgICAgICAgICAg
ICAgdmFyIHRlc3RDaGVja2JveCA9IHRoaXMuX2NoZWNrYm94RWxlbWVudCh0ZXN0RWxlbWVudCk7
CisgICAgICAgICAgICAgICAgdmFyIHRlc3RFZGl0ID0gdGhpcy5fZWRpdEVsZW1lbnQodGVzdEVs
ZW1lbnQpOworICAgICAgICAgICAgICAgIHZhciB0ZXN0ID0gdGVzdENoZWNrYm94LnRlc3Q7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHRlc3RDaGVja2JveC5jaGVja2Vk
KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3QuY29tcGxleGl0eSA9IHRlc3RFZGl0LnZhbHVl
OworICAgICAgICAgICAgICAgICAgICB0ZXN0cy5wdXNoKHRlc3QpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHsgY2hlY2tlZDogdGVzdENoZWNrYm94
LmNoZWNrZWQsIGNvbXBsZXhpdHk6IHRlc3RFZGl0LnZhbHVlIH07IAorICAgICAgICAgICAgICAg
IGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuX2xvY2FsU3RvcmFnZU5hbWVGb3JUZXN0KHN1aXRl
Lm5hbWUsIHRlc3QubmFtZSksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7CisgICAgICAgICAgICB9
LCB0aGlzKTsKKworICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkKKyAgICAgICAgICAgICAg
ICBzdWl0ZXMucHVzaChuZXcgU3VpdGUoc3VpdGVDaGVja2JveC5zdWl0ZS5uYW1lLCB0ZXN0cykp
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN1aXRlczsKKyAgICB9LAorICAgIAorICAg
IHVwZGF0ZUxvY2FsU3RvcmFnZUZyb21KU09OOiBmdW5jdGlvbihpdGVyYXRpb25SZXN1bHRzKQor
ICAgIHsKKyAgICAgICAgZm9yICh2YXIgc3VpdGVOYW1lIGluIGl0ZXJhdGlvblJlc3VsdHNbU3Ry
aW5ncy5qc29uLnJlc3VsdHMuc3VpdGVzXSkgeworICAgICAgICAgICAgdmFyIHN1aXRlUmVzdWx0
cyA9IGl0ZXJhdGlvblJlc3VsdHNbU3RyaW5ncy5qc29uLnJlc3VsdHMuc3VpdGVzXVtzdWl0ZU5h
bWVdOworCisgICAgICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiBzdWl0ZVJlc3VsdHNbU3Ry
aW5ncy5qc29uLnJlc3VsdHMudGVzdHNdKSB7CisgICAgICAgICAgICAgICAgdmFyIHRlc3RSZXN1
bHRzID0gc3VpdGVSZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1bHRzLnRlc3RzXVt0ZXN0TmFtZV07
CisgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tTdHJpbmdzLmpzb24uZXhw
ZXJpbWVudHMuY29tcGxleGl0eV07CisgICAgICAgICAgICAgICAgdmFyIGNvbXBsZXhpdHkgPSBN
YXRoLnJvdW5kKGRhdGFbU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5hdmVyYWdlXSk7CisKKyAg
ICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB7IGNoZWNrZWQ6IHRydWUsIGNvbXBsZXhpdHk6IGNv
bXBsZXhpdHkgfTsKKyAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9s
b2NhbFN0b3JhZ2VOYW1lRm9yVGVzdChzdWl0ZU5hbWUsIHRlc3ROYW1lKSwgSlNPTi5zdHJpbmdp
ZnkodmFsdWUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworVXRpbGl0
aWVzLmV4dGVuZE9iamVjdCh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlciwgeworICAgIGluaXRp
YWxpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRvY3VtZW50LmZvcm1zWyJiZW5jaG1h
cmstb3B0aW9ucyJdLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGJlbmNobWFya0NvbnRyb2xs
ZXIub25Gb3JtQ2hhbmdlZCwgdHJ1ZSk7CisgICAgICAgIG9wdGlvbnNNYW5hZ2VyLnVwZGF0ZVVJ
RnJvbUxvY2FsU3RvcmFnZSgpOworICAgICAgICBzdWl0ZXNNYW5hZ2VyLmNyZWF0ZUVsZW1lbnRz
KCk7CisgICAgICAgIHN1aXRlc01hbmFnZXIudXBkYXRlVUlGcm9tTG9jYWxTdG9yYWdlKCk7Cisg
ICAgICAgIHN1aXRlc01hbmFnZXIudXBkYXRlRGlzcGxheSgpOworICAgICAgICBzdWl0ZXNNYW5h
Z2VyLnVwZGF0ZUVkaXRzRWxlbWVudHNTdGF0ZSgpOworICAgIH0sCisKKyAgICBvbkZvcm1DaGFu
Z2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC50YXJnZXQubmFt
ZSA9PSAiYWRqdXN0bWVudCIpIHsKKyAgICAgICAgICAgIHN1aXRlc01hbmFnZXIudXBkYXRlRWRp
dHNFbGVtZW50c1N0YXRlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09ICJkaXNwbGF5IikgeworICAgICAgICAgICAgc3Vp
dGVzTWFuYWdlci51cGRhdGVEaXNwbGF5KCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgc3Rh
cnRCZW5jaG1hcms6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBvcHRpb25zID0gb3B0
aW9uc01hbmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbVVJKCk7CisgICAgICAgIHZhciBzdWl0
ZXMgPSBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZUxvY2FsU3RvcmFnZUZyb21VSSgpOworICAgICAgICB0
aGlzLl9zdGFydEJlbmNobWFyayhzdWl0ZXMsIG9wdGlvbnMsICJydW5uaW5nLXRlc3QiKTsKKyAg
ICB9LAorCisgICAgc2hvd1Jlc3VsdHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5hZGRlZEtleUV2ZW50KSB7CisgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3Rl
bmVyKCJrZXlwcmVzcyIsIHRoaXMuc2VsZWN0UmVzdWx0cywgZmFsc2UpOworICAgICAgICAgICAg
dGhpcy5hZGRlZEtleUV2ZW50ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rpb25z
TWFuYWdlci5zZXRTZWN0aW9uU2NvcmUoInJlc3VsdHMiLCBiZW5jaG1hcmtSdW5uZXJDbGllbnQu
cmVzdWx0cy5zY29yZS50b0ZpeGVkKDIpKTsKKyAgICAgICAgdmFyIGRhdGEgPSBiZW5jaG1hcmtS
dW5uZXJDbGllbnQucmVzdWx0cy5kYXRhW1N0cmluZ3MuanNvbi5yZXN1bHRzLml0ZXJhdGlvbnNd
OworICAgICAgICBzZWN0aW9uc01hbmFnZXIucG9wdWxhdGVUYWJsZSgicmVzdWx0cy1oZWFkZXIi
LCBIZWFkZXJzLnRlc3ROYW1lLCBkYXRhKTsKKyAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnBvcHVs
YXRlVGFibGUoInJlc3VsdHMtc2NvcmUiLCBIZWFkZXJzLnNjb3JlLCBkYXRhKTsKKyAgICAgICAg
c2VjdGlvbnNNYW5hZ2VyLnBvcHVsYXRlVGFibGUoInJlc3VsdHMtZGF0YSIsIEhlYWRlcnMuZGV0
YWlscywgZGF0YSk7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNyZXN1bHRzLWpz
b24gdGV4dGFyZWEiKS50ZXh0Q29udGVudCA9IEpTT04uc3RyaW5naWZ5KGJlbmNobWFya1J1bm5l
ckNsaWVudC5yZXN1bHRzLmRhdGEsIGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKKyAgICAgICAgICAg
IGlmICh0eXBlb2YgdmFsdWUgPT0gIm51bWJlciIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZh
bHVlLnRvRml4ZWQoMik7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0pOwor
ICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInJlc3VsdHMiLCB0cnVlKTsKKwor
ICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZUxvY2FsU3RvcmFnZUZyb21KU09OKGRhdGFbMF0p
OworICAgIH0sCisKKyAgICBzaG93VGVzdEdyYXBoOiBmdW5jdGlvbih0ZXN0TmFtZSwgc2NvcmUs
IG1lYW4sIGF4ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkKKyAgICB7CisgICAgICAg
IHNlY3Rpb25zTWFuYWdlci5zZXRTZWN0aW9uSGVhZGVyKCJ0ZXN0LWdyYXBoIiwgdGVzdE5hbWUp
OworICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2V0U2VjdGlvblNjb3JlKCJ0ZXN0LWdyYXBoIiwg
c2NvcmUsIG1lYW4pOworICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInRlc3Qt
Z3JhcGgiLCB0cnVlKTsKKyAgICAgICAgZ3JhcGgoIiN0ZXN0LWdyYXBoLWRhdGEiLCBuZXcgSW5z
ZXRzKDEwLCAyMCwgMzAsIDQwKSwgYXhlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsK
KyAgICB9Cit9KTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBiZW5jaG1hcmtD
b250cm9sbGVyLmluaXRpYWxpemUpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1y
dW5uZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJhMTU1NGY5MWU5ZmNlYmY4NGI3NGM1NzRjNDI0ZTA3MzRm
NWJiMwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMKQEAgLTAsMCArMSwxODUgQEAK
K2Z1bmN0aW9uIEJlbmNobWFya1J1bm5lclN0YXRlKHN1aXRlcykKK3sKKyAgICB0aGlzLl9zdWl0
ZXMgPSBzdWl0ZXM7CisgICAgdGhpcy5fc3VpdGVJbmRleCA9IC0xOworICAgIHRoaXMuX3Rlc3RJ
bmRleCA9IDA7CisgICAgdGhpcy5uZXh0KCk7Cit9CisKK0JlbmNobWFya1J1bm5lclN0YXRlLnBy
b3RvdHlwZS5jdXJyZW50U3VpdGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMuX3N1
aXRlc1t0aGlzLl9zdWl0ZUluZGV4XTsKK307CisKK0JlbmNobWFya1J1bm5lclN0YXRlLnByb3Rv
dHlwZS5jdXJyZW50VGVzdCA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgc3VpdGUgPSB0aGlzLmN1
cnJlbnRTdWl0ZSgpOworICAgIHJldHVybiBzdWl0ZSA/IHN1aXRlLnRlc3RzW3RoaXMuX3Rlc3RJ
bmRleF0gOiBudWxsOworfTsKKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmlzRmly
c3RUZXN0ID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiAhdGhpcy5fdGVzdEluZGV4OworfTsK
KworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbigpCit7Cisg
ICAgdGhpcy5fdGVzdEluZGV4Kys7CisKKyAgICB2YXIgc3VpdGUgPSB0aGlzLl9zdWl0ZXNbdGhp
cy5fc3VpdGVJbmRleF07CisgICAgaWYgKHN1aXRlICYmIHRoaXMuX3Rlc3RJbmRleCA8IHN1aXRl
LnRlc3RzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHRoaXM7CisKKyAgICB0aGlzLl90ZXN0SW5k
ZXggPSAwOworICAgIGRvIHsKKyAgICAgICAgdGhpcy5fc3VpdGVJbmRleCsrOworICAgIH0gd2hp
bGUgKHRoaXMuX3N1aXRlSW5kZXggPCB0aGlzLl9zdWl0ZXMubGVuZ3RoICYmIHRoaXMuX3N1aXRl
c1t0aGlzLl9zdWl0ZUluZGV4XS5kaXNhYmxlZCk7CisKKyAgICByZXR1cm4gdGhpczsKK307CisK
K0JlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVudFRlc3QgPSBmdW5j
dGlvbihydW5uZXIsIGZyYW1lKQoreworICAgIHZhciBzdWl0ZSA9IHRoaXMuY3VycmVudFN1aXRl
KCk7CisgICAgdmFyIHRlc3QgPSB0aGlzLmN1cnJlbnRUZXN0KCk7CisgICAgdmFyIHByb21pc2Ug
PSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICBmcmFtZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgc3VpdGUucHJlcGFyZShydW5uZXIsIGZyYW1lLmNvbnRlbnRXaW5kb3csIGZyYW1lLmNv
bnRlbnREb2N1bWVudCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsgcHJvbWlzZS5yZXNvbHZlKHJl
c3VsdCk7IH0pOworICAgIH0KKyAgICBmcmFtZS5zcmMgPSAidGVzdHMvIiArIHRlc3QudXJsOwor
ICAgIHJldHVybiBwcm9taXNlOworfTsKKworZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyKHN1aXRl
cywgZnJhbWVDb250YWluZXIsIGNsaWVudCkKK3sKKyAgICB0aGlzLl9zdWl0ZXMgPSBzdWl0ZXM7
CisgICAgdGhpcy5fY2xpZW50ID0gY2xpZW50OworICAgIHRoaXMuX2ZyYW1lQ29udGFpbmVyID0g
ZnJhbWVDb250YWluZXI7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUud2FpdEZvckVs
ZW1lbnQgPSBmdW5jdGlvbihzZWxlY3RvcikKK3sKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1w
bGVQcm9taXNlOworICAgIHZhciBjb250ZW50RG9jdW1lbnQgPSB0aGlzLl9mcmFtZS5jb250ZW50
RG9jdW1lbnQ7CisKKyAgICBmdW5jdGlvbiByZXNvbHZlSWZSZWFkeSgpIHsKKyAgICAgICAgdmFy
IGVsZW1lbnQgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CisgICAg
ICAgIGlmIChlbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIHByb21pc2UucmVzb2x2ZShlbGVt
ZW50KTsKKyAgICAgICAgc2V0VGltZW91dChyZXNvbHZlSWZSZWFkeSwgNTApOworICAgIH0KKwor
ICAgIHJlc29sdmVJZlJlYWR5KCk7CisgICAgcmV0dXJuIHByb21pc2U7Cit9OworCitCZW5jaG1h
cmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIg
ZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBmcmFtZS5zZXRB
dHRyaWJ1dGUoInNjcm9sbGluZyIsICJubyIpOworCisgICAgdGhpcy5fZnJhbWVDb250YWluZXIu
aW5zZXJ0QmVmb3JlKGZyYW1lLCB0aGlzLl9mcmFtZUNvbnRhaW5lci5maXJzdENoaWxkKTsKKyAg
ICB0aGlzLl9mcmFtZSA9IGZyYW1lOworICAgIHJldHVybiBmcmFtZTsKK307CisKK0JlbmNobWFy
a1J1bm5lci5wcm90b3R5cGUuX3JlbW92ZUZyYW1lID0gZnVuY3Rpb24oKQoreworICAgIGlmICh0
aGlzLl9mcmFtZSkgeworICAgICAgICB0aGlzLl9mcmFtZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KHRoaXMuX2ZyYW1lKTsKKyAgICAgICAgdGhpcy5fZnJhbWUgPSBudWxsOworICAgIH0KK307CisK
K0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzID0gZnVu
Y3Rpb24oc3RhdGUpCit7CisgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAg
ICB2YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50U3VpdGUoKTsKKyAgICB2YXIgdGVzdCA9IHN0YXRl
LmN1cnJlbnRUZXN0KCk7CisgICAgCisgICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGll
bnQud2lsbFJ1blRlc3QpCisgICAgICAgIHRoaXMuX2NsaWVudC53aWxsUnVuVGVzdChzdWl0ZSwg
dGVzdCk7CisKKyAgICB2YXIgY29udGVudFdpbmRvdyA9IHRoaXMuX2ZyYW1lLmNvbnRlbnRXaW5k
b3c7CisgICAgdmFyIHNlbGYgPSB0aGlzOworCisgICAgc3VpdGUucnVuKGNvbnRlbnRXaW5kb3cs
IHRlc3QsIHRoaXMuX2NsaWVudC5vcHRpb25zLCB0aGlzLl9jbGllbnQucHJvZ3Jlc3NCYXIpLnRo
ZW4oZnVuY3Rpb24oc2FtcGxlcikgeworICAgICAgICB2YXIgc2FtcGxlcnMgPSBzZWxmLl9zdWl0
ZXNTYW1wbGVyc1tzdWl0ZS5uYW1lXSB8fCBbXTsKKyAgICAgICAgCisgICAgICAgIHNhbXBsZXJz
W3Rlc3QubmFtZV0gPSBzYW1wbGVyOworICAgICAgICBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tzdWl0
ZS5uYW1lXSA9IHNhbXBsZXJzOworCisgICAgICAgIGlmIChzZWxmLl9jbGllbnQgJiYgc2VsZi5f
Y2xpZW50LmRpZFJ1blRlc3QpCisgICAgICAgICAgICBzZWxmLl9jbGllbnQuZGlkUnVuVGVzdChz
dWl0ZSwgdGVzdCk7CisgICAgICAgIAorICAgICAgICBzdGF0ZS5uZXh0KCk7CisgICAgICAgIGlm
IChzdGF0ZS5jdXJyZW50U3VpdGUoKSAhPSBzdWl0ZSkKKyAgICAgICAgICAgIHNlbGYuX3JlbW92
ZUZyYW1lKCk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShzdGF0ZSk7CisgICAgfSk7CisgICAg
CisgICAgcmV0dXJuIHByb21pc2U7Cit9OworCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnN0
ZXAgPSBmdW5jdGlvbihzdGF0ZSkKK3sKKyAgICBpZiAoIXN0YXRlKSB7CisgICAgICAgIHN0YXRl
ID0gbmV3IEJlbmNobWFya1J1bm5lclN0YXRlKHRoaXMuX3N1aXRlcyk7CisgICAgICAgIHRoaXMu
X3N1aXRlc1NhbXBsZXJzID0ge307CisgICAgfQorCisgICAgdmFyIHN1aXRlID0gc3RhdGUuY3Vy
cmVudFN1aXRlKCk7CisgICAgaWYgKCFzdWl0ZSkgeworICAgICAgICB0aGlzLl9maW5hbGl6ZSgp
OworICAgICAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgICAgICBwcm9t
aXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgfQorCisgICAgaWYg
KHN0YXRlLmlzRmlyc3RUZXN0KCkpIHsKKyAgICAgICAgdGhpcy5fYXBwZW5kRnJhbWUoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gc3RhdGUucHJlcGFyZUN1cnJlbnRUZXN0KHRoaXMsIHRoaXMuX2Zy
YW1lKS50aGVuKGZ1bmN0aW9uKHByZXBhcmVSZXR1cm5WYWx1ZSkgeworICAgICAgICByZXR1cm4g
dGhpcy5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMoc3RhdGUpOworICAgIH0uYmluZCh0aGlzKSk7
Cit9OworCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0ZXBzID0gZnVuY3Rpb24o
c3RhcnRpbmdTdGF0ZSkKK3sKKyAgICB2YXIgbmV4dENhbGxlZSA9IHRoaXMucnVuQWxsU3RlcHMu
YmluZCh0aGlzKTsKKyAgICB0aGlzLnN0ZXAoc3RhcnRpbmdTdGF0ZSkudGhlbihmdW5jdGlvbihu
ZXh0U3RhdGUpIHsKKyAgICAgICAgaWYgKG5leHRTdGF0ZSkKKyAgICAgICAgICAgIG5leHRDYWxs
ZWUobmV4dFN0YXRlKTsKKyAgICB9KTsKK307CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUu
cnVuTXVsdGlwbGVJdGVyYXRpb25zID0gZnVuY3Rpb24oKQoreworICAgIHZhciBzZWxmID0gdGhp
czsKKyAgICB2YXIgY3VycmVudEl0ZXJhdGlvbiA9IDA7CisKKyAgICB0aGlzLl9ydW5OZXh0SXRl
cmF0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGN1cnJlbnRJdGVyYXRpb24rKzsKKyAgICAg
ICAgaWYgKGN1cnJlbnRJdGVyYXRpb24gPCBzZWxmLl9jbGllbnQuaXRlcmF0aW9uQ291bnQpCisg
ICAgICAgICAgICBzZWxmLnJ1bkFsbFN0ZXBzKCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX2Ns
aWVudCAmJiB0aGlzLl9jbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbikKKyAgICAgICAgICAg
IHNlbGYuX2NsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKCk7CisgICAgfQorCisgICAgaWYg
KHNlbGYuX2NsaWVudCAmJiBzZWxmLl9jbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pCisg
ICAgICAgIHNlbGYuX2NsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbigpOworCisgICAgc2Vs
Zi5ydW5BbGxTdGVwcygpOworfTsKKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmluYWxp
emUgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fcmVtb3ZlRnJhbWUoKTsKKyAgICAgICAgCisg
ICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQuZGlkUnVuU3VpdGVzKQorICAgICAg
ICB0aGlzLl9jbGllbnQuZGlkUnVuU3VpdGVzKHRoaXMuX3N1aXRlc1NhbXBsZXJzKTsKKworICAg
IGlmICh0aGlzLl9ydW5OZXh0SXRlcmF0aW9uKQorICAgICAgICB0aGlzLl9ydW5OZXh0SXRlcmF0
aW9uKCk7Cit9OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291
cmNlcy9kZWJ1Zy1ydW5uZXIvZDMubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvZDMubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhN2FlOTAzNDIz
MGU3MzZiYjYzNmMyYjgxYTI1N2I3NmZhNzI5ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9kMy5taW4uanMKQEAg
LTAsMCArMSw1IEBACishZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sdCl7cmV0dXJuIHQ+bj8tMTpu
PnQ/MTpuPj10PzA6MC8wfWZ1bmN0aW9uIHQobil7cmV0dXJuIG51bGwhPW4mJiFpc05hTihuKX1m
dW5jdGlvbiBlKG4pe3JldHVybntsZWZ0OmZ1bmN0aW9uKHQsZSxyLHUpe2Zvcihhcmd1bWVudHMu
bGVuZ3RoPDMmJihyPTApLGFyZ3VtZW50cy5sZW5ndGg8NCYmKHU9dC5sZW5ndGgpO3U+cjspe3Zh
ciBpPXIrdT4+PjE7bih0W2ldLGUpPDA/cj1pKzE6dT1pfXJldHVybiByfSxyaWdodDpmdW5jdGlv
bih0LGUscix1KXtmb3IoYXJndW1lbnRzLmxlbmd0aDwzJiYocj0wKSxhcmd1bWVudHMubGVuZ3Ro
PDQmJih1PXQubGVuZ3RoKTt1PnI7KXt2YXIgaT1yK3U+Pj4xO24odFtpXSxlKT4wP3U9aTpyPWkr
MX1yZXR1cm4gcn19fWZ1bmN0aW9uIHIobil7cmV0dXJuIG4ubGVuZ3RofWZ1bmN0aW9uIHUobil7
Zm9yKHZhciB0PTE7bip0JTE7KXQqPTEwO3JldHVybiB0fWZ1bmN0aW9uIGkobix0KXt0cnl7Zm9y
KHZhciBlIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLGUse3ZhbHVlOnRb
ZV0sZW51bWVyYWJsZTohMX0pfWNhdGNoKHIpe24ucHJvdG90eXBlPXR9fWZ1bmN0aW9uIG8oKXt9
ZnVuY3Rpb24gYShuKXtyZXR1cm4gaWErbiBpbiB0aGlzfWZ1bmN0aW9uIGMobil7cmV0dXJuIG49
aWErbixuIGluIHRoaXMmJmRlbGV0ZSB0aGlzW25dfWZ1bmN0aW9uIHMoKXt2YXIgbj1bXTtyZXR1
cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe24ucHVzaCh0KX0pLG59ZnVuY3Rpb24gbCgpe3Zh
ciBuPTA7Zm9yKHZhciB0IGluIHRoaXMpdC5jaGFyQ29kZUF0KDApPT09b2EmJisrbjtyZXR1cm4g
bn1mdW5jdGlvbiBmKCl7Zm9yKHZhciBuIGluIHRoaXMpaWYobi5jaGFyQ29kZUF0KDApPT09b2Ep
cmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gaCgpe31mdW5jdGlvbiBnKG4sdCxlKXtyZXR1cm4g
ZnVuY3Rpb24oKXt2YXIgcj1lLmFwcGx5KHQsYXJndW1lbnRzKTtyZXR1cm4gcj09PXQ/bjpyfX1m
dW5jdGlvbiBwKG4sdCl7aWYodCBpbiBuKXJldHVybiB0O3Q9dC5jaGFyQXQoMCkudG9VcHBlckNh
c2UoKSt0LnN1YnN0cmluZygxKTtmb3IodmFyIGU9MCxyPWFhLmxlbmd0aDtyPmU7KytlKXt2YXIg
dT1hYVtlXSt0O2lmKHUgaW4gbilyZXR1cm4gdX19ZnVuY3Rpb24gdigpe31mdW5jdGlvbiBkKCl7
fWZ1bmN0aW9uIG0obil7ZnVuY3Rpb24gdCgpe2Zvcih2YXIgdCxyPWUsdT0tMSxpPXIubGVuZ3Ro
OysrdTxpOykodD1yW3VdLm9uKSYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG59dmFy
IGU9W10scj1uZXcgbztyZXR1cm4gdC5vbj1mdW5jdGlvbih0LHUpe3ZhciBpLG89ci5nZXQodCk7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9vJiZvLm9uOihvJiYoby5vbj1udWxsLGU9ZS5zbGlj
ZSgwLGk9ZS5pbmRleE9mKG8pKS5jb25jYXQoZS5zbGljZShpKzEpKSxyLnJlbW92ZSh0KSksdSYm
ZS5wdXNoKHIuc2V0KHQse29uOnV9KSksbil9LHR9ZnVuY3Rpb24geSgpe1pvLmV2ZW50LnByZXZl
bnREZWZhdWx0KCl9ZnVuY3Rpb24geCgpe2Zvcih2YXIgbix0PVpvLmV2ZW50O249dC5zb3VyY2VF
dmVudDspdD1uO3JldHVybiB0fWZ1bmN0aW9uIE0obil7Zm9yKHZhciB0PW5ldyBkLGU9MCxyPWFy
Z3VtZW50cy5sZW5ndGg7KytlPHI7KXRbYXJndW1lbnRzW2VdXT1tKHQpO3JldHVybiB0Lm9mPWZ1
bmN0aW9uKGUscil7cmV0dXJuIGZ1bmN0aW9uKHUpe3RyeXt2YXIgaT11LnNvdXJjZUV2ZW50PVpv
LmV2ZW50O3UudGFyZ2V0PW4sWm8uZXZlbnQ9dSx0W3UudHlwZV0uYXBwbHkoZSxyKX1maW5hbGx5
e1pvLmV2ZW50PWl9fX0sdH1mdW5jdGlvbiBfKG4pe3JldHVybiBzYShuLHBhKSxufWZ1bmN0aW9u
IGIobil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbigpe3JldHVybiBsYShu
LHRoaXMpfX1mdW5jdGlvbiB3KG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP246ZnVuY3Rp
b24oKXtyZXR1cm4gZmEobix0aGlzKX19ZnVuY3Rpb24gUyhuLHQpe2Z1bmN0aW9uIGUoKXt0aGlz
LnJlbW92ZUF0dHJpYnV0ZShuKX1mdW5jdGlvbiByKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhu
LnNwYWNlLG4ubG9jYWwpfWZ1bmN0aW9uIHUoKXt0aGlzLnNldEF0dHJpYnV0ZShuLHQpfWZ1bmN0
aW9uIGkoKXt0aGlzLnNldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCx0KX1mdW5jdGlvbiBv
KCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09ZT90aGlzLnJlbW92ZUF0dHJp
YnV0ZShuKTp0aGlzLnNldEF0dHJpYnV0ZShuLGUpfWZ1bmN0aW9uIGEoKXt2YXIgZT10LmFwcGx5
KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0cmlidXRlTlMobi5zcGFjZSxu
LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCxlKX1yZXR1cm4gbj1a
by5ucy5xdWFsaWZ5KG4pLG51bGw9PXQ/bi5sb2NhbD9yOmU6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/
bi5sb2NhbD9hOm86bi5sb2NhbD9pOnV9ZnVuY3Rpb24gayhuKXtyZXR1cm4gbi50cmltKCkucmVw
bGFjZSgvXHMrL2csIiAiKX1mdW5jdGlvbiBFKG4pe3JldHVybiBuZXcgUmVnRXhwKCIoPzpefFxc
cyspIitaby5yZXF1b3RlKG4pKyIoPzpcXHMrfCQpIiwiZyIpfWZ1bmN0aW9uIEEobil7cmV0dXJu
KG4rIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBDKG4sdCl7ZnVuY3Rpb24gZSgp
e2Zvcih2YXIgZT0tMTsrK2U8dTspbltlXSh0aGlzLHQpfWZ1bmN0aW9uIHIoKXtmb3IodmFyIGU9
LTEscj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTsrK2U8dTspbltlXSh0aGlzLHIpfW49QShuKS5t
YXAoTik7dmFyIHU9bi5sZW5ndGg7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/cjplfWZ1bmN0
aW9uIE4obil7dmFyIHQ9RShuKTtyZXR1cm4gZnVuY3Rpb24oZSxyKXtpZih1PWUuY2xhc3NMaXN0
KXJldHVybiByP3UuYWRkKG4pOnUucmVtb3ZlKG4pO3ZhciB1PWUuZ2V0QXR0cmlidXRlKCJjbGFz
cyIpfHwiIjtyPyh0Lmxhc3RJbmRleD0wLHQudGVzdCh1KXx8ZS5zZXRBdHRyaWJ1dGUoImNsYXNz
IixrKHUrIiAiK24pKSk6ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixrKHUucmVwbGFjZSh0LCIgIikp
KX19ZnVuY3Rpb24geihuLHQsZSl7ZnVuY3Rpb24gcigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVy
dHkobil9ZnVuY3Rpb24gdSgpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobix0LGUpfWZ1bmN0aW9u
IGkoKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP3RoaXMuc3R5bGUucmVt
b3ZlUHJvcGVydHkobik6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLHIsZSl9cmV0dXJuIG51bGw9
PXQ/cjoiZnVuY3Rpb24iPT10eXBlb2YgdD9pOnV9ZnVuY3Rpb24gTChuLHQpe2Z1bmN0aW9uIGUo
KXtkZWxldGUgdGhpc1tuXX1mdW5jdGlvbiByKCl7dGhpc1tuXT10fWZ1bmN0aW9uIHUoKXt2YXIg
ZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP2RlbGV0ZSB0aGlzW25dOnRoaXNbbl09
ZX1yZXR1cm4gbnVsbD09dD9lOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3U6cn1mdW5jdGlvbiBUKG4p
e3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP246KG49Wm8ubnMucXVhbGlmeShuKSkubG9jYWw/
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLnNw
YWNlLG4ubG9jYWwpfTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKHRoaXMubmFtZXNwYWNlVVJJLG4pfX1mdW5jdGlvbiBxKG4pe3JldHVybntfX2Rh
dGFfXzpufX1mdW5jdGlvbiBSKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBnYSh0aGlzLG4p
fX1mdW5jdGlvbiBEKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RofHwodD1uKSxmdW5jdGlvbihu
LGUpe3JldHVybiBuJiZlP3Qobi5fX2RhdGFfXyxlLl9fZGF0YV9fKTohbi0hZX19ZnVuY3Rpb24g
UChuLHQpe2Zvcih2YXIgZT0wLHI9bi5sZW5ndGg7cj5lO2UrKylmb3IodmFyIHUsaT1uW2VdLG89
MCxhPWkubGVuZ3RoO2E+bztvKyspKHU9aVtvXSkmJnQodSxvLGUpO3JldHVybiBufWZ1bmN0aW9u
IFUobil7cmV0dXJuIHNhKG4sZGEpLG59ZnVuY3Rpb24gaihuKXt2YXIgdCxlO3JldHVybiBmdW5j
dGlvbihyLHUsaSl7dmFyIG8sYT1uW2ldLnVwZGF0ZSxjPWEubGVuZ3RoO2ZvcihpIT1lJiYoZT1p
LHQ9MCksdT49dCYmKHQ9dSsxKTshKG89YVt0XSkmJisrdDxjOyk7cmV0dXJuIG99fWZ1bmN0aW9u
IEgoKXt2YXIgbj10aGlzLl9fdHJhbnNpdGlvbl9fO24mJisrbi5hY3RpdmV9ZnVuY3Rpb24gRihu
LHQsZSl7ZnVuY3Rpb24gcigpe3ZhciB0PXRoaXNbb107dCYmKHRoaXMucmVtb3ZlRXZlbnRMaXN0
ZW5lcihuLHQsdC4kKSxkZWxldGUgdGhpc1tvXSl9ZnVuY3Rpb24gdSgpe3ZhciB1PWModCxYbyhh
cmd1bWVudHMpKTtyLmNhbGwodGhpcyksdGhpcy5hZGRFdmVudExpc3RlbmVyKG4sdGhpc1tvXT11
LHUuJD1lKSx1Ll89dH1mdW5jdGlvbiBpKCl7dmFyIHQsZT1uZXcgUmVnRXhwKCJeX19vbihbXi5d
KykiK1pvLnJlcXVvdGUobikrIiQiKTtmb3IodmFyIHIgaW4gdGhpcylpZih0PXIubWF0Y2goZSkp
e3ZhciB1PXRoaXNbcl07dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHRbMV0sdSx1LiQpLGRlbGV0
ZSB0aGlzW3JdfX12YXIgbz0iX19vbiIrbixhPW4uaW5kZXhPZigiLiIpLGM9TzthPjAmJihuPW4u
c3Vic3RyaW5nKDAsYSkpO3ZhciBzPXlhLmdldChuKTtyZXR1cm4gcyYmKG49cyxjPVkpLGE/dD91
OnI6dD92Oml9ZnVuY3Rpb24gTyhuLHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1aby5ldmVu
dDtaby5ldmVudD1lLHRbMF09dGhpcy5fX2RhdGFfXzt0cnl7bi5hcHBseSh0aGlzLHQpfWZpbmFs
bHl7Wm8uZXZlbnQ9cn19fWZ1bmN0aW9uIFkobix0KXt2YXIgZT1PKG4sdCk7cmV0dXJuIGZ1bmN0
aW9uKG4pe3ZhciB0PXRoaXMscj1uLnJlbGF0ZWRUYXJnZXQ7ciYmKHI9PT10fHw4JnIuY29tcGFy
ZURvY3VtZW50UG9zaXRpb24odCkpfHxlLmNhbGwodCxuKX19ZnVuY3Rpb24gSSgpe3ZhciBuPSIu
ZHJhZ3N1cHByZXNzLSIrICsrTWEsdD0iY2xpY2siK24sZT1aby5zZWxlY3QoV28pLm9uKCJ0b3Vj
aG1vdmUiK24seSkub24oImRyYWdzdGFydCIrbix5KS5vbigic2VsZWN0c3RhcnQiK24seSk7aWYo
eGEpe3ZhciByPUJvLnN0eWxlLHU9clt4YV07clt4YV09Im5vbmUifXJldHVybiBmdW5jdGlvbihp
KXtmdW5jdGlvbiBvKCl7ZS5vbih0LG51bGwpfWUub24obixudWxsKSx4YSYmKHJbeGFdPXUpLGkm
JihlLm9uKHQsZnVuY3Rpb24oKXt5KCksbygpfSwhMCksc2V0VGltZW91dChvLDApKX19ZnVuY3Rp
b24gWihuLHQpe3QuY2hhbmdlZFRvdWNoZXMmJih0PXQuY2hhbmdlZFRvdWNoZXNbMF0pO3ZhciBl
PW4ub3duZXJTVkdFbGVtZW50fHxuO2lmKGUuY3JlYXRlU1ZHUG9pbnQpe3ZhciByPWUuY3JlYXRl
U1ZHUG9pbnQoKTtpZigwPl9hJiYoV28uc2Nyb2xsWHx8V28uc2Nyb2xsWSkpe2U9Wm8uc2VsZWN0
KCJib2R5IikuYXBwZW5kKCJzdmciKS5zdHlsZSh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxs
ZWZ0OjAsbWFyZ2luOjAscGFkZGluZzowLGJvcmRlcjoibm9uZSJ9LCJpbXBvcnRhbnQiKTt2YXIg
dT1lWzBdWzBdLmdldFNjcmVlbkNUTSgpO19hPSEodS5mfHx1LmUpLGUucmVtb3ZlKCl9cmV0dXJu
IF9hPyhyLng9dC5wYWdlWCxyLnk9dC5wYWdlWSk6KHIueD10LmNsaWVudFgsci55PXQuY2xpZW50
WSkscj1yLm1hdHJpeFRyYW5zZm9ybShuLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSksW3IueCxy
LnldfXZhciBpPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW3QuY2xpZW50WC1pLmxl
ZnQtbi5jbGllbnRMZWZ0LHQuY2xpZW50WS1pLnRvcC1uLmNsaWVudFRvcF19ZnVuY3Rpb24gVigp
e3JldHVybiBaby5ldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyfWZ1bmN0aW9uIFgo
KXtyZXR1cm4gWm8uZXZlbnQudGFyZ2V0fWZ1bmN0aW9uICQoKXtyZXR1cm4gV299ZnVuY3Rpb24g
QihuKXtyZXR1cm4gbj4wPzE6MD5uPy0xOjB9ZnVuY3Rpb24gVyhuLHQsZSl7cmV0dXJuKHRbMF0t
blswXSkqKGVbMV0tblsxXSktKHRbMV0tblsxXSkqKGVbMF0tblswXSl9ZnVuY3Rpb24gSihuKXty
ZXR1cm4gbj4xPzA6LTE+bj9iYTpNYXRoLmFjb3Mobil9ZnVuY3Rpb24gRyhuKXtyZXR1cm4gbj4x
P1NhOi0xPm4/LVNhOk1hdGguYXNpbihuKX1mdW5jdGlvbiBLKG4pe3JldHVybigobj1NYXRoLmV4
cChuKSktMS9uKS8yfWZ1bmN0aW9uIFEobil7cmV0dXJuKChuPU1hdGguZXhwKG4pKSsxL24pLzJ9
ZnVuY3Rpb24gbnQobil7cmV0dXJuKChuPU1hdGguZXhwKDIqbikpLTEpLyhuKzEpfWZ1bmN0aW9u
IHR0KG4pe3JldHVybihuPU1hdGguc2luKG4vMikpKm59ZnVuY3Rpb24gZXQoKXt9ZnVuY3Rpb24g
cnQobix0LGUpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgcnQ/KHRoaXMuaD0rbix0aGlzLnM9K3Qs
dm9pZCh0aGlzLmw9K2UpKTphcmd1bWVudHMubGVuZ3RoPDI/biBpbnN0YW5jZW9mIHJ0P25ldyBy
dChuLmgsbi5zLG4ubCk6bXQoIiIrbix5dCxydCk6bmV3IHJ0KG4sdCxlKX1mdW5jdGlvbiB1dChu
LHQsZSl7ZnVuY3Rpb24gcihuKXtyZXR1cm4gbj4zNjA/bi09MzYwOjA+biYmKG4rPTM2MCksNjA+
bj9pKyhvLWkpKm4vNjA6MTgwPm4/bzoyNDA+bj9pKyhvLWkpKigyNDAtbikvNjA6aX1mdW5jdGlv
biB1KG4pe3JldHVybiBNYXRoLnJvdW5kKDI1NSpyKG4pKX12YXIgaSxvO3JldHVybiBuPWlzTmFO
KG4pPzA6KG4lPTM2MCk8MD9uKzM2MDpuLHQ9aXNOYU4odCk/MDowPnQ/MDp0PjE/MTp0LGU9MD5l
PzA6ZT4xPzE6ZSxvPS41Pj1lP2UqKDErdCk6ZSt0LWUqdCxpPTIqZS1vLG5ldyBndCh1KG4rMTIw
KSx1KG4pLHUobi0xMjApKX1mdW5jdGlvbiBpdChuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2Vv
ZiBpdD8odGhpcy5oPStuLHRoaXMuYz0rdCx2b2lkKHRoaXMubD0rZSkpOmFyZ3VtZW50cy5sZW5n
dGg8Mj9uIGluc3RhbmNlb2YgaXQ/bmV3IGl0KG4uaCxuLmMsbi5sKTpuIGluc3RhbmNlb2YgYXQ/
c3Qobi5sLG4uYSxuLmIpOnN0KChuPXh0KChuPVpvLnJnYihuKSkucixuLmcsbi5iKSkubCxuLmEs
bi5iKTpuZXcgaXQobix0LGUpfWZ1bmN0aW9uIG90KG4sdCxlKXtyZXR1cm4gaXNOYU4obikmJihu
PTApLGlzTmFOKHQpJiYodD0wKSxuZXcgYXQoZSxNYXRoLmNvcyhuKj1BYSkqdCxNYXRoLnNpbihu
KSp0KX1mdW5jdGlvbiBhdChuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhdD8odGhpcy5s
PStuLHRoaXMuYT0rdCx2b2lkKHRoaXMuYj0rZSkpOmFyZ3VtZW50cy5sZW5ndGg8Mj9uIGluc3Rh
bmNlb2YgYXQ/bmV3IGF0KG4ubCxuLmEsbi5iKTpuIGluc3RhbmNlb2YgaXQ/b3Qobi5sLG4uYyxu
LmgpOnh0KChuPWd0KG4pKS5yLG4uZyxuLmIpOm5ldyBhdChuLHQsZSl9ZnVuY3Rpb24gY3Qobix0
LGUpe3ZhciByPShuKzE2KS8xMTYsdT1yK3QvNTAwLGk9ci1lLzIwMDtyZXR1cm4gdT1sdCh1KSpq
YSxyPWx0KHIpKkhhLGk9bHQoaSkqRmEsbmV3IGd0KGh0KDMuMjQwNDU0Mip1LTEuNTM3MTM4NSpy
LS40OTg1MzE0KmkpLGh0KC0uOTY5MjY2KnUrMS44NzYwMTA4KnIrLjA0MTU1NippKSxodCguMDU1
NjQzNCp1LS4yMDQwMjU5KnIrMS4wNTcyMjUyKmkpKX1mdW5jdGlvbiBzdChuLHQsZSl7cmV0dXJu
IG4+MD9uZXcgaXQoTWF0aC5hdGFuMihlLHQpKkNhLE1hdGguc3FydCh0KnQrZSplKSxuKTpuZXcg
aXQoMC8wLDAvMCxuKX1mdW5jdGlvbiBsdChuKXtyZXR1cm4gbj4uMjA2ODkzMDM0P24qbipuOihu
LTQvMjkpLzcuNzg3MDM3fWZ1bmN0aW9uIGZ0KG4pe3JldHVybiBuPi4wMDg4NTY/TWF0aC5wb3co
biwxLzMpOjcuNzg3MDM3Km4rNC8yOX1mdW5jdGlvbiBodChuKXtyZXR1cm4gTWF0aC5yb3VuZCgy
NTUqKC4wMDMwND49bj8xMi45MipuOjEuMDU1Kk1hdGgucG93KG4sMS8yLjQpLS4wNTUpKX1mdW5j
dGlvbiBndChuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBndD8odGhpcy5yPX5+bix0aGlz
Lmc9fn50LHZvaWQodGhpcy5iPX5+ZSkpOmFyZ3VtZW50cy5sZW5ndGg8Mj9uIGluc3RhbmNlb2Yg
Z3Q/bmV3IGd0KG4ucixuLmcsbi5iKTptdCgiIituLGd0LHV0KTpuZXcgZ3Qobix0LGUpfWZ1bmN0
aW9uIHB0KG4pe3JldHVybiBuZXcgZ3Qobj4+MTYsMjU1Jm4+PjgsMjU1Jm4pfWZ1bmN0aW9uIHZ0
KG4pe3JldHVybiBwdChuKSsiIn1mdW5jdGlvbiBkdChuKXtyZXR1cm4gMTY+bj8iMCIrTWF0aC5t
YXgoMCxuKS50b1N0cmluZygxNik6TWF0aC5taW4oMjU1LG4pLnRvU3RyaW5nKDE2KX1mdW5jdGlv
biBtdChuLHQsZSl7dmFyIHIsdSxpLG89MCxhPTAsYz0wO2lmKHI9LyhbYS16XSspXCgoLiopXCkv
aS5leGVjKG4pKXN3aXRjaCh1PXJbMl0uc3BsaXQoIiwiKSxyWzFdKXtjYXNlImhzbCI6cmV0dXJu
IGUocGFyc2VGbG9hdCh1WzBdKSxwYXJzZUZsb2F0KHVbMV0pLzEwMCxwYXJzZUZsb2F0KHVbMl0p
LzEwMCk7Y2FzZSJyZ2IiOnJldHVybiB0KF90KHVbMF0pLF90KHVbMV0pLF90KHVbMl0pKX1yZXR1
cm4oaT1JYS5nZXQobikpP3QoaS5yLGkuZyxpLmIpOihudWxsPT1ufHwiIyIhPT1uLmNoYXJBdCgw
KXx8aXNOYU4oaT1wYXJzZUludChuLnN1YnN0cmluZygxKSwxNikpfHwoND09PW4ubGVuZ3RoPyhv
PSgzODQwJmkpPj40LG89bz4+NHxvLGE9MjQwJmksYT1hPj40fGEsYz0xNSZpLGM9Yzw8NHxjKTo3
PT09bi5sZW5ndGgmJihvPSgxNjcxMTY4MCZpKT4+MTYsYT0oNjUyODAmaSk+PjgsYz0yNTUmaSkp
LHQobyxhLGMpKX1mdW5jdGlvbiB5dChuLHQsZSl7dmFyIHIsdSxpPU1hdGgubWluKG4vPTI1NSx0
Lz0yNTUsZS89MjU1KSxvPU1hdGgubWF4KG4sdCxlKSxhPW8taSxjPShvK2kpLzI7cmV0dXJuIGE/
KHU9LjU+Yz9hLyhvK2kpOmEvKDItby1pKSxyPW49PW8/KHQtZSkvYSsoZT50PzY6MCk6dD09bz8o
ZS1uKS9hKzI6KG4tdCkvYSs0LHIqPTYwKToocj0wLzAsdT1jPjAmJjE+Yz8wOnIpLG5ldyBydChy
LHUsYyl9ZnVuY3Rpb24geHQobix0LGUpe249TXQobiksdD1NdCh0KSxlPU10KGUpO3ZhciByPWZ0
KCguNDEyNDU2NCpuKy4zNTc1NzYxKnQrLjE4MDQzNzUqZSkvamEpLHU9ZnQoKC4yMTI2NzI5Km4r
LjcxNTE1MjIqdCsuMDcyMTc1KmUpL0hhKSxpPWZ0KCguMDE5MzMzOSpuKy4xMTkxOTIqdCsuOTUw
MzA0MSplKS9GYSk7cmV0dXJuIGF0KDExNip1LTE2LDUwMCooci11KSwyMDAqKHUtaSkpfWZ1bmN0
aW9uIE10KG4pe3JldHVybihuLz0yNTUpPD0uMDQwNDU/bi8xMi45MjpNYXRoLnBvdygobisuMDU1
KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIF90KG4pe3ZhciB0PXBhcnNlRmxvYXQobik7cmV0dXJuIiUi
PT09bi5jaGFyQXQobi5sZW5ndGgtMSk/TWF0aC5yb3VuZCgyLjU1KnQpOnR9ZnVuY3Rpb24gYnQo
bil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbigpe3JldHVybiBufX1mdW5j
dGlvbiB3dChuKXtyZXR1cm4gbn1mdW5jdGlvbiBTdChuKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIp
e3JldHVybiAyPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGUmJihyPWUs
ZT1udWxsKSxrdCh0LGUsbixyKX19ZnVuY3Rpb24ga3Qobix0LGUscil7ZnVuY3Rpb24gdSgpe3Zh
ciBuLHQ9Yy5zdGF0dXM7aWYoIXQmJmMucmVzcG9uc2VUZXh0fHx0Pj0yMDAmJjMwMD50fHwzMDQ9
PT10KXt0cnl7bj1lLmNhbGwoaSxjKX1jYXRjaChyKXtyZXR1cm4gby5lcnJvci5jYWxsKGksciks
dm9pZCAwfW8ubG9hZC5jYWxsKGksbil9ZWxzZSBvLmVycm9yLmNhbGwoaSxjKX12YXIgaT17fSxv
PVpvLmRpc3BhdGNoKCJiZWZvcmVzZW5kIiwicHJvZ3Jlc3MiLCJsb2FkIiwiZXJyb3IiKSxhPXt9
LGM9bmV3IFhNTEh0dHBSZXF1ZXN0LHM9bnVsbDtyZXR1cm4hV28uWERvbWFpblJlcXVlc3R8fCJ3
aXRoQ3JlZGVudGlhbHMiaW4gY3x8IS9eKGh0dHAocyk/Oik/XC9cLy8udGVzdChuKXx8KGM9bmV3
IFhEb21haW5SZXF1ZXN0KSwib25sb2FkImluIGM/Yy5vbmxvYWQ9Yy5vbmVycm9yPXU6Yy5vbnJl
YWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtjLnJlYWR5U3RhdGU+MyYmdSgpfSxjLm9ucHJvZ3Jl
c3M9ZnVuY3Rpb24obil7dmFyIHQ9Wm8uZXZlbnQ7Wm8uZXZlbnQ9bjt0cnl7by5wcm9ncmVzcy5j
YWxsKGksYyl9ZmluYWxseXtaby5ldmVudD10fX0saS5oZWFkZXI9ZnVuY3Rpb24obix0KXtyZXR1
cm4gbj0obisiIikudG9Mb3dlckNhc2UoKSxhcmd1bWVudHMubGVuZ3RoPDI/YVtuXToobnVsbD09
dD9kZWxldGUgYVtuXTphW25dPXQrIiIsaSl9LGkubWltZVR5cGU9ZnVuY3Rpb24obil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHQ9bnVsbD09bj9udWxsOm4rIiIsaSk6dH0saS5yZXNwb25zZVR5
cGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bixpKTpzfSxpLnJlc3Bv
bnNlPWZ1bmN0aW9uKG4pe3JldHVybiBlPW4saX0sWyJnZXQiLCJwb3N0Il0uZm9yRWFjaChmdW5j
dGlvbihuKXtpW25dPWZ1bmN0aW9uKCl7cmV0dXJuIGkuc2VuZC5hcHBseShpLFtuXS5jb25jYXQo
WG8oYXJndW1lbnRzKSkpfX0pLGkuc2VuZD1mdW5jdGlvbihlLHIsdSl7aWYoMj09PWFyZ3VtZW50
cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiByJiYodT1yLHI9bnVsbCksYy5vcGVuKGUsbiwh
MCksbnVsbD09dHx8ImFjY2VwdCJpbiBhfHwoYS5hY2NlcHQ9dCsiLCovKiIpLGMuc2V0UmVxdWVz
dEhlYWRlcilmb3IodmFyIGwgaW4gYSljLnNldFJlcXVlc3RIZWFkZXIobCxhW2xdKTtyZXR1cm4g
bnVsbCE9dCYmYy5vdmVycmlkZU1pbWVUeXBlJiZjLm92ZXJyaWRlTWltZVR5cGUodCksbnVsbCE9
cyYmKGMucmVzcG9uc2VUeXBlPXMpLG51bGwhPXUmJmkub24oImVycm9yIix1KS5vbigibG9hZCIs
ZnVuY3Rpb24obil7dShudWxsLG4pfSksby5iZWZvcmVzZW5kLmNhbGwoaSxjKSxjLnNlbmQobnVs
bD09cj9udWxsOnIpLGl9LGkuYWJvcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYy5hYm9ydCgpLGl9LFpv
LnJlYmluZChpLG8sIm9uIiksbnVsbD09cj9pOmkuZ2V0KEV0KHIpKX1mdW5jdGlvbiBFdChuKXty
ZXR1cm4gMT09PW4ubGVuZ3RoP2Z1bmN0aW9uKHQsZSl7bihudWxsPT10P2U6bnVsbCl9Om59ZnVu
Y3Rpb24gQXQoKXt2YXIgbj1DdCgpLHQ9TnQoKS1uO3Q+MjQ/KGlzRmluaXRlKHQpJiYoY2xlYXJU
aW1lb3V0KCRhKSwkYT1zZXRUaW1lb3V0KEF0LHQpKSxYYT0wKTooWGE9MSxXYShBdCkpfWZ1bmN0
aW9uIEN0KCl7dmFyIG49RGF0ZS5ub3coKTtmb3IoQmE9WmE7QmE7KW4+PUJhLnQmJihCYS5mPUJh
LmMobi1CYS50KSksQmE9QmEubjtyZXR1cm4gbn1mdW5jdGlvbiBOdCgpe2Zvcih2YXIgbix0PVph
LGU9MS8wO3Q7KXQuZj90PW4/bi5uPXQubjpaYT10Lm46KHQudDxlJiYoZT10LnQpLHQ9KG49dCku
bik7cmV0dXJuIFZhPW4sZX1mdW5jdGlvbiB6dChuLHQpe3JldHVybiB0LShuP01hdGguY2VpbChN
YXRoLmxvZyhuKS9NYXRoLkxOMTApOjEpfWZ1bmN0aW9uIEx0KG4sdCl7dmFyIGU9TWF0aC5wb3co
MTAsMyp1YSg4LXQpKTtyZXR1cm57c2NhbGU6dD44P2Z1bmN0aW9uKG4pe3JldHVybiBuL2V9OmZ1
bmN0aW9uKG4pe3JldHVybiBuKmV9LHN5bWJvbDpufX1mdW5jdGlvbiBUdChuKXt2YXIgdD1uLmRl
Y2ltYWwsZT1uLnRob3VzYW5kcyxyPW4uZ3JvdXBpbmcsdT1uLmN1cnJlbmN5LGk9cj9mdW5jdGlv
bihuKXtmb3IodmFyIHQ9bi5sZW5ndGgsdT1bXSxpPTAsbz1yWzBdO3Q+MCYmbz4wOyl1LnB1c2go
bi5zdWJzdHJpbmcodC09byx0K28pKSxvPXJbaT0oaSsxKSVyLmxlbmd0aF07cmV0dXJuIHUucmV2
ZXJzZSgpLmpvaW4oZSl9Ond0O3JldHVybiBmdW5jdGlvbihuKXt2YXIgZT1HYS5leGVjKG4pLHI9
ZVsxXXx8IiAiLG89ZVsyXXx8Ij4iLGE9ZVszXXx8IiIsYz1lWzRdfHwiIixzPWVbNV0sbD0rZVs2
XSxmPWVbN10saD1lWzhdLGc9ZVs5XSxwPTEsdj0iIixkPSIiLG09ITE7c3dpdGNoKGgmJihoPSto
LnN1YnN0cmluZygxKSksKHN8fCIwIj09PXImJiI9Ij09PW8pJiYocz1yPSIwIixvPSI9IixmJiYo
bC09TWF0aC5mbG9vcigobC0xKS80KSkpLGcpe2Nhc2UibiI6Zj0hMCxnPSJnIjticmVhaztjYXNl
IiUiOnA9MTAwLGQ9IiUiLGc9ImYiO2JyZWFrO2Nhc2UicCI6cD0xMDAsZD0iJSIsZz0iciI7YnJl
YWs7Y2FzZSJiIjpjYXNlIm8iOmNhc2UieCI6Y2FzZSJYIjoiIyI9PT1jJiYodj0iMCIrZy50b0xv
d2VyQ2FzZSgpKTtjYXNlImMiOmNhc2UiZCI6bT0hMCxoPTA7YnJlYWs7Y2FzZSJzIjpwPS0xLGc9
InIifSIkIj09PWMmJih2PXVbMF0sZD11WzFdKSwiciIhPWd8fGh8fChnPSJnIiksbnVsbCE9aCYm
KCJnIj09Zz9oPU1hdGgubWF4KDEsTWF0aC5taW4oMjEsaCkpOigiZSI9PWd8fCJmIj09ZykmJiho
PU1hdGgubWF4KDAsTWF0aC5taW4oMjAsaCkpKSksZz1LYS5nZXQoZyl8fHF0O3ZhciB5PXMmJmY7
cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPWQ7aWYobSYmbiUxKXJldHVybiIiO3ZhciB1PTA+bnx8
MD09PW4mJjA+MS9uPyhuPS1uLCItIik6YTtpZigwPnApe3ZhciBjPVpvLmZvcm1hdFByZWZpeChu
LGgpO249Yy5zY2FsZShuKSxlPWMuc3ltYm9sK2R9ZWxzZSBuKj1wO249ZyhuLGgpO3ZhciB4PW4u
bGFzdEluZGV4T2YoIi4iKSxNPTA+eD9uOm4uc3Vic3RyaW5nKDAseCksXz0wPng/IiI6dCtuLnN1
YnN0cmluZyh4KzEpOyFzJiZmJiYoTT1pKE0pKTt2YXIgYj12Lmxlbmd0aCtNLmxlbmd0aCtfLmxl
bmd0aCsoeT8wOnUubGVuZ3RoKSx3PWw+Yj9uZXcgQXJyYXkoYj1sLWIrMSkuam9pbihyKToiIjty
ZXR1cm4geSYmKE09aSh3K00pKSx1Kz12LG49TStfLCgiPCI9PT1vP3Urbit3OiI+Ij09PW8/dyt1
K246Il4iPT09bz93LnN1YnN0cmluZygwLGI+Pj0xKSt1K24rdy5zdWJzdHJpbmcoYik6dSsoeT9u
OncrbikpK2V9fX1mdW5jdGlvbiBxdChuKXtyZXR1cm4gbisiIn1mdW5jdGlvbiBSdCgpe3RoaXMu
Xz1uZXcgRGF0ZShhcmd1bWVudHMubGVuZ3RoPjE/RGF0ZS5VVEMuYXBwbHkodGhpcyxhcmd1bWVu
dHMpOmFyZ3VtZW50c1swXSl9ZnVuY3Rpb24gRHQobix0LGUpe2Z1bmN0aW9uIHIodCl7dmFyIGU9
bih0KSxyPWkoZSwxKTtyZXR1cm4gci10PnQtZT9lOnJ9ZnVuY3Rpb24gdShlKXtyZXR1cm4gdChl
PW4obmV3IG5jKGUtMSkpLDEpLGV9ZnVuY3Rpb24gaShuLGUpe3JldHVybiB0KG49bmV3IG5jKCtu
KSxlKSxufWZ1bmN0aW9uIG8obixyLGkpe3ZhciBvPXUobiksYT1bXTtpZihpPjEpZm9yKDtyPm87
KWUobyklaXx8YS5wdXNoKG5ldyBEYXRlKCtvKSksdChvLDEpO2Vsc2UgZm9yKDtyPm87KWEucHVz
aChuZXcgRGF0ZSgrbykpLHQobywxKTtyZXR1cm4gYX1mdW5jdGlvbiBhKG4sdCxlKXt0cnl7bmM9
UnQ7dmFyIHI9bmV3IFJ0O3JldHVybiByLl89bixvKHIsdCxlKX1maW5hbGx5e25jPURhdGV9fW4u
Zmxvb3I9bixuLnJvdW5kPXIsbi5jZWlsPXUsbi5vZmZzZXQ9aSxuLnJhbmdlPW87dmFyIGM9bi51
dGM9UHQobik7cmV0dXJuIGMuZmxvb3I9YyxjLnJvdW5kPVB0KHIpLGMuY2VpbD1QdCh1KSxjLm9m
ZnNldD1QdChpKSxjLnJhbmdlPWEsbn1mdW5jdGlvbiBQdChuKXtyZXR1cm4gZnVuY3Rpb24odCxl
KXt0cnl7bmM9UnQ7dmFyIHI9bmV3IFJ0O3JldHVybiByLl89dCxuKHIsZSkuX31maW5hbGx5e25j
PURhdGV9fX1mdW5jdGlvbiBVdChuKXtmdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIHQodCl7Zm9yKHZh
ciBlLHUsaSxvPVtdLGE9LTEsYz0wOysrYTxyOykzNz09PW4uY2hhckNvZGVBdChhKSYmKG8ucHVz
aChuLnN1YnN0cmluZyhjLGEpKSxudWxsIT0odT1lY1tlPW4uY2hhckF0KCsrYSldKSYmKGU9bi5j
aGFyQXQoKythKSksKGk9Q1tlXSkmJihlPWkodCxudWxsPT11PyJlIj09PWU/IiAiOiIwIjp1KSks
by5wdXNoKGUpLGM9YSsxKTtyZXR1cm4gby5wdXNoKG4uc3Vic3RyaW5nKGMsYSkpLG8uam9pbigi
Iil9dmFyIHI9bi5sZW5ndGg7cmV0dXJuIHQucGFyc2U9ZnVuY3Rpb24odCl7dmFyIHI9e3k6MTkw
MCxtOjAsZDoxLEg6MCxNOjAsUzowLEw6MCxaOm51bGx9LHU9ZShyLG4sdCwwKTtpZih1IT10Lmxl
bmd0aClyZXR1cm4gbnVsbDsicCJpbiByJiYoci5IPXIuSCUxMisxMipyLnApO3ZhciBpPW51bGwh
PXIuWiYmbmMhPT1SdCxvPW5ldyhpP1J0Om5jKTtyZXR1cm4iaiJpbiByP28uc2V0RnVsbFllYXIo
ci55LDAsci5qKToidyJpbiByJiYoIlciaW4gcnx8IlUiaW4gcik/KG8uc2V0RnVsbFllYXIoci55
LDAsMSksby5zZXRGdWxsWWVhcihyLnksMCwiVyJpbiByPyhyLncrNiklNys3KnIuVy0oby5nZXRE
YXkoKSs1KSU3OnIudys3KnIuVS0oby5nZXREYXkoKSs2KSU3KSk6by5zZXRGdWxsWWVhcihyLnks
ci5tLHIuZCksby5zZXRIb3VycyhyLkgrTWF0aC5mbG9vcihyLlovMTAwKSxyLk0rci5aJTEwMCxy
LlMsci5MKSxpP28uXzpvfSx0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIG59LHR9ZnVuY3Rp
b24gZShuLHQsZSxyKXtmb3IodmFyIHUsaSxvLGE9MCxjPXQubGVuZ3RoLHM9ZS5sZW5ndGg7Yz5h
Oyl7aWYocj49cylyZXR1cm4tMTtpZih1PXQuY2hhckNvZGVBdChhKyspLDM3PT09dSl7aWYobz10
LmNoYXJBdChhKyspLGk9TltvIGluIGVjP3QuY2hhckF0KGErKyk6b10sIWl8fChyPWkobixlLHIp
KTwwKXJldHVybi0xfWVsc2UgaWYodSE9ZS5jaGFyQ29kZUF0KHIrKykpcmV0dXJuLTF9cmV0dXJu
IHJ9ZnVuY3Rpb24gcihuLHQsZSl7Yi5sYXN0SW5kZXg9MDt2YXIgcj1iLmV4ZWModC5zdWJzdHJp
bmcoZSkpO3JldHVybiByPyhuLnc9dy5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVu
Z3RoKTotMX1mdW5jdGlvbiB1KG4sdCxlKXtNLmxhc3RJbmRleD0wO3ZhciByPU0uZXhlYyh0LnN1
YnN0cmluZyhlKSk7cmV0dXJuIHI/KG4udz1fLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclsw
XS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGkobix0LGUpe0UubGFzdEluZGV4PTA7dmFyIHI9RS5leGVj
KHQuc3Vic3RyaW5nKGUpKTtyZXR1cm4gcj8obi5tPUEuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSks
ZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbyhuLHQsZSl7Uy5sYXN0SW5kZXg9MDt2YXIgcj1T
LmV4ZWModC5zdWJzdHJpbmcoZSkpO3JldHVybiByPyhuLm09ay5nZXQoclswXS50b0xvd2VyQ2Fz
ZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBhKG4sdCxyKXtyZXR1cm4gZShuLEMuYy50
b1N0cmluZygpLHQscil9ZnVuY3Rpb24gYyhuLHQscil7cmV0dXJuIGUobixDLngudG9TdHJpbmco
KSx0LHIpfWZ1bmN0aW9uIHMobix0LHIpe3JldHVybiBlKG4sQy5YLnRvU3RyaW5nKCksdCxyKX1m
dW5jdGlvbiBsKG4sdCxlKXt2YXIgcj14LmdldCh0LnN1YnN0cmluZyhlLGUrPTIpLnRvTG93ZXJD
YXNlKCkpO3JldHVybiBudWxsPT1yPy0xOihuLnA9cixlKX12YXIgZj1uLmRhdGVUaW1lLGg9bi5k
YXRlLGc9bi50aW1lLHA9bi5wZXJpb2RzLHY9bi5kYXlzLGQ9bi5zaG9ydERheXMsbT1uLm1vbnRo
cyx5PW4uc2hvcnRNb250aHM7dC51dGM9ZnVuY3Rpb24obil7ZnVuY3Rpb24gZShuKXt0cnl7bmM9
UnQ7dmFyIHQ9bmV3IG5jO3JldHVybiB0Ll89bixyKHQpfWZpbmFsbHl7bmM9RGF0ZX19dmFyIHI9
dChuKTtyZXR1cm4gZS5wYXJzZT1mdW5jdGlvbihuKXt0cnl7bmM9UnQ7dmFyIHQ9ci5wYXJzZShu
KTtyZXR1cm4gdCYmdC5ffWZpbmFsbHl7bmM9RGF0ZX19LGUudG9TdHJpbmc9ci50b1N0cmluZyxl
fSx0Lm11bHRpPXQudXRjLm11bHRpPXJlO3ZhciB4PVpvLm1hcCgpLE09SHQodiksXz1GdCh2KSxi
PUh0KGQpLHc9RnQoZCksUz1IdChtKSxrPUZ0KG0pLEU9SHQoeSksQT1GdCh5KTtwLmZvckVhY2go
ZnVuY3Rpb24obix0KXt4LnNldChuLnRvTG93ZXJDYXNlKCksdCl9KTt2YXIgQz17YTpmdW5jdGlv
bihuKXtyZXR1cm4gZFtuLmdldERheSgpXX0sQTpmdW5jdGlvbihuKXtyZXR1cm4gdltuLmdldERh
eSgpXX0sYjpmdW5jdGlvbihuKXtyZXR1cm4geVtuLmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uKG4p
e3JldHVybiBtW24uZ2V0TW9udGgoKV19LGM6dChmKSxkOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0
KG4uZ2V0RGF0ZSgpLHQsMil9LGU6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobi5nZXREYXRlKCks
dCwyKX0sSDpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldEhvdXJzKCksdCwyKX0sSTpmdW5j
dGlvbihuLHQpe3JldHVybiBqdChuLmdldEhvdXJzKCklMTJ8fDEyLHQsMil9LGo6ZnVuY3Rpb24o
bix0KXtyZXR1cm4ganQoMStRYS5kYXlPZlllYXIobiksdCwzKX0sTDpmdW5jdGlvbihuLHQpe3Jl
dHVybiBqdChuLmdldE1pbGxpc2Vjb25kcygpLHQsMyl9LG06ZnVuY3Rpb24obix0KXtyZXR1cm4g
anQobi5nZXRNb250aCgpKzEsdCwyKX0sTTpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldE1p
bnV0ZXMoKSx0LDIpfSxwOmZ1bmN0aW9uKG4pe3JldHVybiBwWysobi5nZXRIb3VycygpPj0xMild
fSxTOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0U2Vjb25kcygpLHQsMil9LFU6ZnVuY3Rp
b24obix0KXtyZXR1cm4ganQoUWEuc3VuZGF5T2ZZZWFyKG4pLHQsMil9LHc6ZnVuY3Rpb24obil7
cmV0dXJuIG4uZ2V0RGF5KCl9LFc6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQoUWEubW9uZGF5T2ZZ
ZWFyKG4pLHQsMil9LHg6dChoKSxYOnQoZykseTpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdl
dEZ1bGxZZWFyKCklMTAwLHQsMil9LFk6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobi5nZXRGdWxs
WWVhcigpJTFlNCx0LDQpfSxaOnRlLCIlIjpmdW5jdGlvbigpe3JldHVybiIlIn19LE49e2E6cixB
OnUsYjppLEI6byxjOmEsZDpXdCxlOld0LEg6R3QsSTpHdCxqOkp0LEw6bmUsbTpCdCxNOkt0LHA6
bCxTOlF0LFU6WXQsdzpPdCxXOkl0LHg6YyxYOnMseTpWdCxZOlp0LFo6WHQsIiUiOmVlfTtyZXR1
cm4gdH1mdW5jdGlvbiBqdChuLHQsZSl7dmFyIHI9MD5uPyItIjoiIix1PShyPy1uOm4pKyIiLGk9
dS5sZW5ndGg7cmV0dXJuIHIrKGU+aT9uZXcgQXJyYXkoZS1pKzEpLmpvaW4odCkrdTp1KX1mdW5j
dGlvbiBIdChuKXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrbi5tYXAoWm8ucmVxdW90ZSkuam9p
bigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIEZ0KG4pe2Zvcih2YXIgdD1uZXcgbyxlPS0xLHI9bi5s
ZW5ndGg7KytlPHI7KXQuc2V0KG5bZV0udG9Mb3dlckNhc2UoKSxlKTtyZXR1cm4gdH1mdW5jdGlv
biBPdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUr
MSkpO3JldHVybiByPyhuLnc9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWXQobix0
LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSkpO3JldHVybiBy
PyhuLlU9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSXQobix0LGUpe3JjLmxhc3RJ
bmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSkpO3JldHVybiByPyhuLlc9K3JbMF0s
ZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWnQobix0LGUpe3JjLmxhc3RJbmRleD0wO3ZhciBy
PXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzQpKTtyZXR1cm4gcj8obi55PStyWzBdLGUrclswXS5s
ZW5ndGgpOi0xfWZ1bmN0aW9uIFZ0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVj
KHQuc3Vic3RyaW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4ueT0kdCgrclswXSksZStyWzBdLmxlbmd0
aCk6LTF9ZnVuY3Rpb24gWHQobix0LGUpe3JldHVybi9eWystXVxkezR9JC8udGVzdCh0PXQuc3Vi
c3RyaW5nKGUsZSs1KSk/KG4uWj0tdCxlKzUpOi0xfWZ1bmN0aW9uICR0KG4pe3JldHVybiBuKyhu
PjY4PzE5MDA6MmUzKX1mdW5jdGlvbiBCdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMu
ZXhlYyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhuLm09clswXS0xLGUrclswXS5sZW5n
dGgpOi0xfWZ1bmN0aW9uIFd0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQu
c3Vic3RyaW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4uZD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1m
dW5jdGlvbiBKdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmlu
ZyhlLGUrMykpO3JldHVybiByPyhuLmo9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24g
R3Qobix0LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzIp
KTtyZXR1cm4gcj8obi5IPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEt0KG4sdCxl
KXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSsyKSk7cmV0dXJu
IHI/KG4uTT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBRdChuLHQsZSl7cmMubGFz
dEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhuLlM9
K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbmUobix0LGUpe3JjLmxhc3RJbmRleD0w
O3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzMpKTtyZXR1cm4gcj8obi5MPStyWzBdLGUr
clswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHRlKG4pe3ZhciB0PW4uZ2V0VGltZXpvbmVPZmZzZXQo
KSxlPXQ+MD8iLSI6IisiLHI9fn4odWEodCkvNjApLHU9dWEodCklNjA7cmV0dXJuIGUranQociwi
MCIsMikranQodSwiMCIsMil9ZnVuY3Rpb24gZWUobix0LGUpe3VjLmxhc3RJbmRleD0wO3ZhciBy
PXVjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzEpKTtyZXR1cm4gcj9lK3JbMF0ubGVuZ3RoOi0xfWZ1
bmN0aW9uIHJlKG4pe2Zvcih2YXIgdD1uLmxlbmd0aCxlPS0xOysrZTx0OyluW2VdWzBdPXRoaXMo
bltlXVswXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9bltlXTshclsxXSh0KTsp
cj1uWysrZV07cmV0dXJuIHJbMF0odCl9fWZ1bmN0aW9uIHVlKCl7fWZ1bmN0aW9uIGllKG4sdCxl
KXt2YXIgcj1lLnM9bit0LHU9ci1uLGk9ci11O2UudD1uLWkrKHQtdSl9ZnVuY3Rpb24gb2Uobix0
KXtuJiZjYy5oYXNPd25Qcm9wZXJ0eShuLnR5cGUpJiZjY1tuLnR5cGVdKG4sdCl9ZnVuY3Rpb24g
YWUobix0LGUpe3ZhciByLHU9LTEsaT1uLmxlbmd0aC1lO2Zvcih0LmxpbmVTdGFydCgpOysrdTxp
OylyPW5bdV0sdC5wb2ludChyWzBdLHJbMV0sclsyXSk7dC5saW5lRW5kKCl9ZnVuY3Rpb24gY2Uo
bix0KXt2YXIgZT0tMSxyPW4ubGVuZ3RoO2Zvcih0LnBvbHlnb25TdGFydCgpOysrZTxyOylhZShu
W2VdLHQsMSk7dC5wb2x5Z29uRW5kKCl9ZnVuY3Rpb24gc2UoKXtmdW5jdGlvbiBuKG4sdCl7bio9
QWEsdD10KkFhLzIrYmEvNDt2YXIgZT1uLXIsbz1lPj0wPzE6LTEsYT1vKmUsYz1NYXRoLmNvcyh0
KSxzPU1hdGguc2luKHQpLGw9aSpzLGY9dSpjK2wqTWF0aC5jb3MoYSksaD1sKm8qTWF0aC5zaW4o
YSk7bGMuYWRkKE1hdGguYXRhbjIoaCxmKSkscj1uLHU9YyxpPXN9dmFyIHQsZSxyLHUsaTtmYy5w
b2ludD1mdW5jdGlvbihvLGEpe2ZjLnBvaW50PW4scj0odD1vKSpBYSx1PU1hdGguY29zKGE9KGU9
YSkqQWEvMitiYS80KSxpPU1hdGguc2luKGEpfSxmYy5saW5lRW5kPWZ1bmN0aW9uKCl7bih0LGUp
fX1mdW5jdGlvbiBsZShuKXt2YXIgdD1uWzBdLGU9blsxXSxyPU1hdGguY29zKGUpO3JldHVyblty
Kk1hdGguY29zKHQpLHIqTWF0aC5zaW4odCksTWF0aC5zaW4oZSldfWZ1bmN0aW9uIGZlKG4sdCl7
cmV0dXJuIG5bMF0qdFswXStuWzFdKnRbMV0rblsyXSp0WzJdfWZ1bmN0aW9uIGhlKG4sdCl7cmV0
dXJuW25bMV0qdFsyXS1uWzJdKnRbMV0sblsyXSp0WzBdLW5bMF0qdFsyXSxuWzBdKnRbMV0tblsx
XSp0WzBdXX1mdW5jdGlvbiBnZShuLHQpe25bMF0rPXRbMF0sblsxXSs9dFsxXSxuWzJdKz10WzJd
fWZ1bmN0aW9uIHBlKG4sdCl7cmV0dXJuW25bMF0qdCxuWzFdKnQsblsyXSp0XX1mdW5jdGlvbiB2
ZShuKXt2YXIgdD1NYXRoLnNxcnQoblswXSpuWzBdK25bMV0qblsxXStuWzJdKm5bMl0pO25bMF0v
PXQsblsxXS89dCxuWzJdLz10fWZ1bmN0aW9uIGRlKG4pe3JldHVybltNYXRoLmF0YW4yKG5bMV0s
blswXSksRyhuWzJdKV19ZnVuY3Rpb24gbWUobix0KXtyZXR1cm4gdWEoblswXS10WzBdKTxrYSYm
dWEoblsxXS10WzFdKTxrYX1mdW5jdGlvbiB5ZShuLHQpe24qPUFhO3ZhciBlPU1hdGguY29zKHQq
PUFhKTt4ZShlKk1hdGguY29zKG4pLGUqTWF0aC5zaW4obiksTWF0aC5zaW4odCkpfWZ1bmN0aW9u
IHhlKG4sdCxlKXsrK2hjLHBjKz0obi1wYykvaGMsdmMrPSh0LXZjKS9oYyxkYys9KGUtZGMpL2hj
fWZ1bmN0aW9uIE1lKCl7ZnVuY3Rpb24gbihuLHUpe24qPUFhO3ZhciBpPU1hdGguY29zKHUqPUFh
KSxvPWkqTWF0aC5jb3MobiksYT1pKk1hdGguc2luKG4pLGM9TWF0aC5zaW4odSkscz1NYXRoLmF0
YW4yKE1hdGguc3FydCgocz1lKmMtciphKSpzKyhzPXIqby10KmMpKnMrKHM9dCphLWUqbykqcyks
dCpvK2UqYStyKmMpO2djKz1zLG1jKz1zKih0Kyh0PW8pKSx5Yys9cyooZSsoZT1hKSkseGMrPXMq
KHIrKHI9YykpLHhlKHQsZSxyKX12YXIgdCxlLHI7d2MucG9pbnQ9ZnVuY3Rpb24odSxpKXt1Kj1B
YTt2YXIgbz1NYXRoLmNvcyhpKj1BYSk7dD1vKk1hdGguY29zKHUpLGU9bypNYXRoLnNpbih1KSxy
PU1hdGguc2luKGkpLHdjLnBvaW50PW4seGUodCxlLHIpfX1mdW5jdGlvbiBfZSgpe3djLnBvaW50
PXllfWZ1bmN0aW9uIGJlKCl7ZnVuY3Rpb24gbihuLHQpe24qPUFhO3ZhciBlPU1hdGguY29zKHQq
PUFhKSxvPWUqTWF0aC5jb3MobiksYT1lKk1hdGguc2luKG4pLGM9TWF0aC5zaW4odCkscz11KmMt
aSphLGw9aSpvLXIqYyxmPXIqYS11Km8saD1NYXRoLnNxcnQocypzK2wqbCtmKmYpLGc9cipvK3Uq
YStpKmMscD1oJiYtSihnKS9oLHY9TWF0aC5hdGFuMihoLGcpO01jKz1wKnMsX2MrPXAqbCxiYys9
cCpmLGdjKz12LG1jKz12KihyKyhyPW8pKSx5Yys9dioodSsodT1hKSkseGMrPXYqKGkrKGk9Yykp
LHhlKHIsdSxpKX12YXIgdCxlLHIsdSxpO3djLnBvaW50PWZ1bmN0aW9uKG8sYSl7dD1vLGU9YSx3
Yy5wb2ludD1uLG8qPUFhO3ZhciBjPU1hdGguY29zKGEqPUFhKTtyPWMqTWF0aC5jb3MobyksdT1j
Kk1hdGguc2luKG8pLGk9TWF0aC5zaW4oYSkseGUocix1LGkpfSx3Yy5saW5lRW5kPWZ1bmN0aW9u
KCl7bih0LGUpLHdjLmxpbmVFbmQ9X2Usd2MucG9pbnQ9eWV9fWZ1bmN0aW9uIHdlKCl7cmV0dXJu
ITB9ZnVuY3Rpb24gU2Uobix0LGUscix1KXt2YXIgaT1bXSxvPVtdO2lmKG4uZm9yRWFjaChmdW5j
dGlvbihuKXtpZighKCh0PW4ubGVuZ3RoLTEpPD0wKSl7dmFyIHQsZT1uWzBdLHI9blt0XTtpZiht
ZShlLHIpKXt1LmxpbmVTdGFydCgpO2Zvcih2YXIgYT0wO3Q+YTsrK2EpdS5wb2ludCgoZT1uW2Fd
KVswXSxlWzFdKTtyZXR1cm4gdS5saW5lRW5kKCksdm9pZCAwfXZhciBjPW5ldyBFZShlLG4sbnVs
bCwhMCkscz1uZXcgRWUoZSxudWxsLGMsITEpO2Mubz1zLGkucHVzaChjKSxvLnB1c2gocyksYz1u
ZXcgRWUocixuLG51bGwsITEpLHM9bmV3IEVlKHIsbnVsbCxjLCEwKSxjLm89cyxpLnB1c2goYyks
by5wdXNoKHMpfX0pLG8uc29ydCh0KSxrZShpKSxrZShvKSxpLmxlbmd0aCl7Zm9yKHZhciBhPTAs
Yz1lLHM9by5sZW5ndGg7cz5hOysrYSlvW2FdLmU9Yz0hYztmb3IodmFyIGwsZixoPWlbMF07Oyl7
Zm9yKHZhciBnPWgscD0hMDtnLnY7KWlmKChnPWcubik9PT1oKXJldHVybjtsPWcueix1LmxpbmVT
dGFydCgpO2Rve2lmKGcudj1nLm8udj0hMCxnLmUpe2lmKHApZm9yKHZhciBhPTAscz1sLmxlbmd0
aDtzPmE7KythKXUucG9pbnQoKGY9bFthXSlbMF0sZlsxXSk7ZWxzZSByKGcueCxnLm4ueCwxLHUp
O2c9Zy5ufWVsc2V7aWYocCl7bD1nLnAuejtmb3IodmFyIGE9bC5sZW5ndGgtMTthPj0wOy0tYSl1
LnBvaW50KChmPWxbYV0pWzBdLGZbMV0pfWVsc2UgcihnLngsZy5wLngsLTEsdSk7Zz1nLnB9Zz1n
Lm8sbD1nLnoscD0hcH13aGlsZSghZy52KTt1LmxpbmVFbmQoKX19fWZ1bmN0aW9uIGtlKG4pe2lm
KHQ9bi5sZW5ndGgpe2Zvcih2YXIgdCxlLHI9MCx1PW5bMF07KytyPHQ7KXUubj1lPW5bcl0sZS5w
PXUsdT1lO3Uubj1lPW5bMF0sZS5wPXV9fWZ1bmN0aW9uIEVlKG4sdCxlLHIpe3RoaXMueD1uLHRo
aXMuej10LHRoaXMubz1lLHRoaXMuZT1yLHRoaXMudj0hMSx0aGlzLm49dGhpcy5wPW51bGx9ZnVu
Y3Rpb24gQWUobix0LGUscil7cmV0dXJuIGZ1bmN0aW9uKHUsaSl7ZnVuY3Rpb24gbyh0LGUpe3Zh
ciByPXUodCxlKTtuKHQ9clswXSxlPXJbMV0pJiZpLnBvaW50KHQsZSl9ZnVuY3Rpb24gYShuLHQp
e3ZhciBlPXUobix0KTtkLnBvaW50KGVbMF0sZVsxXSl9ZnVuY3Rpb24gYygpe3kucG9pbnQ9YSxk
LmxpbmVTdGFydCgpfWZ1bmN0aW9uIHMoKXt5LnBvaW50PW8sZC5saW5lRW5kKCl9ZnVuY3Rpb24g
bChuLHQpe3YucHVzaChbbix0XSk7dmFyIGU9dShuLHQpO00ucG9pbnQoZVswXSxlWzFdKX1mdW5j
dGlvbiBmKCl7TS5saW5lU3RhcnQoKSx2PVtdfWZ1bmN0aW9uIGgoKXtsKHZbMF1bMF0sdlswXVsx
XSksTS5saW5lRW5kKCk7dmFyIG4sdD1NLmNsZWFuKCksZT14LmJ1ZmZlcigpLHI9ZS5sZW5ndGg7
aWYodi5wb3AoKSxwLnB1c2godiksdj1udWxsLHIpaWYoMSZ0KXtuPWVbMF07dmFyIHUscj1uLmxl
bmd0aC0xLG89LTE7aWYocj4wKXtmb3IoX3x8KGkucG9seWdvblN0YXJ0KCksXz0hMCksaS5saW5l
U3RhcnQoKTsrK288cjspaS5wb2ludCgodT1uW29dKVswXSx1WzFdKTtpLmxpbmVFbmQoKX19ZWxz
ZSByPjEmJjImdCYmZS5wdXNoKGUucG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpLGcucHVzaChlLmZp
bHRlcihDZSkpfXZhciBnLHAsdixkPXQoaSksbT11LmludmVydChyWzBdLHJbMV0pLHk9e3BvaW50
Om8sbGluZVN0YXJ0OmMsbGluZUVuZDpzLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3kucG9pbnQ9
bCx5LmxpbmVTdGFydD1mLHkubGluZUVuZD1oLGc9W10scD1bXX0scG9seWdvbkVuZDpmdW5jdGlv
bigpe3kucG9pbnQ9byx5LmxpbmVTdGFydD1jLHkubGluZUVuZD1zLGc9Wm8ubWVyZ2UoZyk7dmFy
IG49TGUobSxwKTtnLmxlbmd0aD8oX3x8KGkucG9seWdvblN0YXJ0KCksXz0hMCksU2UoZyx6ZSxu
LGUsaSkpOm4mJihffHwoaS5wb2x5Z29uU3RhcnQoKSxfPSEwKSxpLmxpbmVTdGFydCgpLGUobnVs
bCxudWxsLDEsaSksaS5saW5lRW5kKCkpLF8mJihpLnBvbHlnb25FbmQoKSxfPSExKSxnPXA9bnVs
bH0sc3BoZXJlOmZ1bmN0aW9uKCl7aS5wb2x5Z29uU3RhcnQoKSxpLmxpbmVTdGFydCgpLGUobnVs
bCxudWxsLDEsaSksaS5saW5lRW5kKCksaS5wb2x5Z29uRW5kKCl9fSx4PU5lKCksTT10KHgpLF89
ITE7cmV0dXJuIHl9fWZ1bmN0aW9uIENlKG4pe3JldHVybiBuLmxlbmd0aD4xfWZ1bmN0aW9uIE5l
KCl7dmFyIG4sdD1bXTtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5wdXNoKG49W10pfSxw
b2ludDpmdW5jdGlvbih0LGUpe24ucHVzaChbdCxlXSl9LGxpbmVFbmQ6dixidWZmZXI6ZnVuY3Rp
b24oKXt2YXIgZT10O3JldHVybiB0PVtdLG49bnVsbCxlfSxyZWpvaW46ZnVuY3Rpb24oKXt0Lmxl
bmd0aD4xJiZ0LnB1c2godC5wb3AoKS5jb25jYXQodC5zaGlmdCgpKSl9fX1mdW5jdGlvbiB6ZShu
LHQpe3JldHVybigobj1uLngpWzBdPDA/blsxXS1TYS1rYTpTYS1uWzFdKS0oKHQ9dC54KVswXTww
P3RbMV0tU2Eta2E6U2EtdFsxXSl9ZnVuY3Rpb24gTGUobix0KXt2YXIgZT1uWzBdLHI9blsxXSx1
PVtNYXRoLnNpbihlKSwtTWF0aC5jb3MoZSksMF0saT0wLG89MDtsYy5yZXNldCgpO2Zvcih2YXIg
YT0wLGM9dC5sZW5ndGg7Yz5hOysrYSl7dmFyIHM9dFthXSxsPXMubGVuZ3RoO2lmKGwpZm9yKHZh
ciBmPXNbMF0saD1mWzBdLGc9ZlsxXS8yK2JhLzQscD1NYXRoLnNpbihnKSx2PU1hdGguY29zKGcp
LGQ9MTs7KXtkPT09bCYmKGQ9MCksbj1zW2RdO3ZhciBtPW5bMF0seT1uWzFdLzIrYmEvNCx4PU1h
dGguc2luKHkpLE09TWF0aC5jb3MoeSksXz1tLWgsYj1fPj0wPzE6LTEsdz1iKl8sUz13PmJhLGs9
cCp4O2lmKGxjLmFkZChNYXRoLmF0YW4yKGsqYipNYXRoLnNpbih3KSx2Kk0raypNYXRoLmNvcyh3
KSkpLGkrPVM/XytiKndhOl8sU15oPj1lXm0+PWUpe3ZhciBFPWhlKGxlKGYpLGxlKG4pKTt2ZShF
KTt2YXIgQT1oZSh1LEUpO3ZlKEEpO3ZhciBDPShTXl8+PTA/LTE6MSkqRyhBWzJdKTsocj5DfHxy
PT09QyYmKEVbMF18fEVbMV0pKSYmKG8rPVNeXz49MD8xOi0xKX1pZighZCsrKWJyZWFrO2g9bSxw
PXgsdj1NLGY9bn19cmV0dXJuKC1rYT5pfHxrYT5pJiYwPmxjKV4xJm99ZnVuY3Rpb24gVGUobil7
dmFyIHQsZT0wLzAscj0wLzAsdT0wLzA7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe24ubGlu
ZVN0YXJ0KCksdD0xfSxwb2ludDpmdW5jdGlvbihpLG8pe3ZhciBhPWk+MD9iYTotYmEsYz11YShp
LWUpO3VhKGMtYmEpPGthPyhuLnBvaW50KGUscj0ocitvKS8yPjA/U2E6LVNhKSxuLnBvaW50KHUs
ciksbi5saW5lRW5kKCksbi5saW5lU3RhcnQoKSxuLnBvaW50KGEsciksbi5wb2ludChpLHIpLHQ9
MCk6dSE9PWEmJmM+PWJhJiYodWEoZS11KTxrYSYmKGUtPXUqa2EpLHVhKGktYSk8a2EmJihpLT1h
KmthKSxyPXFlKGUscixpLG8pLG4ucG9pbnQodSxyKSxuLmxpbmVFbmQoKSxuLmxpbmVTdGFydCgp
LG4ucG9pbnQoYSxyKSx0PTApLG4ucG9pbnQoZT1pLHI9byksdT1hfSxsaW5lRW5kOmZ1bmN0aW9u
KCl7bi5saW5lRW5kKCksZT1yPTAvMH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gMi10fX19ZnVu
Y3Rpb24gcWUobix0LGUscil7dmFyIHUsaSxvPU1hdGguc2luKG4tZSk7cmV0dXJuIHVhKG8pPmth
P01hdGguYXRhbigoTWF0aC5zaW4odCkqKGk9TWF0aC5jb3MocikpKk1hdGguc2luKGUpLU1hdGgu
c2luKHIpKih1PU1hdGguY29zKHQpKSpNYXRoLnNpbihuKSkvKHUqaSpvKSk6KHQrcikvMn1mdW5j
dGlvbiBSZShuLHQsZSxyKXt2YXIgdTtpZihudWxsPT1uKXU9ZSpTYSxyLnBvaW50KC1iYSx1KSxy
LnBvaW50KDAsdSksci5wb2ludChiYSx1KSxyLnBvaW50KGJhLDApLHIucG9pbnQoYmEsLXUpLHIu
cG9pbnQoMCwtdSksci5wb2ludCgtYmEsLXUpLHIucG9pbnQoLWJhLDApLHIucG9pbnQoLWJhLHUp
O2Vsc2UgaWYodWEoblswXS10WzBdKT5rYSl7dmFyIGk9blswXTx0WzBdP2JhOi1iYTt1PWUqaS8y
LHIucG9pbnQoLWksdSksci5wb2ludCgwLHUpLHIucG9pbnQoaSx1KX1lbHNlIHIucG9pbnQodFsw
XSx0WzFdKX1mdW5jdGlvbiBEZShuKXtmdW5jdGlvbiB0KG4sdCl7cmV0dXJuIE1hdGguY29zKG4p
Kk1hdGguY29zKHQpPml9ZnVuY3Rpb24gZShuKXt2YXIgZSxpLGMscyxsO3JldHVybntsaW5lU3Rh
cnQ6ZnVuY3Rpb24oKXtzPWM9ITEsbD0xfSxwb2ludDpmdW5jdGlvbihmLGgpe3ZhciBnLHA9W2Ys
aF0sdj10KGYsaCksZD1vP3Y/MDp1KGYsaCk6dj91KGYrKDA+Zj9iYTotYmEpLGgpOjA7aWYoIWUm
JihzPWM9dikmJm4ubGluZVN0YXJ0KCksdiE9PWMmJihnPXIoZSxwKSwobWUoZSxnKXx8bWUocCxn
KSkmJihwWzBdKz1rYSxwWzFdKz1rYSx2PXQocFswXSxwWzFdKSkpLHYhPT1jKWw9MCx2PyhuLmxp
bmVTdGFydCgpLGc9cihwLGUpLG4ucG9pbnQoZ1swXSxnWzFdKSk6KGc9cihlLHApLG4ucG9pbnQo
Z1swXSxnWzFdKSxuLmxpbmVFbmQoKSksZT1nO2Vsc2UgaWYoYSYmZSYmb152KXt2YXIgbTtkJml8
fCEobT1yKHAsZSwhMCkpfHwobD0wLG8/KG4ubGluZVN0YXJ0KCksbi5wb2ludChtWzBdWzBdLG1b
MF1bMV0pLG4ucG9pbnQobVsxXVswXSxtWzFdWzFdKSxuLmxpbmVFbmQoKSk6KG4ucG9pbnQobVsx
XVswXSxtWzFdWzFdKSxuLmxpbmVFbmQoKSxuLmxpbmVTdGFydCgpLG4ucG9pbnQobVswXVswXSxt
WzBdWzFdKSkpfSF2fHxlJiZtZShlLHApfHxuLnBvaW50KHBbMF0scFsxXSksZT1wLGM9dixpPWR9
LGxpbmVFbmQ6ZnVuY3Rpb24oKXtjJiZuLmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9u
KCl7cmV0dXJuIGx8KHMmJmMpPDwxfX19ZnVuY3Rpb24gcihuLHQsZSl7dmFyIHI9bGUobiksdT1s
ZSh0KSxvPVsxLDAsMF0sYT1oZShyLHUpLGM9ZmUoYSxhKSxzPWFbMF0sbD1jLXMqcztpZighbCly
ZXR1cm4hZSYmbjt2YXIgZj1pKmMvbCxoPS1pKnMvbCxnPWhlKG8sYSkscD1wZShvLGYpLHY9cGUo
YSxoKTtnZShwLHYpO3ZhciBkPWcsbT1mZShwLGQpLHk9ZmUoZCxkKSx4PW0qbS15KihmZShwLHAp
LTEpO2lmKCEoMD54KSl7dmFyIE09TWF0aC5zcXJ0KHgpLF89cGUoZCwoLW0tTSkveSk7aWYoZ2Uo
XyxwKSxfPWRlKF8pLCFlKXJldHVybiBfO3ZhciBiLHc9blswXSxTPXRbMF0saz1uWzFdLEU9dFsx
XTt3PlMmJihiPXcsdz1TLFM9Yik7dmFyIEE9Uy13LEM9dWEoQS1iYSk8a2EsTj1DfHxrYT5BO2lm
KCFDJiZrPkUmJihiPWssaz1FLEU9YiksTj9DP2srRT4wXl9bMV08KHVhKF9bMF0tdyk8a2E/azpF
KTprPD1fWzFdJiZfWzFdPD1FOkE+YmFeKHc8PV9bMF0mJl9bMF08PVMpKXt2YXIgej1wZShkLCgt
bStNKS95KTtyZXR1cm4gZ2UoeixwKSxbXyxkZSh6KV19fX1mdW5jdGlvbiB1KHQsZSl7dmFyIHI9
bz9uOmJhLW4sdT0wO3JldHVybi1yPnQ/dXw9MTp0PnImJih1fD0yKSwtcj5lP3V8PTQ6ZT5yJiYo
dXw9OCksdX12YXIgaT1NYXRoLmNvcyhuKSxvPWk+MCxhPXVhKGkpPmthLGM9c3Iobiw2KkFhKTty
ZXR1cm4gQWUodCxlLGMsbz9bMCwtbl06Wy1iYSxuLWJhXSl9ZnVuY3Rpb24gUGUobix0LGUscil7
cmV0dXJuIGZ1bmN0aW9uKHUpe3ZhciBpLG89dS5hLGE9dS5iLGM9by54LHM9by55LGw9YS54LGY9
YS55LGg9MCxnPTEscD1sLWMsdj1mLXM7aWYoaT1uLWMscHx8IShpPjApKXtpZihpLz1wLDA+cCl7
aWYoaD5pKXJldHVybjtnPmkmJihnPWkpfWVsc2UgaWYocD4wKXtpZihpPmcpcmV0dXJuO2k+aCYm
KGg9aSl9aWYoaT1lLWMscHx8ISgwPmkpKXtpZihpLz1wLDA+cCl7aWYoaT5nKXJldHVybjtpPmgm
JihoPWkpfWVsc2UgaWYocD4wKXtpZihoPmkpcmV0dXJuO2c+aSYmKGc9aSl9aWYoaT10LXMsdnx8
IShpPjApKXtpZihpLz12LDA+dil7aWYoaD5pKXJldHVybjtnPmkmJihnPWkpfWVsc2UgaWYodj4w
KXtpZihpPmcpcmV0dXJuO2k+aCYmKGg9aSl9aWYoaT1yLXMsdnx8ISgwPmkpKXtpZihpLz12LDA+
dil7aWYoaT5nKXJldHVybjtpPmgmJihoPWkpfWVsc2UgaWYodj4wKXtpZihoPmkpcmV0dXJuO2c+
aSYmKGc9aSl9cmV0dXJuIGg+MCYmKHUuYT17eDpjK2gqcCx5OnMraCp2fSksMT5nJiYodS5iPXt4
OmMrZypwLHk6cytnKnZ9KSx1fX19fX19ZnVuY3Rpb24gVWUobix0LGUscil7ZnVuY3Rpb24gdShy
LHUpe3JldHVybiB1YShyWzBdLW4pPGthP3U+MD8wOjM6dWEoclswXS1lKTxrYT91PjA/MjoxOnVh
KHJbMV0tdCk8a2E/dT4wPzE6MDp1PjA/MzoyfWZ1bmN0aW9uIGkobix0KXtyZXR1cm4gbyhuLngs
dC54KX1mdW5jdGlvbiBvKG4sdCl7dmFyIGU9dShuLDEpLHI9dSh0LDEpO3JldHVybiBlIT09cj9l
LXI6MD09PWU/dFsxXS1uWzFdOjE9PT1lP25bMF0tdFswXToyPT09ZT9uWzFdLXRbMV06dFswXS1u
WzBdfXJldHVybiBmdW5jdGlvbihhKXtmdW5jdGlvbiBjKG4pe2Zvcih2YXIgdD0wLGU9ZC5sZW5n
dGgscj1uWzFdLHU9MDtlPnU7Kyt1KWZvcih2YXIgaSxvPTEsYT1kW3VdLGM9YS5sZW5ndGgscz1h
WzBdO2M+bzsrK28paT1hW29dLHNbMV08PXI/aVsxXT5yJiZXKHMsaSxuKT4wJiYrK3Q6aVsxXTw9
ciYmVyhzLGksbik8MCYmLS10LHM9aTtyZXR1cm4gMCE9PXR9ZnVuY3Rpb24gcyhpLGEsYyxzKXt2
YXIgbD0wLGY9MDtpZihudWxsPT1pfHwobD11KGksYykpIT09KGY9dShhLGMpKXx8byhpLGEpPDBe
Yz4wKXtkbyBzLnBvaW50KDA9PT1sfHwzPT09bD9uOmUsbD4xP3I6dCk7d2hpbGUoKGw9KGwrYys0
KSU0KSE9PWYpfWVsc2Ugcy5wb2ludChhWzBdLGFbMV0pfWZ1bmN0aW9uIGwodSxpKXtyZXR1cm4g
dT49biYmZT49dSYmaT49dCYmcj49aX1mdW5jdGlvbiBmKG4sdCl7bChuLHQpJiZhLnBvaW50KG4s
dCl9ZnVuY3Rpb24gaCgpe04ucG9pbnQ9cCxkJiZkLnB1c2gobT1bXSksUz0hMCx3PSExLF89Yj0w
LzB9ZnVuY3Rpb24gZygpe3YmJihwKHkseCksTSYmdyYmQS5yZWpvaW4oKSx2LnB1c2goQS5idWZm
ZXIoKSkpLE4ucG9pbnQ9Zix3JiZhLmxpbmVFbmQoKX1mdW5jdGlvbiBwKG4sdCl7bj1NYXRoLm1h
eCgta2MsTWF0aC5taW4oa2MsbikpLHQ9TWF0aC5tYXgoLWtjLE1hdGgubWluKGtjLHQpKTt2YXIg
ZT1sKG4sdCk7aWYoZCYmbS5wdXNoKFtuLHRdKSxTKXk9bix4PXQsTT1lLFM9ITEsZSYmKGEubGlu
ZVN0YXJ0KCksYS5wb2ludChuLHQpKTtlbHNlIGlmKGUmJncpYS5wb2ludChuLHQpO2Vsc2V7dmFy
IHI9e2E6e3g6Xyx5OmJ9LGI6e3g6bix5OnR9fTtDKHIpPyh3fHwoYS5saW5lU3RhcnQoKSxhLnBv
aW50KHIuYS54LHIuYS55KSksYS5wb2ludChyLmIueCxyLmIueSksZXx8YS5saW5lRW5kKCksaz0h
MSk6ZSYmKGEubGluZVN0YXJ0KCksYS5wb2ludChuLHQpLGs9ITEpfV89bixiPXQsdz1lfXZhciB2
LGQsbSx5LHgsTSxfLGIsdyxTLGssRT1hLEE9TmUoKSxDPVBlKG4sdCxlLHIpLE49e3BvaW50OmYs
bGluZVN0YXJ0OmgsbGluZUVuZDpnLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2E9QSx2PVtdLGQ9
W10saz0hMH0scG9seWdvbkVuZDpmdW5jdGlvbigpe2E9RSx2PVpvLm1lcmdlKHYpO3ZhciB0PWMo
W24scl0pLGU9ayYmdCx1PXYubGVuZ3RoOyhlfHx1KSYmKGEucG9seWdvblN0YXJ0KCksZSYmKGEu
bGluZVN0YXJ0KCkscyhudWxsLG51bGwsMSxhKSxhLmxpbmVFbmQoKSksdSYmU2UodixpLHQscyxh
KSxhLnBvbHlnb25FbmQoKSksdj1kPW09bnVsbH19O3JldHVybiBOfX1mdW5jdGlvbiBqZShuLHQp
e2Z1bmN0aW9uIGUoZSxyKXtyZXR1cm4gZT1uKGUsciksdChlWzBdLGVbMV0pfXJldHVybiBuLmlu
dmVydCYmdC5pbnZlcnQmJihlLmludmVydD1mdW5jdGlvbihlLHIpe3JldHVybiBlPXQuaW52ZXJ0
KGUsciksZSYmbi5pbnZlcnQoZVswXSxlWzFdKX0pLGV9ZnVuY3Rpb24gSGUobil7dmFyIHQ9MCxl
PWJhLzMscj10cihuKSx1PXIodCxlKTtyZXR1cm4gdS5wYXJhbGxlbHM9ZnVuY3Rpb24obil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/cih0PW5bMF0qYmEvMTgwLGU9blsxXSpiYS8xODApOlsxODAq
KHQvYmEpLDE4MCooZS9iYSldfSx1fWZ1bmN0aW9uIEZlKG4sdCl7ZnVuY3Rpb24gZShuLHQpe3Zh
ciBlPU1hdGguc3FydChpLTIqdSpNYXRoLnNpbih0KSkvdTtyZXR1cm5bZSpNYXRoLnNpbihuKj11
KSxvLWUqTWF0aC5jb3MobildfXZhciByPU1hdGguc2luKG4pLHU9KHIrTWF0aC5zaW4odCkpLzIs
aT0xK3IqKDIqdS1yKSxvPU1hdGguc3FydChpKS91O3JldHVybiBlLmludmVydD1mdW5jdGlvbihu
LHQpe3ZhciBlPW8tdDtyZXR1cm5bTWF0aC5hdGFuMihuLGUpL3UsRygoaS0obipuK2UqZSkqdSp1
KS8oMip1KSldfSxlfWZ1bmN0aW9uIE9lKCl7ZnVuY3Rpb24gbihuLHQpe0FjKz11Km4tcip0LHI9
bix1PXR9dmFyIHQsZSxyLHU7VGMucG9pbnQ9ZnVuY3Rpb24oaSxvKXtUYy5wb2ludD1uLHQ9cj1p
LGU9dT1vfSxUYy5saW5lRW5kPWZ1bmN0aW9uKCl7bih0LGUpfX1mdW5jdGlvbiBZZShuLHQpe0Nj
Pm4mJihDYz1uKSxuPnpjJiYoemM9biksTmM+dCYmKE5jPXQpLHQ+TGMmJihMYz10KX1mdW5jdGlv
biBJZSgpe2Z1bmN0aW9uIG4obix0KXtvLnB1c2goIk0iLG4sIiwiLHQsaSl9ZnVuY3Rpb24gdChu
LHQpe28ucHVzaCgiTSIsbiwiLCIsdCksYS5wb2ludD1lfWZ1bmN0aW9uIGUobix0KXtvLnB1c2go
IkwiLG4sIiwiLHQpfWZ1bmN0aW9uIHIoKXthLnBvaW50PW59ZnVuY3Rpb24gdSgpe28ucHVzaCgi
WiIpfXZhciBpPVplKDQuNSksbz1bXSxhPXtwb2ludDpuLGxpbmVTdGFydDpmdW5jdGlvbigpe2Eu
cG9pbnQ9dH0sbGluZUVuZDpyLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2EubGluZUVuZD11fSxw
b2x5Z29uRW5kOmZ1bmN0aW9uKCl7YS5saW5lRW5kPXIsYS5wb2ludD1ufSxwb2ludFJhZGl1czpm
dW5jdGlvbihuKXtyZXR1cm4gaT1aZShuKSxhfSxyZXN1bHQ6ZnVuY3Rpb24oKXtpZihvLmxlbmd0
aCl7dmFyIG49by5qb2luKCIiKTtyZXR1cm4gbz1bXSxufX19O3JldHVybiBhfWZ1bmN0aW9uIFpl
KG4pe3JldHVybiJtMCwiK24rImEiK24rIiwiK24rIiAwIDEsMSAwLCIrLTIqbisiYSIrbisiLCIr
bisiIDAgMSwxIDAsIisyKm4rInoifWZ1bmN0aW9uIFZlKG4sdCl7cGMrPW4sdmMrPXQsKytkY31m
dW5jdGlvbiBYZSgpe2Z1bmN0aW9uIG4obixyKXt2YXIgdT1uLXQsaT1yLWUsbz1NYXRoLnNxcnQo
dSp1K2kqaSk7bWMrPW8qKHQrbikvMix5Yys9byooZStyKS8yLHhjKz1vLFZlKHQ9bixlPXIpfXZh
ciB0LGU7UmMucG9pbnQ9ZnVuY3Rpb24ocix1KXtSYy5wb2ludD1uLFZlKHQ9cixlPXUpfX1mdW5j
dGlvbiAkZSgpe1JjLnBvaW50PVZlfWZ1bmN0aW9uIEJlKCl7ZnVuY3Rpb24gbihuLHQpe3ZhciBl
PW4tcixpPXQtdSxvPU1hdGguc3FydChlKmUraSppKTttYys9byoocituKS8yLHljKz1vKih1K3Qp
LzIseGMrPW8sbz11Km4tcip0LE1jKz1vKihyK24pLF9jKz1vKih1K3QpLGJjKz0zKm8sVmUocj1u
LHU9dCl9dmFyIHQsZSxyLHU7UmMucG9pbnQ9ZnVuY3Rpb24oaSxvKXtSYy5wb2ludD1uLFZlKHQ9
cj1pLGU9dT1vKX0sUmMubGluZUVuZD1mdW5jdGlvbigpe24odCxlKX19ZnVuY3Rpb24gV2Uobil7
ZnVuY3Rpb24gdCh0LGUpe24ubW92ZVRvKHQsZSksbi5hcmModCxlLG8sMCx3YSl9ZnVuY3Rpb24g
ZSh0LGUpe24ubW92ZVRvKHQsZSksYS5wb2ludD1yfWZ1bmN0aW9uIHIodCxlKXtuLmxpbmVUbyh0
LGUpfWZ1bmN0aW9uIHUoKXthLnBvaW50PXR9ZnVuY3Rpb24gaSgpe24uY2xvc2VQYXRoKCl9dmFy
IG89NC41LGE9e3BvaW50OnQsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7YS5wb2ludD1lfSxsaW5lRW5k
OnUscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7YS5saW5lRW5kPWl9LHBvbHlnb25FbmQ6ZnVuY3Rp
b24oKXthLmxpbmVFbmQ9dSxhLnBvaW50PXR9LHBvaW50UmFkaXVzOmZ1bmN0aW9uKG4pe3JldHVy
biBvPW4sYX0scmVzdWx0OnZ9O3JldHVybiBhfWZ1bmN0aW9uIEplKG4pe2Z1bmN0aW9uIHQobil7
cmV0dXJuKGE/cjplKShuKX1mdW5jdGlvbiBlKHQpe3JldHVybiBRZSh0LGZ1bmN0aW9uKGUscil7
ZT1uKGUsciksdC5wb2ludChlWzBdLGVbMV0pfSl9ZnVuY3Rpb24gcih0KXtmdW5jdGlvbiBlKGUs
cil7ZT1uKGUsciksdC5wb2ludChlWzBdLGVbMV0pfWZ1bmN0aW9uIHIoKXt4PTAvMCxTLnBvaW50
PWksdC5saW5lU3RhcnQoKX1mdW5jdGlvbiBpKGUscil7dmFyIGk9bGUoW2Uscl0pLG89bihlLHIp
O3UoeCxNLHksXyxiLHcseD1vWzBdLE09b1sxXSx5PWUsXz1pWzBdLGI9aVsxXSx3PWlbMl0sYSx0
KSx0LnBvaW50KHgsTSl9ZnVuY3Rpb24gbygpe1MucG9pbnQ9ZSx0LmxpbmVFbmQoKX1mdW5jdGlv
biBjKCl7cigpLFMucG9pbnQ9cyxTLmxpbmVFbmQ9bH1mdW5jdGlvbiBzKG4sdCl7aShmPW4saD10
KSxnPXgscD1NLHY9XyxkPWIsbT13LFMucG9pbnQ9aX1mdW5jdGlvbiBsKCl7dSh4LE0seSxfLGIs
dyxnLHAsZix2LGQsbSxhLHQpLFMubGluZUVuZD1vLG8oKX12YXIgZixoLGcscCx2LGQsbSx5LHgs
TSxfLGIsdyxTPXtwb2ludDplLGxpbmVTdGFydDpyLGxpbmVFbmQ6byxwb2x5Z29uU3RhcnQ6ZnVu
Y3Rpb24oKXt0LnBvbHlnb25TdGFydCgpLFMubGluZVN0YXJ0PWN9LHBvbHlnb25FbmQ6ZnVuY3Rp
b24oKXt0LnBvbHlnb25FbmQoKSxTLmxpbmVTdGFydD1yfX07cmV0dXJuIFN9ZnVuY3Rpb24gdSh0
LGUscixhLGMscyxsLGYsaCxnLHAsdixkLG0pe3ZhciB5PWwtdCx4PWYtZSxNPXkqeSt4Kng7aWYo
TT40KmkmJmQtLSl7dmFyIF89YStnLGI9YytwLHc9cyt2LFM9TWF0aC5zcXJ0KF8qXytiKmIrdyp3
KSxrPU1hdGguYXNpbih3Lz1TKSxFPXVhKHVhKHcpLTEpPGthfHx1YShyLWgpPGthPyhyK2gpLzI6
TWF0aC5hdGFuMihiLF8pLEE9bihFLGspLEM9QVswXSxOPUFbMV0sej1DLXQsTD1OLWUsVD14Knot
eSpMOyhUKlQvTT5pfHx1YSgoeSp6K3gqTCkvTS0uNSk+LjN8fG8+YSpnK2MqcCtzKnYpJiYodSh0
LGUscixhLGMscyxDLE4sRSxfLz1TLGIvPVMsdyxkLG0pLG0ucG9pbnQoQyxOKSx1KEMsTixFLF8s
Yix3LGwsZixoLGcscCx2LGQsbSkpfX12YXIgaT0uNSxvPU1hdGguY29zKDMwKkFhKSxhPTE2Owor
cmV0dXJuIHQucHJlY2lzaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhh
PShpPW4qbik+MCYmMTYsdCk6TWF0aC5zcXJ0KGkpfSx0fWZ1bmN0aW9uIEdlKG4pe3ZhciB0PUpl
KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oW3QqQ2EsZSpDYV0pfSk7cmV0dXJuIGZ1bmN0aW9uKG4p
e3JldHVybiBlcih0KG4pKX19ZnVuY3Rpb24gS2Uobil7dGhpcy5zdHJlYW09bn1mdW5jdGlvbiBR
ZShuLHQpe3JldHVybntwb2ludDp0LHNwaGVyZTpmdW5jdGlvbigpe24uc3BoZXJlKCl9LGxpbmVT
dGFydDpmdW5jdGlvbigpe24ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtuLmxpbmVF
bmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7bi5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVu
ZDpmdW5jdGlvbigpe24ucG9seWdvbkVuZCgpfX19ZnVuY3Rpb24gbnIobil7cmV0dXJuIHRyKGZ1
bmN0aW9uKCl7cmV0dXJuIG59KSgpfWZ1bmN0aW9uIHRyKG4pe2Z1bmN0aW9uIHQobil7cmV0dXJu
IG49YShuWzBdKkFhLG5bMV0qQWEpLFtuWzBdKmgrYyxzLW5bMV0qaF19ZnVuY3Rpb24gZShuKXty
ZXR1cm4gbj1hLmludmVydCgoblswXS1jKS9oLChzLW5bMV0pL2gpLG4mJltuWzBdKkNhLG5bMV0q
Q2FdfWZ1bmN0aW9uIHIoKXthPWplKG89aXIobSx5LHgpLGkpO3ZhciBuPWkodixkKTtyZXR1cm4g
Yz1nLW5bMF0qaCxzPXArblsxXSpoLHUoKX1mdW5jdGlvbiB1KCl7cmV0dXJuIGwmJihsLnZhbGlk
PSExLGw9bnVsbCksdH12YXIgaSxvLGEsYyxzLGwsZj1KZShmdW5jdGlvbihuLHQpe3JldHVybiBu
PWkobix0KSxbblswXSpoK2Mscy1uWzFdKmhdfSksaD0xNTAsZz00ODAscD0yNTAsdj0wLGQ9MCxt
PTAseT0wLHg9MCxNPVNjLF89d3QsYj1udWxsLHc9bnVsbDtyZXR1cm4gdC5zdHJlYW09ZnVuY3Rp
b24obil7cmV0dXJuIGwmJihsLnZhbGlkPSExKSxsPWVyKE0obyxmKF8obikpKSksbC52YWxpZD0h
MCxsfSx0LmNsaXBBbmdsZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT1u
dWxsPT1uPyhiPW4sU2MpOkRlKChiPStuKSpBYSksdSgpKTpifSx0LmNsaXBFeHRlbnQ9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9bixfPW4/VWUoblswXVswXSxuWzBdWzFd
LG5bMV1bMF0sblsxXVsxXSk6d3QsdSgpKTp3fSx0LnNjYWxlPWZ1bmN0aW9uKG4pe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhoPStuLHIoKSk6aH0sdC50cmFuc2xhdGU9ZnVuY3Rpb24obil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9K25bMF0scD0rblsxXSxyKCkpOltnLHBdfSx0LmNlbnRl
cj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj1uWzBdJTM2MCpBYSxkPW5b
MV0lMzYwKkFhLHIoKSk6W3YqQ2EsZCpDYV19LHQucm90YXRlPWZ1bmN0aW9uKG4pe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhtPW5bMF0lMzYwKkFhLHk9blsxXSUzNjAqQWEseD1uLmxlbmd0aD4y
P25bMl0lMzYwKkFhOjAscigpKTpbbSpDYSx5KkNhLHgqQ2FdfSxaby5yZWJpbmQodCxmLCJwcmVj
aXNpb24iKSxmdW5jdGlvbigpe3JldHVybiBpPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHQuaW52
ZXJ0PWkuaW52ZXJ0JiZlLHIoKX19ZnVuY3Rpb24gZXIobil7cmV0dXJuIFFlKG4sZnVuY3Rpb24o
dCxlKXtuLnBvaW50KHQqQWEsZSpBYSl9KX1mdW5jdGlvbiBycihuLHQpe3JldHVybltuLHRdfWZ1
bmN0aW9uIHVyKG4sdCl7cmV0dXJuW24+YmE/bi13YTotYmE+bj9uK3dhOm4sdF19ZnVuY3Rpb24g
aXIobix0LGUpe3JldHVybiBuP3R8fGU/amUoYXIobiksY3IodCxlKSk6YXIobik6dHx8ZT9jcih0
LGUpOnVyfWZ1bmN0aW9uIG9yKG4pe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiB0Kz1uLFt0
PmJhP3Qtd2E6LWJhPnQ/dCt3YTp0LGVdfX1mdW5jdGlvbiBhcihuKXt2YXIgdD1vcihuKTtyZXR1
cm4gdC5pbnZlcnQ9b3IoLW4pLHR9ZnVuY3Rpb24gY3Iobix0KXtmdW5jdGlvbiBlKG4sdCl7dmFy
IGU9TWF0aC5jb3ModCksYT1NYXRoLmNvcyhuKSplLGM9TWF0aC5zaW4obikqZSxzPU1hdGguc2lu
KHQpLGw9cypyK2EqdTtyZXR1cm5bTWF0aC5hdGFuMihjKmktbCpvLGEqci1zKnUpLEcobCppK2Mq
byldfXZhciByPU1hdGguY29zKG4pLHU9TWF0aC5zaW4obiksaT1NYXRoLmNvcyh0KSxvPU1hdGgu
c2luKHQpO3JldHVybiBlLmludmVydD1mdW5jdGlvbihuLHQpe3ZhciBlPU1hdGguY29zKHQpLGE9
TWF0aC5jb3MobikqZSxjPU1hdGguc2luKG4pKmUscz1NYXRoLnNpbih0KSxsPXMqaS1jKm87cmV0
dXJuW01hdGguYXRhbjIoYyppK3MqbyxhKnIrbCp1KSxHKGwqci1hKnUpXX0sZX1mdW5jdGlvbiBz
cihuLHQpe3ZhciBlPU1hdGguY29zKG4pLHI9TWF0aC5zaW4obik7cmV0dXJuIGZ1bmN0aW9uKHUs
aSxvLGEpe3ZhciBjPW8qdDtudWxsIT11Pyh1PWxyKGUsdSksaT1scihlLGkpLChvPjA/aT51OnU+
aSkmJih1Kz1vKndhKSk6KHU9bitvKndhLGk9bi0uNSpjKTtmb3IodmFyIHMsbD11O28+MD9sPmk6
aT5sO2wtPWMpYS5wb2ludCgocz1kZShbZSwtcipNYXRoLmNvcyhsKSwtcipNYXRoLnNpbihsKV0p
KVswXSxzWzFdKX19ZnVuY3Rpb24gbHIobix0KXt2YXIgZT1sZSh0KTtlWzBdLT1uLHZlKGUpO3Zh
ciByPUooLWVbMV0pO3JldHVybigoLWVbMl08MD8tcjpyKSsyKk1hdGguUEkta2EpJSgyKk1hdGgu
UEkpfWZ1bmN0aW9uIGZyKG4sdCxlKXt2YXIgcj1aby5yYW5nZShuLHQta2EsZSkuY29uY2F0KHQp
O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW24sdF19
KX19ZnVuY3Rpb24gaHIobix0LGUpe3ZhciByPVpvLnJhbmdlKG4sdC1rYSxlKS5jb25jYXQodCk7
cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiByLm1hcChmdW5jdGlvbih0KXtyZXR1cm5bdCxuXX0p
fX1mdW5jdGlvbiBncihuKXtyZXR1cm4gbi5zb3VyY2V9ZnVuY3Rpb24gcHIobil7cmV0dXJuIG4u
dGFyZ2V0fWZ1bmN0aW9uIHZyKG4sdCxlLHIpe3ZhciB1PU1hdGguY29zKHQpLGk9TWF0aC5zaW4o
dCksbz1NYXRoLmNvcyhyKSxhPU1hdGguc2luKHIpLGM9dSpNYXRoLmNvcyhuKSxzPXUqTWF0aC5z
aW4obiksbD1vKk1hdGguY29zKGUpLGY9bypNYXRoLnNpbihlKSxoPTIqTWF0aC5hc2luKE1hdGgu
c3FydCh0dChyLXQpK3Uqbyp0dChlLW4pKSksZz0xL01hdGguc2luKGgpLHA9aD9mdW5jdGlvbihu
KXt2YXIgdD1NYXRoLnNpbihuKj1oKSpnLGU9TWF0aC5zaW4oaC1uKSpnLHI9ZSpjK3QqbCx1PWUq
cyt0KmYsbz1lKmkrdCphO3JldHVybltNYXRoLmF0YW4yKHUscikqQ2EsTWF0aC5hdGFuMihvLE1h
dGguc3FydChyKnIrdSp1KSkqQ2FdfTpmdW5jdGlvbigpe3JldHVybltuKkNhLHQqQ2FdfTtyZXR1
cm4gcC5kaXN0YW5jZT1oLHB9ZnVuY3Rpb24gZHIoKXtmdW5jdGlvbiBuKG4sdSl7dmFyIGk9TWF0
aC5zaW4odSo9QWEpLG89TWF0aC5jb3ModSksYT11YSgobio9QWEpLXQpLGM9TWF0aC5jb3MoYSk7
RGMrPU1hdGguYXRhbjIoTWF0aC5zcXJ0KChhPW8qTWF0aC5zaW4oYSkpKmErKGE9cippLWUqbypj
KSphKSxlKmkrcipvKmMpLHQ9bixlPWkscj1vfXZhciB0LGUscjtQYy5wb2ludD1mdW5jdGlvbih1
LGkpe3Q9dSpBYSxlPU1hdGguc2luKGkqPUFhKSxyPU1hdGguY29zKGkpLFBjLnBvaW50PW59LFBj
LmxpbmVFbmQ9ZnVuY3Rpb24oKXtQYy5wb2ludD1QYy5saW5lRW5kPXZ9fWZ1bmN0aW9uIG1yKG4s
dCl7ZnVuY3Rpb24gZSh0LGUpe3ZhciByPU1hdGguY29zKHQpLHU9TWF0aC5jb3MoZSksaT1uKHIq
dSk7cmV0dXJuW2kqdSpNYXRoLnNpbih0KSxpKk1hdGguc2luKGUpXX1yZXR1cm4gZS5pbnZlcnQ9
ZnVuY3Rpb24obixlKXt2YXIgcj1NYXRoLnNxcnQobipuK2UqZSksdT10KHIpLGk9TWF0aC5zaW4o
dSksbz1NYXRoLmNvcyh1KTtyZXR1cm5bTWF0aC5hdGFuMihuKmkscipvKSxNYXRoLmFzaW4ociYm
ZSppL3IpXX0sZX1mdW5jdGlvbiB5cihuLHQpe2Z1bmN0aW9uIGUobix0KXtvPjA/LVNhK2thPnQm
Jih0PS1TYStrYSk6dD5TYS1rYSYmKHQ9U2Eta2EpO3ZhciBlPW8vTWF0aC5wb3codSh0KSxpKTty
ZXR1cm5bZSpNYXRoLnNpbihpKm4pLG8tZSpNYXRoLmNvcyhpKm4pXX12YXIgcj1NYXRoLmNvcyhu
KSx1PWZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnRhbihiYS80K24vMil9LGk9bj09PXQ/TWF0aC5z
aW4obik6TWF0aC5sb2coci9NYXRoLmNvcyh0KSkvTWF0aC5sb2codSh0KS91KG4pKSxvPXIqTWF0
aC5wb3codShuKSxpKS9pO3JldHVybiBpPyhlLmludmVydD1mdW5jdGlvbihuLHQpe3ZhciBlPW8t
dCxyPUIoaSkqTWF0aC5zcXJ0KG4qbitlKmUpO3JldHVybltNYXRoLmF0YW4yKG4sZSkvaSwyKk1h
dGguYXRhbihNYXRoLnBvdyhvL3IsMS9pKSktU2FdfSxlKTpNcn1mdW5jdGlvbiB4cihuLHQpe2Z1
bmN0aW9uIGUobix0KXt2YXIgZT1pLXQ7cmV0dXJuW2UqTWF0aC5zaW4odSpuKSxpLWUqTWF0aC5j
b3ModSpuKV19dmFyIHI9TWF0aC5jb3MobiksdT1uPT09dD9NYXRoLnNpbihuKTooci1NYXRoLmNv
cyh0KSkvKHQtbiksaT1yL3UrbjtyZXR1cm4gdWEodSk8a2E/cnI6KGUuaW52ZXJ0PWZ1bmN0aW9u
KG4sdCl7dmFyIGU9aS10O3JldHVybltNYXRoLmF0YW4yKG4sZSkvdSxpLUIodSkqTWF0aC5zcXJ0
KG4qbitlKmUpXX0sZSl9ZnVuY3Rpb24gTXIobix0KXtyZXR1cm5bbixNYXRoLmxvZyhNYXRoLnRh
bihiYS80K3QvMikpXX1mdW5jdGlvbiBfcihuKXt2YXIgdCxlPW5yKG4pLHI9ZS5zY2FsZSx1PWUu
dHJhbnNsYXRlLGk9ZS5jbGlwRXh0ZW50O3JldHVybiBlLnNjYWxlPWZ1bmN0aW9uKCl7dmFyIG49
ci5hcHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIG49PT1lP3Q/ZS5jbGlwRXh0ZW50KG51bGwpOmU6
bn0sZS50cmFuc2xhdGU9ZnVuY3Rpb24oKXt2YXIgbj11LmFwcGx5KGUsYXJndW1lbnRzKTtyZXR1
cm4gbj09PWU/dD9lLmNsaXBFeHRlbnQobnVsbCk6ZTpufSxlLmNsaXBFeHRlbnQ9ZnVuY3Rpb24o
bil7dmFyIG89aS5hcHBseShlLGFyZ3VtZW50cyk7aWYobz09PWUpe2lmKHQ9bnVsbD09bil7dmFy
IGE9YmEqcigpLGM9dSgpO2koW1tjWzBdLWEsY1sxXS1hXSxbY1swXSthLGNbMV0rYV1dKX19ZWxz
ZSB0JiYobz1udWxsKTtyZXR1cm4gb30sZS5jbGlwRXh0ZW50KG51bGwpfWZ1bmN0aW9uIGJyKG4s
dCl7cmV0dXJuW01hdGgubG9nKE1hdGgudGFuKGJhLzQrdC8yKSksLW5dfWZ1bmN0aW9uIHdyKG4p
e3JldHVybiBuWzBdfWZ1bmN0aW9uIFNyKG4pe3JldHVybiBuWzFdfWZ1bmN0aW9uIGtyKG4pe2Zv
cih2YXIgdD1uLmxlbmd0aCxlPVswLDFdLHI9Mix1PTI7dD51O3UrKyl7Zm9yKDtyPjEmJlcobltl
W3ItMl1dLG5bZVtyLTFdXSxuW3VdKTw9MDspLS1yO2VbcisrXT11fXJldHVybiBlLnNsaWNlKDAs
cil9ZnVuY3Rpb24gRXIobix0KXtyZXR1cm4gblswXS10WzBdfHxuWzFdLXRbMV19ZnVuY3Rpb24g
QXIobix0LGUpe3JldHVybihlWzBdLXRbMF0pKihuWzFdLXRbMV0pPChlWzFdLXRbMV0pKihuWzBd
LXRbMF0pfWZ1bmN0aW9uIENyKG4sdCxlLHIpe3ZhciB1PW5bMF0saT1lWzBdLG89dFswXS11LGE9
clswXS1pLGM9blsxXSxzPWVbMV0sbD10WzFdLWMsZj1yWzFdLXMsaD0oYSooYy1zKS1mKih1LWkp
KS8oZipvLWEqbCk7cmV0dXJuW3UraCpvLGMraCpsXX1mdW5jdGlvbiBOcihuKXt2YXIgdD1uWzBd
LGU9bltuLmxlbmd0aC0xXTtyZXR1cm4hKHRbMF0tZVswXXx8dFsxXS1lWzFdKX1mdW5jdGlvbiB6
cigpe0dyKHRoaXMpLHRoaXMuZWRnZT10aGlzLnNpdGU9dGhpcy5jaXJjbGU9bnVsbH1mdW5jdGlv
biBMcihuKXt2YXIgdD1CYy5wb3AoKXx8bmV3IHpyO3JldHVybiB0LnNpdGU9bix0fWZ1bmN0aW9u
IFRyKG4pe1lyKG4pLFZjLnJlbW92ZShuKSxCYy5wdXNoKG4pLEdyKG4pfWZ1bmN0aW9uIHFyKG4p
e3ZhciB0PW4uY2lyY2xlLGU9dC54LHI9dC5jeSx1PXt4OmUseTpyfSxpPW4uUCxvPW4uTixhPVtu
XTtUcihuKTtmb3IodmFyIGM9aTtjLmNpcmNsZSYmdWEoZS1jLmNpcmNsZS54KTxrYSYmdWEoci1j
LmNpcmNsZS5jeSk8a2E7KWk9Yy5QLGEudW5zaGlmdChjKSxUcihjKSxjPWk7YS51bnNoaWZ0KGMp
LFlyKGMpO2Zvcih2YXIgcz1vO3MuY2lyY2xlJiZ1YShlLXMuY2lyY2xlLngpPGthJiZ1YShyLXMu
Y2lyY2xlLmN5KTxrYTspbz1zLk4sYS5wdXNoKHMpLFRyKHMpLHM9bzthLnB1c2gocyksWXIocyk7
dmFyIGwsZj1hLmxlbmd0aDtmb3IobD0xO2Y+bDsrK2wpcz1hW2xdLGM9YVtsLTFdLEJyKHMuZWRn
ZSxjLnNpdGUscy5zaXRlLHUpO2M9YVswXSxzPWFbZi0xXSxzLmVkZ2U9WHIoYy5zaXRlLHMuc2l0
ZSxudWxsLHUpLE9yKGMpLE9yKHMpfWZ1bmN0aW9uIFJyKG4pe2Zvcih2YXIgdCxlLHIsdSxpPW4u
eCxvPW4ueSxhPVZjLl87YTspaWYocj1EcihhLG8pLWkscj5rYSlhPWEuTDtlbHNle2lmKHU9aS1Q
cihhLG8pLCEodT5rYSkpe3I+LWthPyh0PWEuUCxlPWEpOnU+LWthPyh0PWEsZT1hLk4pOnQ9ZT1h
O2JyZWFrfWlmKCFhLlIpe3Q9YTticmVha31hPWEuUn12YXIgYz1McihuKTtpZihWYy5pbnNlcnQo
dCxjKSx0fHxlKXtpZih0PT09ZSlyZXR1cm4gWXIodCksZT1Mcih0LnNpdGUpLFZjLmluc2VydChj
LGUpLGMuZWRnZT1lLmVkZ2U9WHIodC5zaXRlLGMuc2l0ZSksT3IodCksT3IoZSksdm9pZCAwO2lm
KCFlKXJldHVybiBjLmVkZ2U9WHIodC5zaXRlLGMuc2l0ZSksdm9pZCAwO1lyKHQpLFlyKGUpO3Zh
ciBzPXQuc2l0ZSxsPXMueCxmPXMueSxoPW4ueC1sLGc9bi55LWYscD1lLnNpdGUsdj1wLngtbCxk
PXAueS1mLG09MiooaCpkLWcqdikseT1oKmgrZypnLHg9dip2K2QqZCxNPXt4OihkKnktZyp4KS9t
K2wseTooaCp4LXYqeSkvbStmfTtCcihlLmVkZ2UscyxwLE0pLGMuZWRnZT1YcihzLG4sbnVsbCxN
KSxlLmVkZ2U9WHIobixwLG51bGwsTSksT3IodCksT3IoZSl9fWZ1bmN0aW9uIERyKG4sdCl7dmFy
IGU9bi5zaXRlLHI9ZS54LHU9ZS55LGk9dS10O2lmKCFpKXJldHVybiByO3ZhciBvPW4uUDtpZigh
bylyZXR1cm4tMS8wO2U9by5zaXRlO3ZhciBhPWUueCxjPWUueSxzPWMtdDtpZighcylyZXR1cm4g
YTt2YXIgbD1hLXIsZj0xL2ktMS9zLGg9bC9zO3JldHVybiBmPygtaCtNYXRoLnNxcnQoaCpoLTIq
ZioobCpsLygtMipzKS1jK3MvMit1LWkvMikpKS9mK3I6KHIrYSkvMn1mdW5jdGlvbiBQcihuLHQp
e3ZhciBlPW4uTjtpZihlKXJldHVybiBEcihlLHQpO3ZhciByPW4uc2l0ZTtyZXR1cm4gci55PT09
dD9yLng6MS8wfWZ1bmN0aW9uIFVyKG4pe3RoaXMuc2l0ZT1uLHRoaXMuZWRnZXM9W119ZnVuY3Rp
b24ganIobil7Zm9yKHZhciB0LGUscix1LGksbyxhLGMscyxsLGY9blswXVswXSxoPW5bMV1bMF0s
Zz1uWzBdWzFdLHA9blsxXVsxXSx2PVpjLGQ9di5sZW5ndGg7ZC0tOylpZihpPXZbZF0saSYmaS5w
cmVwYXJlKCkpZm9yKGE9aS5lZGdlcyxjPWEubGVuZ3RoLG89MDtjPm87KWw9YVtvXS5lbmQoKSxy
PWwueCx1PWwueSxzPWFbKytvJWNdLnN0YXJ0KCksdD1zLngsZT1zLnksKHVhKHItdCk+a2F8fHVh
KHUtZSk+a2EpJiYoYS5zcGxpY2UobywwLG5ldyBXcigkcihpLnNpdGUsbCx1YShyLWYpPGthJiZw
LXU+a2E/e3g6Zix5OnVhKHQtZik8a2E/ZTpwfTp1YSh1LXApPGthJiZoLXI+a2E/e3g6dWEoZS1w
KTxrYT90OmgseTpwfTp1YShyLWgpPGthJiZ1LWc+a2E/e3g6aCx5OnVhKHQtaCk8a2E/ZTpnfTp1
YSh1LWcpPGthJiZyLWY+a2E/e3g6dWEoZS1nKTxrYT90OmYseTpnfTpudWxsKSxpLnNpdGUsbnVs
bCkpLCsrYyl9ZnVuY3Rpb24gSHIobix0KXtyZXR1cm4gdC5hbmdsZS1uLmFuZ2xlfWZ1bmN0aW9u
IEZyKCl7R3IodGhpcyksdGhpcy54PXRoaXMueT10aGlzLmFyYz10aGlzLnNpdGU9dGhpcy5jeT1u
dWxsfWZ1bmN0aW9uIE9yKG4pe3ZhciB0PW4uUCxlPW4uTjtpZih0JiZlKXt2YXIgcj10LnNpdGUs
dT1uLnNpdGUsaT1lLnNpdGU7aWYociE9PWkpe3ZhciBvPXUueCxhPXUueSxjPXIueC1vLHM9ci55
LWEsbD1pLngtbyxmPWkueS1hLGg9MiooYypmLXMqbCk7aWYoIShoPj0tRWEpKXt2YXIgZz1jKmMr
cypzLHA9bCpsK2YqZix2PShmKmctcypwKS9oLGQ9KGMqcC1sKmcpL2gsZj1kK2EsbT1XYy5wb3Ao
KXx8bmV3IEZyO20uYXJjPW4sbS5zaXRlPXUsbS54PXYrbyxtLnk9ZitNYXRoLnNxcnQodip2K2Qq
ZCksbS5jeT1mLG4uY2lyY2xlPW07Zm9yKHZhciB5PW51bGwseD0kYy5fO3g7KWlmKG0ueTx4Lnl8
fG0ueT09PXgueSYmbS54PD14Lngpe2lmKCF4Lkwpe3k9eC5QO2JyZWFrfXg9eC5MfWVsc2V7aWYo
IXguUil7eT14O2JyZWFrfXg9eC5SfSRjLmluc2VydCh5LG0pLHl8fChYYz1tKX19fX1mdW5jdGlv
biBZcihuKXt2YXIgdD1uLmNpcmNsZTt0JiYodC5QfHwoWGM9dC5OKSwkYy5yZW1vdmUodCksV2Mu
cHVzaCh0KSxHcih0KSxuLmNpcmNsZT1udWxsKX1mdW5jdGlvbiBJcihuKXtmb3IodmFyIHQsZT1J
YyxyPVBlKG5bMF1bMF0sblswXVsxXSxuWzFdWzBdLG5bMV1bMV0pLHU9ZS5sZW5ndGg7dS0tOyl0
PWVbdV0sKCFacih0LG4pfHwhcih0KXx8dWEodC5hLngtdC5iLngpPGthJiZ1YSh0LmEueS10LmIu
eSk8a2EpJiYodC5hPXQuYj1udWxsLGUuc3BsaWNlKHUsMSkpfWZ1bmN0aW9uIFpyKG4sdCl7dmFy
IGU9bi5iO2lmKGUpcmV0dXJuITA7dmFyIHIsdSxpPW4uYSxvPXRbMF1bMF0sYT10WzFdWzBdLGM9
dFswXVsxXSxzPXRbMV1bMV0sbD1uLmwsZj1uLnIsaD1sLngsZz1sLnkscD1mLngsdj1mLnksZD0o
aCtwKS8yLG09KGcrdikvMjtpZih2PT09Zyl7aWYobz5kfHxkPj1hKXJldHVybjtpZihoPnApe2lm
KGkpe2lmKGkueT49cylyZXR1cm59ZWxzZSBpPXt4OmQseTpjfTtlPXt4OmQseTpzfX1lbHNle2lm
KGkpe2lmKGkueTxjKXJldHVybn1lbHNlIGk9e3g6ZCx5OnN9O2U9e3g6ZCx5OmN9fX1lbHNlIGlm
KHI9KGgtcCkvKHYtZyksdT1tLXIqZCwtMT5yfHxyPjEpaWYoaD5wKXtpZihpKXtpZihpLnk+PXMp
cmV0dXJufWVsc2UgaT17eDooYy11KS9yLHk6Y307ZT17eDoocy11KS9yLHk6c319ZWxzZXtpZihp
KXtpZihpLnk8YylyZXR1cm59ZWxzZSBpPXt4OihzLXUpL3IseTpzfTtlPXt4OihjLXUpL3IseTpj
fX1lbHNlIGlmKHY+Zyl7aWYoaSl7aWYoaS54Pj1hKXJldHVybn1lbHNlIGk9e3g6byx5OnIqbyt1
fTtlPXt4OmEseTpyKmErdX19ZWxzZXtpZihpKXtpZihpLng8bylyZXR1cm59ZWxzZSBpPXt4OmEs
eTpyKmErdX07ZT17eDpvLHk6cipvK3V9fXJldHVybiBuLmE9aSxuLmI9ZSwhMH1mdW5jdGlvbiBW
cihuLHQpe3RoaXMubD1uLHRoaXMucj10LHRoaXMuYT10aGlzLmI9bnVsbH1mdW5jdGlvbiBYcihu
LHQsZSxyKXt2YXIgdT1uZXcgVnIobix0KTtyZXR1cm4gSWMucHVzaCh1KSxlJiZCcih1LG4sdCxl
KSxyJiZCcih1LHQsbixyKSxaY1tuLmldLmVkZ2VzLnB1c2gobmV3IFdyKHUsbix0KSksWmNbdC5p
XS5lZGdlcy5wdXNoKG5ldyBXcih1LHQsbikpLHV9ZnVuY3Rpb24gJHIobix0LGUpe3ZhciByPW5l
dyBWcihuLG51bGwpO3JldHVybiByLmE9dCxyLmI9ZSxJYy5wdXNoKHIpLHJ9ZnVuY3Rpb24gQnIo
bix0LGUscil7bi5hfHxuLmI/bi5sPT09ZT9uLmI9cjpuLmE9cjoobi5hPXIsbi5sPXQsbi5yPWUp
fWZ1bmN0aW9uIFdyKG4sdCxlKXt2YXIgcj1uLmEsdT1uLmI7dGhpcy5lZGdlPW4sdGhpcy5zaXRl
PXQsdGhpcy5hbmdsZT1lP01hdGguYXRhbjIoZS55LXQueSxlLngtdC54KTpuLmw9PT10P01hdGgu
YXRhbjIodS54LXIueCxyLnktdS55KTpNYXRoLmF0YW4yKHIueC11LngsdS55LXIueSl9ZnVuY3Rp
b24gSnIoKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBHcihuKXtuLlU9bi5DPW4uTD1uLlI9bi5QPW4u
Tj1udWxsfWZ1bmN0aW9uIEtyKG4sdCl7dmFyIGU9dCxyPXQuUix1PWUuVTt1P3UuTD09PWU/dS5M
PXI6dS5SPXI6bi5fPXIsci5VPXUsZS5VPXIsZS5SPXIuTCxlLlImJihlLlIuVT1lKSxyLkw9ZX1m
dW5jdGlvbiBRcihuLHQpe3ZhciBlPXQscj10LkwsdT1lLlU7dT91Lkw9PT1lP3UuTD1yOnUuUj1y
Om4uXz1yLHIuVT11LGUuVT1yLGUuTD1yLlIsZS5MJiYoZS5MLlU9ZSksci5SPWV9ZnVuY3Rpb24g
bnUobil7Zm9yKDtuLkw7KW49bi5MO3JldHVybiBufWZ1bmN0aW9uIHR1KG4sdCl7dmFyIGUscix1
LGk9bi5zb3J0KGV1KS5wb3AoKTtmb3IoSWM9W10sWmM9bmV3IEFycmF5KG4ubGVuZ3RoKSxWYz1u
ZXcgSnIsJGM9bmV3IEpyOzspaWYodT1YYyxpJiYoIXV8fGkueTx1Lnl8fGkueT09PXUueSYmaS54
PHUueCkpKGkueCE9PWV8fGkueSE9PXIpJiYoWmNbaS5pXT1uZXcgVXIoaSksUnIoaSksZT1pLngs
cj1pLnkpLGk9bi5wb3AoKTtlbHNle2lmKCF1KWJyZWFrO3FyKHUuYXJjKX10JiYoSXIodCksanIo
dCkpO3ZhciBvPXtjZWxsczpaYyxlZGdlczpJY307cmV0dXJuIFZjPSRjPUljPVpjPW51bGwsb31m
dW5jdGlvbiBldShuLHQpe3JldHVybiB0Lnktbi55fHx0Lngtbi54fWZ1bmN0aW9uIHJ1KG4sdCxl
KXtyZXR1cm4obi54LWUueCkqKHQueS1uLnkpLShuLngtdC54KSooZS55LW4ueSl9ZnVuY3Rpb24g
dXUobil7cmV0dXJuIG4ueH1mdW5jdGlvbiBpdShuKXtyZXR1cm4gbi55fWZ1bmN0aW9uIG91KCl7
cmV0dXJue2xlYWY6ITAsbm9kZXM6W10scG9pbnQ6bnVsbCx4Om51bGwseTpudWxsfX1mdW5jdGlv
biBhdShuLHQsZSxyLHUsaSl7aWYoIW4odCxlLHIsdSxpKSl7dmFyIG89LjUqKGUrdSksYT0uNSoo
citpKSxjPXQubm9kZXM7Y1swXSYmYXUobixjWzBdLGUscixvLGEpLGNbMV0mJmF1KG4sY1sxXSxv
LHIsdSxhKSxjWzJdJiZhdShuLGNbMl0sZSxhLG8saSksY1szXSYmYXUobixjWzNdLG8sYSx1LGkp
fX1mdW5jdGlvbiBjdShuLHQpe249Wm8ucmdiKG4pLHQ9Wm8ucmdiKHQpO3ZhciBlPW4ucixyPW4u
Zyx1PW4uYixpPXQuci1lLG89dC5nLXIsYT10LmItdTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJu
IiMiK2R0KE1hdGgucm91bmQoZStpKm4pKStkdChNYXRoLnJvdW5kKHIrbypuKSkrZHQoTWF0aC5y
b3VuZCh1K2EqbikpfX1mdW5jdGlvbiBzdShuLHQpe3ZhciBlLHI9e30sdT17fTtmb3IoZSBpbiBu
KWUgaW4gdD9yW2VdPWh1KG5bZV0sdFtlXSk6dVtlXT1uW2VdO2ZvcihlIGluIHQpZSBpbiBufHwo
dVtlXT10W2VdKTtyZXR1cm4gZnVuY3Rpb24obil7Zm9yKGUgaW4gcil1W2VdPXJbZV0obik7cmV0
dXJuIHV9fWZ1bmN0aW9uIGx1KG4sdCl7cmV0dXJuIHQtPW49K24sZnVuY3Rpb24oZSl7cmV0dXJu
IG4rdCplfX1mdW5jdGlvbiBmdShuLHQpe3ZhciBlLHIsdSxpPUdjLmxhc3RJbmRleD1LYy5sYXN0
SW5kZXg9MCxvPS0xLGE9W10sYz1bXTtmb3Iobis9IiIsdCs9IiI7KGU9R2MuZXhlYyhuKSkmJihy
PUtjLmV4ZWModCkpOykodT1yLmluZGV4KT5pJiYodT10LnN1YnN0cmluZyhpLHUpLGFbb10/YVtv
XSs9dTphWysrb109dSksKGU9ZVswXSk9PT0ocj1yWzBdKT9hW29dP2Fbb10rPXI6YVsrK29dPXI6
KGFbKytvXT1udWxsLGMucHVzaCh7aTpvLHg6bHUoZSxyKX0pKSxpPUtjLmxhc3RJbmRleDtyZXR1
cm4gaTx0Lmxlbmd0aCYmKHU9dC5zdWJzdHJpbmcoaSksYVtvXT9hW29dKz11OmFbKytvXT11KSxh
Lmxlbmd0aDwyP2NbMF0/KHQ9Y1swXS54LGZ1bmN0aW9uKG4pe3JldHVybiB0KG4pKyIifSk6ZnVu
Y3Rpb24oKXtyZXR1cm4gdH06KHQ9Yy5sZW5ndGgsZnVuY3Rpb24obil7Zm9yKHZhciBlLHI9MDt0
PnI7KytyKWFbKGU9Y1tyXSkuaV09ZS54KG4pO3JldHVybiBhLmpvaW4oIiIpfSl9ZnVuY3Rpb24g
aHUobix0KXtmb3IodmFyIGUscj1aby5pbnRlcnBvbGF0b3JzLmxlbmd0aDstLXI+PTAmJiEoZT1a
by5pbnRlcnBvbGF0b3JzW3JdKG4sdCkpOyk7cmV0dXJuIGV9ZnVuY3Rpb24gZ3Uobix0KXt2YXIg
ZSxyPVtdLHU9W10saT1uLmxlbmd0aCxvPXQubGVuZ3RoLGE9TWF0aC5taW4obi5sZW5ndGgsdC5s
ZW5ndGgpO2ZvcihlPTA7YT5lOysrZSlyLnB1c2goaHUobltlXSx0W2VdKSk7Zm9yKDtpPmU7Kytl
KXVbZV09bltlXTtmb3IoO28+ZTsrK2UpdVtlXT10W2VdO3JldHVybiBmdW5jdGlvbihuKXtmb3Io
ZT0wO2E+ZTsrK2UpdVtlXT1yW2VdKG4pO3JldHVybiB1fX1mdW5jdGlvbiBwdShuKXtyZXR1cm4g
ZnVuY3Rpb24odCl7cmV0dXJuIDA+PXQ/MDp0Pj0xPzE6bih0KX19ZnVuY3Rpb24gdnUobil7cmV0
dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAxLW4oMS10KX19ZnVuY3Rpb24gZHUobil7cmV0dXJuIGZ1
bmN0aW9uKHQpe3JldHVybi41KiguNT50P24oMip0KToyLW4oMi0yKnQpKX19ZnVuY3Rpb24gbXUo
bil7cmV0dXJuIG4qbn1mdW5jdGlvbiB5dShuKXtyZXR1cm4gbipuKm59ZnVuY3Rpb24geHUobil7
aWYoMD49bilyZXR1cm4gMDtpZihuPj0xKXJldHVybiAxO3ZhciB0PW4qbixlPXQqbjtyZXR1cm4g
NCooLjU+bj9lOjMqKG4tdCkrZS0uNzUpfWZ1bmN0aW9uIE11KG4pe3JldHVybiBmdW5jdGlvbih0
KXtyZXR1cm4gTWF0aC5wb3codCxuKX19ZnVuY3Rpb24gX3Uobil7cmV0dXJuIDEtTWF0aC5jb3Mo
bipTYSl9ZnVuY3Rpb24gYnUobil7cmV0dXJuIE1hdGgucG93KDIsMTAqKG4tMSkpfWZ1bmN0aW9u
IHd1KG4pe3JldHVybiAxLU1hdGguc3FydCgxLW4qbil9ZnVuY3Rpb24gU3Uobix0KXt2YXIgZTty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYodD0uNDUpLGFyZ3VtZW50cy5sZW5ndGg/ZT10L3dh
Kk1hdGguYXNpbigxL24pOihuPTEsZT10LzQpLGZ1bmN0aW9uKHIpe3JldHVybiAxK24qTWF0aC5w
b3coMiwtMTAqcikqTWF0aC5zaW4oKHItZSkqd2EvdCl9fWZ1bmN0aW9uIGt1KG4pe3JldHVybiBu
fHwobj0xLjcwMTU4KSxmdW5jdGlvbih0KXtyZXR1cm4gdCp0KigobisxKSp0LW4pfX1mdW5jdGlv
biBFdShuKXtyZXR1cm4gMS8yLjc1Pm4/Ny41NjI1Km4qbjoyLzIuNzU+bj83LjU2MjUqKG4tPTEu
NS8yLjc1KSpuKy43NToyLjUvMi43NT5uPzcuNTYyNSoobi09Mi4yNS8yLjc1KSpuKy45Mzc1Ojcu
NTYyNSoobi09Mi42MjUvMi43NSkqbisuOTg0Mzc1fWZ1bmN0aW9uIEF1KG4sdCl7bj1aby5oY2wo
biksdD1aby5oY2wodCk7dmFyIGU9bi5oLHI9bi5jLHU9bi5sLGk9dC5oLWUsbz10LmMtcixhPXQu
bC11O3JldHVybiBpc05hTihvKSYmKG89MCxyPWlzTmFOKHIpP3QuYzpyKSxpc05hTihpKT8oaT0w
LGU9aXNOYU4oZSk/dC5oOmUpOmk+MTgwP2ktPTM2MDotMTgwPmkmJihpKz0zNjApLGZ1bmN0aW9u
KG4pe3JldHVybiBvdChlK2kqbixyK28qbix1K2EqbikrIiJ9fWZ1bmN0aW9uIEN1KG4sdCl7bj1a
by5oc2wobiksdD1aby5oc2wodCk7dmFyIGU9bi5oLHI9bi5zLHU9bi5sLGk9dC5oLWUsbz10LnMt
cixhPXQubC11O3JldHVybiBpc05hTihvKSYmKG89MCxyPWlzTmFOKHIpP3QuczpyKSxpc05hTihp
KT8oaT0wLGU9aXNOYU4oZSk/dC5oOmUpOmk+MTgwP2ktPTM2MDotMTgwPmkmJihpKz0zNjApLGZ1
bmN0aW9uKG4pe3JldHVybiB1dChlK2kqbixyK28qbix1K2EqbikrIiJ9fWZ1bmN0aW9uIE51KG4s
dCl7bj1aby5sYWIobiksdD1aby5sYWIodCk7dmFyIGU9bi5sLHI9bi5hLHU9bi5iLGk9dC5sLWUs
bz10LmEtcixhPXQuYi11O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gY3QoZStpKm4scitvKm4s
dSthKm4pKyIifX1mdW5jdGlvbiB6dShuLHQpe3JldHVybiB0LT1uLGZ1bmN0aW9uKGUpe3JldHVy
biBNYXRoLnJvdW5kKG4rdCplKX19ZnVuY3Rpb24gTHUobil7dmFyIHQ9W24uYSxuLmJdLGU9W24u
YyxuLmRdLHI9cXUodCksdT1UdSh0LGUpLGk9cXUoUnUoZSx0LC11KSl8fDA7dFswXSplWzFdPGVb
MF0qdFsxXSYmKHRbMF0qPS0xLHRbMV0qPS0xLHIqPS0xLHUqPS0xKSx0aGlzLnJvdGF0ZT0ocj9N
YXRoLmF0YW4yKHRbMV0sdFswXSk6TWF0aC5hdGFuMigtZVswXSxlWzFdKSkqQ2EsdGhpcy50cmFu
c2xhdGU9W24uZSxuLmZdLHRoaXMuc2NhbGU9W3IsaV0sdGhpcy5za2V3PWk/TWF0aC5hdGFuMih1
LGkpKkNhOjB9ZnVuY3Rpb24gVHUobix0KXtyZXR1cm4gblswXSp0WzBdK25bMV0qdFsxXX1mdW5j
dGlvbiBxdShuKXt2YXIgdD1NYXRoLnNxcnQoVHUobixuKSk7cmV0dXJuIHQmJihuWzBdLz10LG5b
MV0vPXQpLHR9ZnVuY3Rpb24gUnUobix0LGUpe3JldHVybiBuWzBdKz1lKnRbMF0sblsxXSs9ZSp0
WzFdLG59ZnVuY3Rpb24gRHUobix0KXt2YXIgZSxyPVtdLHU9W10saT1aby50cmFuc2Zvcm0obiks
bz1aby50cmFuc2Zvcm0odCksYT1pLnRyYW5zbGF0ZSxjPW8udHJhbnNsYXRlLHM9aS5yb3RhdGUs
bD1vLnJvdGF0ZSxmPWkuc2tldyxoPW8uc2tldyxnPWkuc2NhbGUscD1vLnNjYWxlO3JldHVybiBh
WzBdIT1jWzBdfHxhWzFdIT1jWzFdPyhyLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsIiwiLG51bGws
IikiKSx1LnB1c2goe2k6MSx4Omx1KGFbMF0sY1swXSl9LHtpOjMseDpsdShhWzFdLGNbMV0pfSkp
OmNbMF18fGNbMV0/ci5wdXNoKCJ0cmFuc2xhdGUoIitjKyIpIik6ci5wdXNoKCIiKSxzIT1sPyhz
LWw+MTgwP2wrPTM2MDpsLXM+MTgwJiYocys9MzYwKSx1LnB1c2goe2k6ci5wdXNoKHIucG9wKCkr
InJvdGF0ZSgiLG51bGwsIikiKS0yLHg6bHUocyxsKX0pKTpsJiZyLnB1c2goci5wb3AoKSsicm90
YXRlKCIrbCsiKSIpLGYhPWg/dS5wdXNoKHtpOnIucHVzaChyLnBvcCgpKyJza2V3WCgiLG51bGws
IikiKS0yLHg6bHUoZixoKX0pOmgmJnIucHVzaChyLnBvcCgpKyJza2V3WCgiK2grIikiKSxnWzBd
IT1wWzBdfHxnWzFdIT1wWzFdPyhlPXIucHVzaChyLnBvcCgpKyJzY2FsZSgiLG51bGwsIiwiLG51
bGwsIikiKSx1LnB1c2goe2k6ZS00LHg6bHUoZ1swXSxwWzBdKX0se2k6ZS0yLHg6bHUoZ1sxXSxw
WzFdKX0pKTooMSE9cFswXXx8MSE9cFsxXSkmJnIucHVzaChyLnBvcCgpKyJzY2FsZSgiK3ArIiki
KSxlPXUubGVuZ3RoLGZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxpPS0xOysraTxlOylyWyh0PXVbaV0p
LmldPXQueChuKTtyZXR1cm4gci5qb2luKCIiKX19ZnVuY3Rpb24gUHUobix0KXtyZXR1cm4gdD10
LShuPStuKT8xLyh0LW4pOjAsZnVuY3Rpb24oZSl7cmV0dXJuKGUtbikqdH19ZnVuY3Rpb24gVXUo
bix0KXtyZXR1cm4gdD10LShuPStuKT8xLyh0LW4pOjAsZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgu
bWF4KDAsTWF0aC5taW4oMSwoZS1uKSp0KSl9fWZ1bmN0aW9uIGp1KG4pe2Zvcih2YXIgdD1uLnNv
dXJjZSxlPW4udGFyZ2V0LHI9RnUodCxlKSx1PVt0XTt0IT09cjspdD10LnBhcmVudCx1LnB1c2go
dCk7Zm9yKHZhciBpPXUubGVuZ3RoO2UhPT1yOyl1LnNwbGljZShpLDAsZSksZT1lLnBhcmVudDty
ZXR1cm4gdX1mdW5jdGlvbiBIdShuKXtmb3IodmFyIHQ9W10sZT1uLnBhcmVudDtudWxsIT1lOyl0
LnB1c2gobiksbj1lLGU9ZS5wYXJlbnQ7cmV0dXJuIHQucHVzaChuKSx0fWZ1bmN0aW9uIEZ1KG4s
dCl7aWYobj09PXQpcmV0dXJuIG47Zm9yKHZhciBlPUh1KG4pLHI9SHUodCksdT1lLnBvcCgpLGk9
ci5wb3AoKSxvPW51bGw7dT09PWk7KW89dSx1PWUucG9wKCksaT1yLnBvcCgpO3JldHVybiBvfWZ1
bmN0aW9uIE91KG4pe24uZml4ZWR8PTJ9ZnVuY3Rpb24gWXUobil7bi5maXhlZCY9LTd9ZnVuY3Rp
b24gSXUobil7bi5maXhlZHw9NCxuLnB4PW4ueCxuLnB5PW4ueX1mdW5jdGlvbiBadShuKXtuLmZp
eGVkJj0tNX1mdW5jdGlvbiBWdShuLHQsZSl7dmFyIHI9MCx1PTA7aWYobi5jaGFyZ2U9MCwhbi5s
ZWFmKWZvcih2YXIgaSxvPW4ubm9kZXMsYT1vLmxlbmd0aCxjPS0xOysrYzxhOylpPW9bY10sbnVs
bCE9aSYmKFZ1KGksdCxlKSxuLmNoYXJnZSs9aS5jaGFyZ2Uscis9aS5jaGFyZ2UqaS5jeCx1Kz1p
LmNoYXJnZSppLmN5KTtpZihuLnBvaW50KXtuLmxlYWZ8fChuLnBvaW50LngrPU1hdGgucmFuZG9t
KCktLjUsbi5wb2ludC55Kz1NYXRoLnJhbmRvbSgpLS41KTt2YXIgcz10KmVbbi5wb2ludC5pbmRl
eF07bi5jaGFyZ2UrPW4ucG9pbnRDaGFyZ2U9cyxyKz1zKm4ucG9pbnQueCx1Kz1zKm4ucG9pbnQu
eX1uLmN4PXIvbi5jaGFyZ2Usbi5jeT11L24uY2hhcmdlfWZ1bmN0aW9uIFh1KG4sdCl7cmV0dXJu
IFpvLnJlYmluZChuLHQsInNvcnQiLCJjaGlsZHJlbiIsInZhbHVlIiksbi5ub2Rlcz1uLG4ubGlu
a3M9S3Usbn1mdW5jdGlvbiAkdShuLHQpe2Zvcih2YXIgZT1bbl07bnVsbCE9KG49ZS5wb3AoKSk7
KWlmKHQobiksKHU9bi5jaGlsZHJlbikmJihyPXUubGVuZ3RoKSlmb3IodmFyIHIsdTstLXI+PTA7
KWUucHVzaCh1W3JdKX1mdW5jdGlvbiBCdShuLHQpe2Zvcih2YXIgZT1bbl0scj1bXTtudWxsIT0o
bj1lLnBvcCgpKTspaWYoci5wdXNoKG4pLChpPW4uY2hpbGRyZW4pJiYodT1pLmxlbmd0aCkpZm9y
KHZhciB1LGksbz0tMTsrK288dTspZS5wdXNoKGlbb10pO2Zvcig7bnVsbCE9KG49ci5wb3AoKSk7
KXQobil9ZnVuY3Rpb24gV3Uobil7cmV0dXJuIG4uY2hpbGRyZW59ZnVuY3Rpb24gSnUobil7cmV0
dXJuIG4udmFsdWV9ZnVuY3Rpb24gR3Uobix0KXtyZXR1cm4gdC52YWx1ZS1uLnZhbHVlfWZ1bmN0
aW9uIEt1KG4pe3JldHVybiBaby5tZXJnZShuLm1hcChmdW5jdGlvbihuKXtyZXR1cm4obi5jaGls
ZHJlbnx8W10pLm1hcChmdW5jdGlvbih0KXtyZXR1cm57c291cmNlOm4sdGFyZ2V0OnR9fSl9KSl9
ZnVuY3Rpb24gUXUobil7cmV0dXJuIG4ueH1mdW5jdGlvbiBuaShuKXtyZXR1cm4gbi55fWZ1bmN0
aW9uIHRpKG4sdCxlKXtuLnkwPXQsbi55PWV9ZnVuY3Rpb24gZWkobil7cmV0dXJuIFpvLnJhbmdl
KG4ubGVuZ3RoKX1mdW5jdGlvbiByaShuKXtmb3IodmFyIHQ9LTEsZT1uWzBdLmxlbmd0aCxyPVtd
OysrdDxlOylyW3RdPTA7cmV0dXJuIHJ9ZnVuY3Rpb24gdWkobil7Zm9yKHZhciB0LGU9MSxyPTAs
dT1uWzBdWzFdLGk9bi5sZW5ndGg7aT5lOysrZSkodD1uW2VdWzFdKT51JiYocj1lLHU9dCk7cmV0
dXJuIHJ9ZnVuY3Rpb24gaWkobil7cmV0dXJuIG4ucmVkdWNlKG9pLDApfWZ1bmN0aW9uIG9pKG4s
dCl7cmV0dXJuIG4rdFsxXX1mdW5jdGlvbiBhaShuLHQpe3JldHVybiBjaShuLE1hdGguY2VpbChN
YXRoLmxvZyh0Lmxlbmd0aCkvTWF0aC5MTjIrMSkpfWZ1bmN0aW9uIGNpKG4sdCl7Zm9yKHZhciBl
PS0xLHI9K25bMF0sdT0oblsxXS1yKS90LGk9W107KytlPD10OylpW2VdPXUqZStyO3JldHVybiBp
fWZ1bmN0aW9uIHNpKG4pe3JldHVybltaby5taW4obiksWm8ubWF4KG4pXX1mdW5jdGlvbiBsaShu
LHQpe3JldHVybiBuLnZhbHVlLXQudmFsdWV9ZnVuY3Rpb24gZmkobix0KXt2YXIgZT1uLl9wYWNr
X25leHQ7bi5fcGFja19uZXh0PXQsdC5fcGFja19wcmV2PW4sdC5fcGFja19uZXh0PWUsZS5fcGFj
a19wcmV2PXR9ZnVuY3Rpb24gaGkobix0KXtuLl9wYWNrX25leHQ9dCx0Ll9wYWNrX3ByZXY9bn1m
dW5jdGlvbiBnaShuLHQpe3ZhciBlPXQueC1uLngscj10Lnktbi55LHU9bi5yK3QucjtyZXR1cm4u
OTk5KnUqdT5lKmUrcipyfWZ1bmN0aW9uIHBpKG4pe2Z1bmN0aW9uIHQobil7bD1NYXRoLm1pbihu
Lngtbi5yLGwpLGY9TWF0aC5tYXgobi54K24ucixmKSxoPU1hdGgubWluKG4ueS1uLnIsaCksZz1N
YXRoLm1heChuLnkrbi5yLGcpfWlmKChlPW4uY2hpbGRyZW4pJiYocz1lLmxlbmd0aCkpe3ZhciBl
LHIsdSxpLG8sYSxjLHMsbD0xLzAsZj0tMS8wLGg9MS8wLGc9LTEvMDtpZihlLmZvckVhY2godmkp
LHI9ZVswXSxyLng9LXIucixyLnk9MCx0KHIpLHM+MSYmKHU9ZVsxXSx1Lng9dS5yLHUueT0wLHQo
dSkscz4yKSlmb3IoaT1lWzJdLHlpKHIsdSxpKSx0KGkpLGZpKHIsaSksci5fcGFja19wcmV2PWks
ZmkoaSx1KSx1PXIuX3BhY2tfbmV4dCxvPTM7cz5vO28rKyl7eWkocix1LGk9ZVtvXSk7dmFyIHA9
MCx2PTEsZD0xO2ZvcihhPXUuX3BhY2tfbmV4dDthIT09dTthPWEuX3BhY2tfbmV4dCx2KyspaWYo
Z2koYSxpKSl7cD0xO2JyZWFrfWlmKDE9PXApZm9yKGM9ci5fcGFja19wcmV2O2MhPT1hLl9wYWNr
X3ByZXYmJiFnaShjLGkpO2M9Yy5fcGFja19wcmV2LGQrKyk7cD8oZD52fHx2PT1kJiZ1LnI8ci5y
P2hpKHIsdT1hKTpoaShyPWMsdSksby0tKTooZmkocixpKSx1PWksdChpKSl9dmFyIG09KGwrZikv
Mix5PShoK2cpLzIseD0wO2ZvcihvPTA7cz5vO28rKylpPWVbb10saS54LT1tLGkueS09eSx4PU1h
dGgubWF4KHgsaS5yK01hdGguc3FydChpLngqaS54K2kueSppLnkpKTtuLnI9eCxlLmZvckVhY2go
ZGkpfX1mdW5jdGlvbiB2aShuKXtuLl9wYWNrX25leHQ9bi5fcGFja19wcmV2PW59ZnVuY3Rpb24g
ZGkobil7ZGVsZXRlIG4uX3BhY2tfbmV4dCxkZWxldGUgbi5fcGFja19wcmV2fWZ1bmN0aW9uIG1p
KG4sdCxlLHIpe3ZhciB1PW4uY2hpbGRyZW47aWYobi54PXQrPXIqbi54LG4ueT1lKz1yKm4ueSxu
LnIqPXIsdSlmb3IodmFyIGk9LTEsbz11Lmxlbmd0aDsrK2k8bzspbWkodVtpXSx0LGUscil9ZnVu
Y3Rpb24geWkobix0LGUpe3ZhciByPW4ucitlLnIsdT10Lngtbi54LGk9dC55LW4ueTtpZihyJiYo
dXx8aSkpe3ZhciBvPXQucitlLnIsYT11KnUraSppO28qPW8scio9cjt2YXIgYz0uNSsoci1vKS8o
MiphKSxzPU1hdGguc3FydChNYXRoLm1heCgwLDIqbyoocithKS0oci09YSkqci1vKm8pKS8oMiph
KTtlLng9bi54K2MqdStzKmksZS55PW4ueStjKmktcyp1fWVsc2UgZS54PW4ueCtyLGUueT1uLnl9
ZnVuY3Rpb24geGkobix0KXtyZXR1cm4gbi5wYXJlbnQ9PXQucGFyZW50PzE6Mn1mdW5jdGlvbiBN
aShuKXt2YXIgdD1uLmNoaWxkcmVuO3JldHVybiB0Lmxlbmd0aD90WzBdOm4udH1mdW5jdGlvbiBf
aShuKXt2YXIgdCxlPW4uY2hpbGRyZW47cmV0dXJuKHQ9ZS5sZW5ndGgpP2VbdC0xXTpuLnR9ZnVu
Y3Rpb24gYmkobix0LGUpe3ZhciByPWUvKHQuaS1uLmkpO3QuYy09cix0LnMrPWUsbi5jKz1yLHQu
eis9ZSx0Lm0rPWV9ZnVuY3Rpb24gd2kobil7Zm9yKHZhciB0LGU9MCxyPTAsdT1uLmNoaWxkcmVu
LGk9dS5sZW5ndGg7LS1pPj0wOyl0PXVbaV0sdC56Kz1lLHQubSs9ZSxlKz10LnMrKHIrPXQuYyl9
ZnVuY3Rpb24gU2kobix0LGUpe3JldHVybiBuLmEucGFyZW50PT09dC5wYXJlbnQ/bi5hOmV9ZnVu
Y3Rpb24ga2kobil7cmV0dXJuIDErWm8ubWF4KG4sZnVuY3Rpb24obil7cmV0dXJuIG4ueX0pfWZ1
bmN0aW9uIEVpKG4pe3JldHVybiBuLnJlZHVjZShmdW5jdGlvbihuLHQpe3JldHVybiBuK3QueH0s
MCkvbi5sZW5ndGh9ZnVuY3Rpb24gQWkobil7dmFyIHQ9bi5jaGlsZHJlbjtyZXR1cm4gdCYmdC5s
ZW5ndGg/QWkodFswXSk6bn1mdW5jdGlvbiBDaShuKXt2YXIgdCxlPW4uY2hpbGRyZW47cmV0dXJu
IGUmJih0PWUubGVuZ3RoKT9DaShlW3QtMV0pOm59ZnVuY3Rpb24gTmkobil7cmV0dXJue3g6bi54
LHk6bi55LGR4Om4uZHgsZHk6bi5keX19ZnVuY3Rpb24gemkobix0KXt2YXIgZT1uLngrdFszXSxy
PW4ueSt0WzBdLHU9bi5keC10WzFdLXRbM10saT1uLmR5LXRbMF0tdFsyXTtyZXR1cm4gMD51JiYo
ZSs9dS8yLHU9MCksMD5pJiYocis9aS8yLGk9MCkse3g6ZSx5OnIsZHg6dSxkeTppfX1mdW5jdGlv
biBMaShuKXt2YXIgdD1uWzBdLGU9bltuLmxlbmd0aC0xXTtyZXR1cm4gZT50P1t0LGVdOltlLHRd
fWZ1bmN0aW9uIFRpKG4pe3JldHVybiBuLnJhbmdlRXh0ZW50P24ucmFuZ2VFeHRlbnQoKTpMaShu
LnJhbmdlKCkpfWZ1bmN0aW9uIHFpKG4sdCxlLHIpe3ZhciB1PWUoblswXSxuWzFdKSxpPXIodFsw
XSx0WzFdKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGkodShuKSl9fWZ1bmN0aW9uIFJpKG4s
dCl7dmFyIGUscj0wLHU9bi5sZW5ndGgtMSxpPW5bcl0sbz1uW3VdO3JldHVybiBpPm8mJihlPXIs
cj11LHU9ZSxlPWksaT1vLG89ZSksbltyXT10LmZsb29yKGkpLG5bdV09dC5jZWlsKG8pLG59ZnVu
Y3Rpb24gRGkobil7cmV0dXJuIG4/e2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmZsb29y
KHQvbikqbn0sY2VpbDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5jZWlsKHQvbikqbn19OnNzfWZ1
bmN0aW9uIFBpKG4sdCxlLHIpe3ZhciB1PVtdLGk9W10sbz0wLGE9TWF0aC5taW4obi5sZW5ndGgs
dC5sZW5ndGgpLTE7Zm9yKG5bYV08blswXSYmKG49bi5zbGljZSgpLnJldmVyc2UoKSx0PXQuc2xp
Y2UoKS5yZXZlcnNlKCkpOysrbzw9YTspdS5wdXNoKGUobltvLTFdLG5bb10pKSxpLnB1c2gocih0
W28tMV0sdFtvXSkpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1aby5iaXNlY3Qobix0LDEsYSkt
MTtyZXR1cm4gaVtlXSh1W2VdKHQpKX19ZnVuY3Rpb24gVWkobix0LGUscil7ZnVuY3Rpb24gdSgp
e3ZhciB1PU1hdGgubWluKG4ubGVuZ3RoLHQubGVuZ3RoKT4yP1BpOnFpLGM9cj9VdTpQdTtyZXR1
cm4gbz11KG4sdCxjLGUpLGE9dSh0LG4sYyxodSksaX1mdW5jdGlvbiBpKG4pe3JldHVybiBvKG4p
fXZhciBvLGE7cmV0dXJuIGkuaW52ZXJ0PWZ1bmN0aW9uKG4pe3JldHVybiBhKG4pfSxpLmRvbWFp
bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10Lm1hcChOdW1iZXIpLHUo
KSk6bn0saS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLHUo
KSk6dH0saS5yYW5nZVJvdW5kPWZ1bmN0aW9uKG4pe3JldHVybiBpLnJhbmdlKG4pLmludGVycG9s
YXRlKHp1KX0saS5jbGFtcD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1u
LHUoKSk6cn0saS5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZT1uLHUoKSk6ZX0saS50aWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gT2kobix0KX0saS50aWNr
Rm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFlpKG4sdCxlKX0saS5uaWNlPWZ1bmN0aW9uKHQp
e3JldHVybiBIaShuLHQpLHUoKX0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFVpKG4sdCxlLHIp
fSx1KCl9ZnVuY3Rpb24gamkobix0KXtyZXR1cm4gWm8ucmViaW5kKG4sdCwicmFuZ2UiLCJyYW5n
ZVJvdW5kIiwiaW50ZXJwb2xhdGUiLCJjbGFtcCIpfWZ1bmN0aW9uIEhpKG4sdCl7cmV0dXJuIFJp
KG4sRGkoRmkobix0KVsyXSkpfWZ1bmN0aW9uIEZpKG4sdCl7bnVsbD09dCYmKHQ9MTApO3ZhciBl
PUxpKG4pLHI9ZVsxXS1lWzBdLHU9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhyL3Qp
L01hdGguTE4xMCkpLGk9dC9yKnU7cmV0dXJuLjE1Pj1pP3UqPTEwOi4zNT49aT91Kj01Oi43NT49
aSYmKHUqPTIpLGVbMF09TWF0aC5jZWlsKGVbMF0vdSkqdSxlWzFdPU1hdGguZmxvb3IoZVsxXS91
KSp1Ky41KnUsZVsyXT11LGV9ZnVuY3Rpb24gT2kobix0KXtyZXR1cm4gWm8ucmFuZ2UuYXBwbHko
Wm8sRmkobix0KSl9ZnVuY3Rpb24gWWkobix0LGUpe3ZhciByPUZpKG4sdCk7aWYoZSl7dmFyIHU9
R2EuZXhlYyhlKTtpZih1LnNoaWZ0KCksInMiPT09dVs4XSl7dmFyIGk9Wm8uZm9ybWF0UHJlZml4
KE1hdGgubWF4KHVhKHJbMF0pLHVhKHJbMV0pKSk7cmV0dXJuIHVbN118fCh1WzddPSIuIitJaShp
LnNjYWxlKHJbMl0pKSksdVs4XT0iZiIsZT1aby5mb3JtYXQodS5qb2luKCIiKSksZnVuY3Rpb24o
bil7cmV0dXJuIGUoaS5zY2FsZShuKSkraS5zeW1ib2x9fXVbN118fCh1WzddPSIuIitaaSh1Wzhd
LHIpKSxlPXUuam9pbigiIil9ZWxzZSBlPSIsLiIrSWkoclsyXSkrImYiO3JldHVybiBaby5mb3Jt
YXQoZSl9ZnVuY3Rpb24gSWkobil7cmV0dXJuLU1hdGguZmxvb3IoTWF0aC5sb2cobikvTWF0aC5M
TjEwKy4wMSl9ZnVuY3Rpb24gWmkobix0KXt2YXIgZT1JaSh0WzJdKTtyZXR1cm4gbiBpbiBscz9N
YXRoLmFicyhlLUlpKE1hdGgubWF4KHVhKHRbMF0pLHVhKHRbMV0pKSkpKyArKCJlIiE9PW4pOmUt
MiooIiUiPT09bil9ZnVuY3Rpb24gVmkobix0LGUscil7ZnVuY3Rpb24gdShuKXtyZXR1cm4oZT9N
YXRoLmxvZygwPm4/MDpuKTotTWF0aC5sb2cobj4wPzA6LW4pKS9NYXRoLmxvZyh0KX1mdW5jdGlv
biBpKG4pe3JldHVybiBlP01hdGgucG93KHQsbik6LU1hdGgucG93KHQsLW4pfWZ1bmN0aW9uIG8o
dCl7cmV0dXJuIG4odSh0KSl9cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBpKG4u
aW52ZXJ0KHQpKX0sby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGU9dFswXT49MCxuLmRvbWFpbigocj10Lm1hcChOdW1iZXIpKS5tYXAodSkpLG8pOnJ9LG8uYmFz
ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxuLmRvbWFpbihyLm1h
cCh1KSksbyk6dH0sby5uaWNlPWZ1bmN0aW9uKCl7dmFyIHQ9Umkoci5tYXAodSksZT9NYXRoOmhz
KTtyZXR1cm4gbi5kb21haW4odCkscj10Lm1hcChpKSxvfSxvLnRpY2tzPWZ1bmN0aW9uKCl7dmFy
IG49TGkociksbz1bXSxhPW5bMF0sYz1uWzFdLHM9TWF0aC5mbG9vcih1KGEpKSxsPU1hdGguY2Vp
bCh1KGMpKSxmPXQlMT8yOnQ7aWYoaXNGaW5pdGUobC1zKSl7aWYoZSl7Zm9yKDtsPnM7cysrKWZv
cih2YXIgaD0xO2Y+aDtoKyspby5wdXNoKGkocykqaCk7by5wdXNoKGkocykpfWVsc2UgZm9yKG8u
cHVzaChpKHMpKTtzKys8bDspZm9yKHZhciBoPWYtMTtoPjA7aC0tKW8ucHVzaChpKHMpKmgpO2Zv
cihzPTA7b1tzXTxhO3MrKyk7Zm9yKGw9by5sZW5ndGg7b1tsLTFdPmM7bC0tKTtvPW8uc2xpY2Uo
cyxsKX1yZXR1cm4gb30sby50aWNrRm9ybWF0PWZ1bmN0aW9uKG4sdCl7aWYoIWFyZ3VtZW50cy5s
ZW5ndGgpcmV0dXJuIGZzO2FyZ3VtZW50cy5sZW5ndGg8Mj90PWZzOiJmdW5jdGlvbiIhPXR5cGVv
ZiB0JiYodD1aby5mb3JtYXQodCkpO3ZhciByLGE9TWF0aC5tYXgoLjEsbi9vLnRpY2tzKCkubGVu
Z3RoKSxjPWU/KHI9MWUtMTIsTWF0aC5jZWlsKToocj0tMWUtMTIsTWF0aC5mbG9vcik7cmV0dXJu
IGZ1bmN0aW9uKG4pe3JldHVybiBuL2koYyh1KG4pK3IpKTw9YT90KG4pOiIifX0sby5jb3B5PWZ1
bmN0aW9uKCl7cmV0dXJuIFZpKG4uY29weSgpLHQsZSxyKX0samkobyxuKX1mdW5jdGlvbiBYaShu
LHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbih1KHQpKX12YXIgdT0kaSh0KSxpPSRpKDEvdCk7
cmV0dXJuIHIuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBpKG4uaW52ZXJ0KHQpKX0sci5kb21h
aW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4uZG9tYWluKChlPXQubWFw
KE51bWJlcikpLm1hcCh1KSkscik6ZX0sci50aWNrcz1mdW5jdGlvbihuKXtyZXR1cm4gT2koZSxu
KX0sci50aWNrRm9ybWF0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIFlpKGUsbix0KX0sci5uaWNlPWZ1
bmN0aW9uKG4pe3JldHVybiByLmRvbWFpbihIaShlLG4pKX0sci5leHBvbmVudD1mdW5jdGlvbihv
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0kaSh0PW8pLGk9JGkoMS90KSxuLmRvbWFpbihl
Lm1hcCh1KSkscik6dH0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFhpKG4uY29weSgpLHQsZSl9
LGppKHIsbil9ZnVuY3Rpb24gJGkobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAwPnQ/LU1h
dGgucG93KC10LG4pOk1hdGgucG93KHQsbil9fWZ1bmN0aW9uIEJpKG4sdCl7ZnVuY3Rpb24gZShl
KXtyZXR1cm4gaVsoKHUuZ2V0KGUpfHwoInJhbmdlIj09PXQudD91LnNldChlLG4ucHVzaChlKSk6
MC8wKSktMSklaS5sZW5ndGhdfWZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gWm8ucmFuZ2Uobi5sZW5n
dGgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gdCtlKm59KX12YXIgdSxpLGE7cmV0dXJuIGUuZG9t
YWluPWZ1bmN0aW9uKHIpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBuO249W10sdT1uZXcg
bztmb3IodmFyIGksYT0tMSxjPXIubGVuZ3RoOysrYTxjOyl1LmhhcyhpPXJbYV0pfHx1LnNldChp
LG4ucHVzaChpKSk7cmV0dXJuIGVbdC50XS5hcHBseShlLHQuYSl9LGUucmFuZ2U9ZnVuY3Rpb24o
bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bixhPTAsdD17dDoicmFuZ2UiLGE6YXJndW1l
bnRzfSxlKTppfSxlLnJhbmdlUG9pbnRzPWZ1bmN0aW9uKHUsbyl7YXJndW1lbnRzLmxlbmd0aDwy
JiYobz0wKTt2YXIgYz11WzBdLHM9dVsxXSxsPShzLWMpLyhNYXRoLm1heCgxLG4ubGVuZ3RoLTEp
K28pO3JldHVybiBpPXIobi5sZW5ndGg8Mj8oYytzKS8yOmMrbCpvLzIsbCksYT0wLHQ9e3Q6InJh
bmdlUG9pbnRzIixhOmFyZ3VtZW50c30sZX0sZS5yYW5nZUJhbmRzPWZ1bmN0aW9uKHUsbyxjKXth
cmd1bWVudHMubGVuZ3RoPDImJihvPTApLGFyZ3VtZW50cy5sZW5ndGg8MyYmKGM9byk7dmFyIHM9
dVsxXTx1WzBdLGw9dVtzLTBdLGY9dVsxLXNdLGg9KGYtbCkvKG4ubGVuZ3RoLW8rMipjKTtyZXR1
cm4gaT1yKGwraCpjLGgpLHMmJmkucmV2ZXJzZSgpLGE9aCooMS1vKSx0PXt0OiJyYW5nZUJhbmRz
IixhOmFyZ3VtZW50c30sZX0sZS5yYW5nZVJvdW5kQmFuZHM9ZnVuY3Rpb24odSxvLGMpe2FyZ3Vt
ZW50cy5sZW5ndGg8MiYmKG89MCksYXJndW1lbnRzLmxlbmd0aDwzJiYoYz1vKTt2YXIgcz11WzFd
PHVbMF0sbD11W3MtMF0sZj11WzEtc10saD1NYXRoLmZsb29yKChmLWwpLyhuLmxlbmd0aC1vKzIq
YykpLGc9Zi1sLShuLmxlbmd0aC1vKSpoO3JldHVybiBpPXIobCtNYXRoLnJvdW5kKGcvMiksaCks
cyYmaS5yZXZlcnNlKCksYT1NYXRoLnJvdW5kKGgqKDEtbykpLHQ9e3Q6InJhbmdlUm91bmRCYW5k
cyIsYTphcmd1bWVudHN9LGV9LGUucmFuZ2VCYW5kPWZ1bmN0aW9uKCl7cmV0dXJuIGF9LGUucmFu
Z2VFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gTGkodC5hWzBdKX0sZS5jb3B5PWZ1bmN0aW9uKCl7
cmV0dXJuIEJpKG4sdCl9LGUuZG9tYWluKG4pfWZ1bmN0aW9uIFdpKGUscil7ZnVuY3Rpb24gdSgp
e3ZhciBuPTAsdD1yLmxlbmd0aDtmb3Iobz1bXTsrK248dDspb1tuLTFdPVpvLnF1YW50aWxlKGUs
bi90KTtyZXR1cm4gaX1mdW5jdGlvbiBpKG4pe3JldHVybiBpc05hTihuPStuKT92b2lkIDA6clta
by5iaXNlY3QobyxuKV19dmFyIG87cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKHIpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhlPXIuZmlsdGVyKHQpLnNvcnQobiksdSgpKTplfSxpLnJhbmdlPWZ1
bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdSgpKTpyfSxpLnF1YW50aWxl
cz1mdW5jdGlvbigpe3JldHVybiBvfSxpLmludmVydEV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4g
bj1yLmluZGV4T2YobiksMD5uP1swLzAsMC8wXTpbbj4wP29bbi0xXTplWzBdLG48by5sZW5ndGg/
b1tuXTplW2UubGVuZ3RoLTFdXX0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFdpKGUscil9LHUo
KX1mdW5jdGlvbiBKaShuLHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZVtNYXRoLm1heCgwLE1h
dGgubWluKG8sTWF0aC5mbG9vcihpKih0LW4pKSkpXX1mdW5jdGlvbiB1KCl7cmV0dXJuIGk9ZS5s
ZW5ndGgvKHQtbiksbz1lLmxlbmd0aC0xLHJ9dmFyIGksbztyZXR1cm4gci5kb21haW49ZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K2VbMF0sdD0rZVtlLmxlbmd0aC0xXSx1
KCkpOltuLHRdfSxyLnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhl
PW4sdSgpKTplfSxyLmludmVydEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gdD1lLmluZGV4T2Yo
dCksdD0wPnQ/MC8wOnQvaStuLFt0LHQrMS9pXX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEpp
KG4sdCxlKX0sdSgpfWZ1bmN0aW9uIEdpKG4sdCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZT49ZT90
W1pvLmJpc2VjdChuLGUpXTp2b2lkIDB9cmV0dXJuIGUuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZSk6bn0sZS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odD1uLGUpOnR9LGUuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKGUpe3Jl
dHVybiBlPXQuaW5kZXhPZihlKSxbbltlLTFdLG5bZV1dfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1
cm4gR2kobix0KX0sZX1mdW5jdGlvbiBLaShuKXtmdW5jdGlvbiB0KG4pe3JldHVybitufXJldHVy
biB0LmludmVydD10LHQuZG9tYWluPXQucmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG49ZS5tYXAodCksdCk6bn0sdC50aWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gT2ko
bix0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFlpKG4sdCxlKX0sdC5jb3B5
PWZ1bmN0aW9uKCl7cmV0dXJuIEtpKG4pfSx0fWZ1bmN0aW9uIFFpKG4pe3JldHVybiBuLmlubmVy
UmFkaXVzfWZ1bmN0aW9uIG5vKG4pe3JldHVybiBuLm91dGVyUmFkaXVzfWZ1bmN0aW9uIHRvKG4p
e3JldHVybiBuLnN0YXJ0QW5nbGV9ZnVuY3Rpb24gZW8obil7cmV0dXJuIG4uZW5kQW5nbGV9ZnVu
Y3Rpb24gcm8obil7ZnVuY3Rpb24gdCh0KXtmdW5jdGlvbiBvKCl7cy5wdXNoKCJNIixpKG4obCks
YSkpfWZvcih2YXIgYyxzPVtdLGw9W10sZj0tMSxoPXQubGVuZ3RoLGc9YnQoZSkscD1idChyKTsr
K2Y8aDspdS5jYWxsKHRoaXMsYz10W2ZdLGYpP2wucHVzaChbK2cuY2FsbCh0aGlzLGMsZiksK3Au
Y2FsbCh0aGlzLGMsZildKTpsLmxlbmd0aCYmKG8oKSxsPVtdKTtyZXR1cm4gbC5sZW5ndGgmJm8o
KSxzLmxlbmd0aD9zLmpvaW4oIiIpOm51bGx9dmFyIGU9d3Iscj1Tcix1PXdlLGk9dW8sbz1pLmtl
eSxhPS43O3JldHVybiB0Lng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9
bix0KTplfSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bix0KTpy
fSx0LmRlZmluZWQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bix0KTp1
fSx0LmludGVycG9sYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJm
dW5jdGlvbiI9PXR5cGVvZiBuP2k9bjooaT14cy5nZXQobil8fHVvKS5rZXksdCk6b30sdC50ZW5z
aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPW4sdCk6YX0sdH1mdW5j
dGlvbiB1byhuKXtyZXR1cm4gbi5qb2luKCJMIil9ZnVuY3Rpb24gaW8obil7cmV0dXJuIHVvKG4p
KyJaIn1mdW5jdGlvbiBvbyhuKXtmb3IodmFyIHQ9MCxlPW4ubGVuZ3RoLHI9blswXSx1PVtyWzBd
LCIsIixyWzFdXTsrK3Q8ZTspdS5wdXNoKCJIIiwoclswXSsocj1uW3RdKVswXSkvMiwiViIsclsx
XSk7cmV0dXJuIGU+MSYmdS5wdXNoKCJIIixyWzBdKSx1LmpvaW4oIiIpfWZ1bmN0aW9uIGFvKG4p
e2Zvcih2YXIgdD0wLGU9bi5sZW5ndGgscj1uWzBdLHU9W3JbMF0sIiwiLHJbMV1dOysrdDxlOyl1
LnB1c2goIlYiLChyPW5bdF0pWzFdLCJIIixyWzBdKTtyZXR1cm4gdS5qb2luKCIiKX1mdW5jdGlv
biBjbyhuKXtmb3IodmFyIHQ9MCxlPW4ubGVuZ3RoLHI9blswXSx1PVtyWzBdLCIsIixyWzFdXTsr
K3Q8ZTspdS5wdXNoKCJIIiwocj1uW3RdKVswXSwiViIsclsxXSk7cmV0dXJuIHUuam9pbigiIil9
ZnVuY3Rpb24gc28obix0KXtyZXR1cm4gbi5sZW5ndGg8ND91byhuKTpuWzFdK2hvKG4uc2xpY2Uo
MSxuLmxlbmd0aC0xKSxnbyhuLHQpKX1mdW5jdGlvbiBsbyhuLHQpe3JldHVybiBuLmxlbmd0aDwz
P3VvKG4pOm5bMF0raG8oKG4ucHVzaChuWzBdKSxuKSxnbyhbbltuLmxlbmd0aC0yXV0uY29uY2F0
KG4sW25bMV1dKSx0KSl9ZnVuY3Rpb24gZm8obix0KXtyZXR1cm4gbi5sZW5ndGg8Mz91byhuKTpu
WzBdK2hvKG4sZ28obix0KSl9ZnVuY3Rpb24gaG8obix0KXtpZih0Lmxlbmd0aDwxfHxuLmxlbmd0
aCE9dC5sZW5ndGgmJm4ubGVuZ3RoIT10Lmxlbmd0aCsyKXJldHVybiB1byhuKTt2YXIgZT1uLmxl
bmd0aCE9dC5sZW5ndGgscj0iIix1PW5bMF0saT1uWzFdLG89dFswXSxhPW8sYz0xO2lmKGUmJihy
Kz0iUSIrKGlbMF0tMipvWzBdLzMpKyIsIisoaVsxXS0yKm9bMV0vMykrIiwiK2lbMF0rIiwiK2lb
MV0sdT1uWzFdLGM9MiksdC5sZW5ndGg+MSl7YT10WzFdLGk9bltjXSxjKysscis9IkMiKyh1WzBd
K29bMF0pKyIsIisodVsxXStvWzFdKSsiLCIrKGlbMF0tYVswXSkrIiwiKyhpWzFdLWFbMV0pKyIs
IitpWzBdKyIsIitpWzFdO2Zvcih2YXIgcz0yO3M8dC5sZW5ndGg7cysrLGMrKylpPW5bY10sYT10
W3NdLHIrPSJTIisoaVswXS1hWzBdKSsiLCIrKGlbMV0tYVsxXSkrIiwiK2lbMF0rIiwiK2lbMV19
aWYoZSl7dmFyIGw9bltjXTtyKz0iUSIrKGlbMF0rMiphWzBdLzMpKyIsIisoaVsxXSsyKmFbMV0v
MykrIiwiK2xbMF0rIiwiK2xbMV19cmV0dXJuIHJ9ZnVuY3Rpb24gZ28obix0KXtmb3IodmFyIGUs
cj1bXSx1PSgxLXQpLzIsaT1uWzBdLG89blsxXSxhPTEsYz1uLmxlbmd0aDsrK2E8YzspZT1pLGk9
byxvPW5bYV0sci5wdXNoKFt1KihvWzBdLWVbMF0pLHUqKG9bMV0tZVsxXSldKTtyZXR1cm4gcn1m
dW5jdGlvbiBwbyhuKXtpZihuLmxlbmd0aDwzKXJldHVybiB1byhuKTt2YXIgdD0xLGU9bi5sZW5n
dGgscj1uWzBdLHU9clswXSxpPXJbMV0sbz1bdSx1LHUsKHI9blsxXSlbMF1dLGE9W2ksaSxpLHJb
MV1dLGM9W3UsIiwiLGksIkwiLHhvKGJzLG8pLCIsIix4byhicyxhKV07Zm9yKG4ucHVzaChuW2Ut
MV0pOysrdDw9ZTspcj1uW3RdLG8uc2hpZnQoKSxvLnB1c2goclswXSksYS5zaGlmdCgpLGEucHVz
aChyWzFdKSxNbyhjLG8sYSk7cmV0dXJuIG4ucG9wKCksYy5wdXNoKCJMIixyKSxjLmpvaW4oIiIp
fWZ1bmN0aW9uIHZvKG4pe2lmKG4ubGVuZ3RoPDQpcmV0dXJuIHVvKG4pO2Zvcih2YXIgdCxlPVtd
LHI9LTEsdT1uLmxlbmd0aCxpPVswXSxvPVswXTsrK3I8MzspdD1uW3JdLGkucHVzaCh0WzBdKSxv
LnB1c2godFsxXSk7Zm9yKGUucHVzaCh4byhicyxpKSsiLCIreG8oYnMsbykpLC0tcjsrK3I8dTsp
dD1uW3JdLGkuc2hpZnQoKSxpLnB1c2godFswXSksby5zaGlmdCgpLG8ucHVzaCh0WzFdKSxNbyhl
LGksbyk7cmV0dXJuIGUuam9pbigiIil9ZnVuY3Rpb24gbW8obil7Zm9yKHZhciB0LGUscj0tMSx1
PW4ubGVuZ3RoLGk9dSs0LG89W10sYT1bXTsrK3I8NDspZT1uW3IldV0sby5wdXNoKGVbMF0pLGEu
cHVzaChlWzFdKTtmb3IodD1beG8oYnMsbyksIiwiLHhvKGJzLGEpXSwtLXI7KytyPGk7KWU9blty
JXVdLG8uc2hpZnQoKSxvLnB1c2goZVswXSksYS5zaGlmdCgpLGEucHVzaChlWzFdKSxNbyh0LG8s
YSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24geW8obix0KXt2YXIgZT1uLmxlbmd0aC0xO2lm
KGUpZm9yKHZhciByLHUsaT1uWzBdWzBdLG89blswXVsxXSxhPW5bZV1bMF0taSxjPW5bZV1bMV0t
byxzPS0xOysrczw9ZTspcj1uW3NdLHU9cy9lLHJbMF09dCpyWzBdKygxLXQpKihpK3UqYSksclsx
XT10KnJbMV0rKDEtdCkqKG8rdSpjKTtyZXR1cm4gcG8obil9ZnVuY3Rpb24geG8obix0KXtyZXR1
cm4gblswXSp0WzBdK25bMV0qdFsxXStuWzJdKnRbMl0rblszXSp0WzNdfWZ1bmN0aW9uIE1vKG4s
dCxlKXtuLnB1c2goIkMiLHhvKE1zLHQpLCIsIix4byhNcyxlKSwiLCIseG8oX3MsdCksIiwiLHhv
KF9zLGUpLCIsIix4byhicyx0KSwiLCIseG8oYnMsZSkpfWZ1bmN0aW9uIF9vKG4sdCl7cmV0dXJu
KHRbMV0tblsxXSkvKHRbMF0tblswXSl9ZnVuY3Rpb24gYm8obil7Zm9yKHZhciB0PTAsZT1uLmxl
bmd0aC0xLHI9W10sdT1uWzBdLGk9blsxXSxvPXJbMF09X28odSxpKTsrK3Q8ZTspclt0XT0obyso
bz1fbyh1PWksaT1uW3QrMV0pKSkvMjtyZXR1cm4gclt0XT1vLHJ9ZnVuY3Rpb24gd28obil7Zm9y
KHZhciB0LGUscix1LGk9W10sbz1ibyhuKSxhPS0xLGM9bi5sZW5ndGgtMTsrK2E8YzspdD1fbyhu
W2FdLG5bYSsxXSksdWEodCk8a2E/b1thXT1vW2ErMV09MDooZT1vW2FdL3Qscj1vW2ErMV0vdCx1
PWUqZStyKnIsdT45JiYodT0zKnQvTWF0aC5zcXJ0KHUpLG9bYV09dSplLG9bYSsxXT11KnIpKTtm
b3IoYT0tMTsrK2E8PWM7KXU9KG5bTWF0aC5taW4oYyxhKzEpXVswXS1uW01hdGgubWF4KDAsYS0x
KV1bMF0pLyg2KigxK29bYV0qb1thXSkpLGkucHVzaChbdXx8MCxvW2FdKnV8fDBdKTtyZXR1cm4g
aX1mdW5jdGlvbiBTbyhuKXtyZXR1cm4gbi5sZW5ndGg8Mz91byhuKTpuWzBdK2hvKG4sd28obikp
fWZ1bmN0aW9uIGtvKG4pe2Zvcih2YXIgdCxlLHIsdT0tMSxpPW4ubGVuZ3RoOysrdTxpOyl0PW5b
dV0sZT10WzBdLHI9dFsxXSttcyx0WzBdPWUqTWF0aC5jb3MociksdFsxXT1lKk1hdGguc2luKHIp
O3JldHVybiBufWZ1bmN0aW9uIEVvKG4pe2Z1bmN0aW9uIHQodCl7ZnVuY3Rpb24gYygpe3YucHVz
aCgiTSIsYShuKG0pLGYpLGwscyhuKGQucmV2ZXJzZSgpKSxmKSwiWiIpfWZvcih2YXIgaCxnLHAs
dj1bXSxkPVtdLG09W10seT0tMSx4PXQubGVuZ3RoLE09YnQoZSksXz1idCh1KSxiPWU9PT1yP2Z1
bmN0aW9uKCl7cmV0dXJuIGd9OmJ0KHIpLHc9dT09PWk/ZnVuY3Rpb24oKXtyZXR1cm4gcH06YnQo
aSk7Kyt5PHg7KW8uY2FsbCh0aGlzLGg9dFt5XSx5KT8oZC5wdXNoKFtnPStNLmNhbGwodGhpcyxo
LHkpLHA9K18uY2FsbCh0aGlzLGgseSldKSxtLnB1c2goWytiLmNhbGwodGhpcyxoLHkpLCt3LmNh
bGwodGhpcyxoLHkpXSkpOmQubGVuZ3RoJiYoYygpLGQ9W10sbT1bXSk7cmV0dXJuIGQubGVuZ3Ro
JiZjKCksdi5sZW5ndGg/di5qb2luKCIiKTpudWxsfXZhciBlPXdyLHI9d3IsdT0wLGk9U3Isbz13
ZSxhPXVvLGM9YS5rZXkscz1hLGw9IkwiLGY9Ljc7cmV0dXJuIHQueD1mdW5jdGlvbihuKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1yPW4sdCk6cn0sdC54MD1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oZT1uLHQpOmV9LHQueDE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHI9bix0KTpyfSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHU9aT1uLHQpOml9LHQueTA9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHU9bix0KTp1fSx0LnkxPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhp
PW4sdCk6aX0sdC5kZWZpbmVkPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhv
PW4sdCk6b30sdC5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oYz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9hPW46KGE9eHMuZ2V0KG4pfHx1bykua2V5LHM9YS5y
ZXZlcnNlfHxhLGw9YS5jbG9zZWQ/Ik0iOiJMIix0KTpjfSx0LnRlbnNpb249ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9bix0KTpmfSx0fWZ1bmN0aW9uIEFvKG4pe3JldHVy
biBuLnJhZGl1c31mdW5jdGlvbiBDbyhuKXtyZXR1cm5bbi54LG4ueV19ZnVuY3Rpb24gTm8obil7
cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksZT10WzBdLHI9
dFsxXSttcztyZXR1cm5bZSpNYXRoLmNvcyhyKSxlKk1hdGguc2luKHIpXX19ZnVuY3Rpb24gem8o
KXtyZXR1cm4gNjR9ZnVuY3Rpb24gTG8oKXtyZXR1cm4iY2lyY2xlIn1mdW5jdGlvbiBUbyhuKXt2
YXIgdD1NYXRoLnNxcnQobi9iYSk7cmV0dXJuIk0wLCIrdCsiQSIrdCsiLCIrdCsiIDAgMSwxIDAs
IistdCsiQSIrdCsiLCIrdCsiIDAgMSwxIDAsIit0KyJaIn1mdW5jdGlvbiBxbyhuLHQpe3JldHVy
biBzYShuLENzKSxuLmlkPXQsbn1mdW5jdGlvbiBSbyhuLHQsZSxyKXt2YXIgdT1uLmlkO3JldHVy
biBQKG4sImZ1bmN0aW9uIj09dHlwZW9mIGU/ZnVuY3Rpb24obixpLG8pe24uX190cmFuc2l0aW9u
X19bdV0udHdlZW4uc2V0KHQscihlLmNhbGwobixuLl9fZGF0YV9fLGksbykpKX06KGU9cihlKSxm
dW5jdGlvbihuKXtuLl9fdHJhbnNpdGlvbl9fW3VdLnR3ZWVuLnNldCh0LGUpfSkpfWZ1bmN0aW9u
IERvKG4pe3JldHVybiBudWxsPT1uJiYobj0iIiksZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50
PW59fWZ1bmN0aW9uIFBvKG4sdCxlLHIpe3ZhciB1PW4uX190cmFuc2l0aW9uX198fChuLl9fdHJh
bnNpdGlvbl9fPXthY3RpdmU6MCxjb3VudDowfSksaT11W2VdO2lmKCFpKXt2YXIgYT1yLnRpbWU7
aT11W2VdPXt0d2VlbjpuZXcgbyx0aW1lOmEsZWFzZTpyLmVhc2UsZGVsYXk6ci5kZWxheSxkdXJh
dGlvbjpyLmR1cmF0aW9ufSwrK3UuY291bnQsWm8udGltZXIoZnVuY3Rpb24ocil7ZnVuY3Rpb24g
byhyKXtyZXR1cm4gdS5hY3RpdmU+ZT9zKCk6KHUuYWN0aXZlPWUsaS5ldmVudCYmaS5ldmVudC5z
dGFydC5jYWxsKG4sbCx0KSxpLnR3ZWVuLmZvckVhY2goZnVuY3Rpb24oZSxyKXsocj1yLmNhbGwo
bixsLHQpKSYmdi5wdXNoKHIpfSksWm8udGltZXIoZnVuY3Rpb24oKXtyZXR1cm4gcC5jPWMocnx8
MSk/d2U6YywxfSwwLGEpLHZvaWQgMCl9ZnVuY3Rpb24gYyhyKXtpZih1LmFjdGl2ZSE9PWUpcmV0
dXJuIHMoKTtmb3IodmFyIG89ci9nLGE9ZihvKSxjPXYubGVuZ3RoO2M+MDspdlstLWNdLmNhbGwo
bixhKTsKK3JldHVybiBvPj0xPyhpLmV2ZW50JiZpLmV2ZW50LmVuZC5jYWxsKG4sbCx0KSxzKCkp
OnZvaWQgMH1mdW5jdGlvbiBzKCl7cmV0dXJuLS11LmNvdW50P2RlbGV0ZSB1W2VdOmRlbGV0ZSBu
Ll9fdHJhbnNpdGlvbl9fLDF9dmFyIGw9bi5fX2RhdGFfXyxmPWkuZWFzZSxoPWkuZGVsYXksZz1p
LmR1cmF0aW9uLHA9QmEsdj1bXTtyZXR1cm4gcC50PWgrYSxyPj1oP28oci1oKToocC5jPW8sdm9p
ZCAwKX0sMCxhKX19ZnVuY3Rpb24gVW8obix0KXtuLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24o
bil7cmV0dXJuInRyYW5zbGF0ZSgiK3QobikrIiwwKSJ9KX1mdW5jdGlvbiBqbyhuLHQpe24uYXR0
cigidHJhbnNmb3JtIixmdW5jdGlvbihuKXtyZXR1cm4idHJhbnNsYXRlKDAsIit0KG4pKyIpIn0p
fWZ1bmN0aW9uIEhvKG4pe3JldHVybiBuLnRvSVNPU3RyaW5nKCl9ZnVuY3Rpb24gRm8obix0LGUp
e2Z1bmN0aW9uIHIodCl7cmV0dXJuIG4odCl9ZnVuY3Rpb24gdShuLGUpe3ZhciByPW5bMV0tblsw
XSx1PXIvZSxpPVpvLmJpc2VjdChVcyx1KTtyZXR1cm4gaT09VXMubGVuZ3RoP1t0LnllYXIsRmko
bi5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4vMzE1MzZlNn0pLGUpWzJdXTppP3RbdS9Vc1tpLTFd
PFVzW2ldL3U/aS0xOmldOltGcyxGaShuLGUpWzJdXX1yZXR1cm4gci5pbnZlcnQ9ZnVuY3Rpb24o
dCl7cmV0dXJuIE9vKG4uaW52ZXJ0KHQpKX0sci5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KG4uZG9tYWluKHQpLHIpOm4uZG9tYWluKCkubWFwKE9vKX0sci5uaWNl
PWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4haXNOYU4oZSkmJiFuLnJhbmdlKGUs
T28oK2UrMSksdCkubGVuZ3RofXZhciBpPXIuZG9tYWluKCksbz1MaShpKSxhPW51bGw9PW4/dShv
LDEwKToibnVtYmVyIj09dHlwZW9mIG4mJnUobyxuKTtyZXR1cm4gYSYmKG49YVswXSx0PWFbMV0p
LHIuZG9tYWluKFJpKGksdD4xP3tmbG9vcjpmdW5jdGlvbih0KXtmb3IoO2UodD1uLmZsb29yKHQp
KTspdD1Pbyh0LTEpO3JldHVybiB0fSxjZWlsOmZ1bmN0aW9uKHQpe2Zvcig7ZSh0PW4uY2VpbCh0
KSk7KXQ9T28oK3QrMSk7cmV0dXJuIHR9fTpuKSl9LHIudGlja3M9ZnVuY3Rpb24obix0KXt2YXIg
ZT1MaShyLmRvbWFpbigpKSxpPW51bGw9PW4/dShlLDEwKToibnVtYmVyIj09dHlwZW9mIG4/dShl
LG4pOiFuLnJhbmdlJiZbe3JhbmdlOm59LHRdO3JldHVybiBpJiYobj1pWzBdLHQ9aVsxXSksbi5y
YW5nZShlWzBdLE9vKCtlWzFdKzEpLDE+dD8xOnQpfSxyLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oKXty
ZXR1cm4gZX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEZvKG4uY29weSgpLHQsZSl9LGppKHIs
bil9ZnVuY3Rpb24gT28obil7cmV0dXJuIG5ldyBEYXRlKG4pfWZ1bmN0aW9uIFlvKG4pe3JldHVy
biBKU09OLnBhcnNlKG4ucmVzcG9uc2VUZXh0KX1mdW5jdGlvbiBJbyhuKXt2YXIgdD0kby5jcmVh
dGVSYW5nZSgpO3JldHVybiB0LnNlbGVjdE5vZGUoJG8uYm9keSksdC5jcmVhdGVDb250ZXh0dWFs
RnJhZ21lbnQobi5yZXNwb25zZVRleHQpfXZhciBabz17dmVyc2lvbjoiMy40LjExIn07RGF0ZS5u
b3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0pO3ZhciBWbz1bXS5zbGlj
ZSxYbz1mdW5jdGlvbihuKXtyZXR1cm4gVm8uY2FsbChuKX0sJG89ZG9jdW1lbnQsQm89JG8uZG9j
dW1lbnRFbGVtZW50LFdvPXdpbmRvdzt0cnl7WG8oQm8uY2hpbGROb2RlcylbMF0ubm9kZVR5cGV9
Y2F0Y2goSm8pe1hvPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1uLmxlbmd0aCxlPW5ldyBBcnJheSh0
KTt0LS07KWVbdF09blt0XTtyZXR1cm4gZX19dHJ5eyRvLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0
eWxlLnNldFByb3BlcnR5KCJvcGFjaXR5IiwwLCIiKX1jYXRjaChHbyl7dmFyIEtvPVdvLkVsZW1l
bnQucHJvdG90eXBlLFFvPUtvLnNldEF0dHJpYnV0ZSxuYT1Lby5zZXRBdHRyaWJ1dGVOUyx0YT1X
by5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSxlYT10YS5zZXRQcm9wZXJ0eTtLby5zZXRB
dHRyaWJ1dGU9ZnVuY3Rpb24obix0KXtRby5jYWxsKHRoaXMsbix0KyIiKX0sS28uc2V0QXR0cmli
dXRlTlM9ZnVuY3Rpb24obix0LGUpe25hLmNhbGwodGhpcyxuLHQsZSsiIil9LHRhLnNldFByb3Bl
cnR5PWZ1bmN0aW9uKG4sdCxlKXtlYS5jYWxsKHRoaXMsbix0KyIiLGUpfX1aby5hc2NlbmRpbmc9
bixaby5kZXNjZW5kaW5nPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4+dD8tMTp0Pm4/MTp0Pj1uPzA6
MC8wfSxaby5taW49ZnVuY3Rpb24obix0KXt2YXIgZSxyLHU9LTEsaT1uLmxlbmd0aDtpZigxPT09
YXJndW1lbnRzLmxlbmd0aCl7Zm9yKDsrK3U8aSYmIShudWxsIT0oZT1uW3VdKSYmZT49ZSk7KWU9
dm9pZCAwO2Zvcig7Kyt1PGk7KW51bGwhPShyPW5bdV0pJiZlPnImJihlPXIpfWVsc2V7Zm9yKDsr
K3U8aSYmIShudWxsIT0oZT10LmNhbGwobixuW3VdLHUpKSYmZT49ZSk7KWU9dm9pZCAwO2Zvcig7
Kyt1PGk7KW51bGwhPShyPXQuY2FsbChuLG5bdV0sdSkpJiZlPnImJihlPXIpfXJldHVybiBlfSxa
by5tYXg9ZnVuY3Rpb24obix0KXt2YXIgZSxyLHU9LTEsaT1uLmxlbmd0aDtpZigxPT09YXJndW1l
bnRzLmxlbmd0aCl7Zm9yKDsrK3U8aSYmIShudWxsIT0oZT1uW3VdKSYmZT49ZSk7KWU9dm9pZCAw
O2Zvcig7Kyt1PGk7KW51bGwhPShyPW5bdV0pJiZyPmUmJihlPXIpfWVsc2V7Zm9yKDsrK3U8aSYm
IShudWxsIT0oZT10LmNhbGwobixuW3VdLHUpKSYmZT49ZSk7KWU9dm9pZCAwO2Zvcig7Kyt1PGk7
KW51bGwhPShyPXQuY2FsbChuLG5bdV0sdSkpJiZyPmUmJihlPXIpfXJldHVybiBlfSxaby5leHRl
bnQ9ZnVuY3Rpb24obix0KXt2YXIgZSxyLHUsaT0tMSxvPW4ubGVuZ3RoO2lmKDE9PT1hcmd1bWVu
dHMubGVuZ3RoKXtmb3IoOysraTxvJiYhKG51bGwhPShlPXU9bltpXSkmJmU+PWUpOyllPXU9dm9p
ZCAwO2Zvcig7KytpPG87KW51bGwhPShyPW5baV0pJiYoZT5yJiYoZT1yKSxyPnUmJih1PXIpKX1l
bHNle2Zvcig7KytpPG8mJiEobnVsbCE9KGU9dT10LmNhbGwobixuW2ldLGkpKSYmZT49ZSk7KWU9
dm9pZCAwO2Zvcig7KytpPG87KW51bGwhPShyPXQuY2FsbChuLG5baV0saSkpJiYoZT5yJiYoZT1y
KSxyPnUmJih1PXIpKX1yZXR1cm5bZSx1XX0sWm8uc3VtPWZ1bmN0aW9uKG4sdCl7dmFyIGUscj0w
LHU9bi5sZW5ndGgsaT0tMTtpZigxPT09YXJndW1lbnRzLmxlbmd0aClmb3IoOysraTx1Oylpc05h
TihlPStuW2ldKXx8KHIrPWUpO2Vsc2UgZm9yKDsrK2k8dTspaXNOYU4oZT0rdC5jYWxsKG4sbltp
XSxpKSl8fChyKz1lKTtyZXR1cm4gcn0sWm8ubWVhbj1mdW5jdGlvbihuLGUpe3ZhciByLHU9MCxp
PW4ubGVuZ3RoLG89LTEsYT1pO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7KytvPGk7KXQo
cj1uW29dKT91Kz1yOi0tYTtlbHNlIGZvcig7KytvPGk7KXQocj1lLmNhbGwobixuW29dLG8pKT91
Kz1yOi0tYTtyZXR1cm4gYT91L2E6dm9pZCAwfSxaby5xdWFudGlsZT1mdW5jdGlvbihuLHQpe3Zh
ciBlPShuLmxlbmd0aC0xKSp0KzEscj1NYXRoLmZsb29yKGUpLHU9K25bci0xXSxpPWUtcjtyZXR1
cm4gaT91K2kqKG5bcl0tdSk6dX0sWm8ubWVkaWFuPWZ1bmN0aW9uKGUscil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg+MSYmKGU9ZS5tYXAocikpLGU9ZS5maWx0ZXIodCksZS5sZW5ndGg/Wm8ucXVh
bnRpbGUoZS5zb3J0KG4pLC41KTp2b2lkIDB9O3ZhciByYT1lKG4pO1pvLmJpc2VjdExlZnQ9cmEu
bGVmdCxaby5iaXNlY3Q9Wm8uYmlzZWN0UmlnaHQ9cmEucmlnaHQsWm8uYmlzZWN0b3I9ZnVuY3Rp
b24odCl7cmV0dXJuIGUoMT09PXQubGVuZ3RoP2Z1bmN0aW9uKGUscil7cmV0dXJuIG4odChlKSxy
KX06dCl9LFpvLnNodWZmbGU9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGUscj1uLmxlbmd0aDtyOyll
PTB8TWF0aC5yYW5kb20oKSpyLS0sdD1uW3JdLG5bcl09bltlXSxuW2VdPXQ7cmV0dXJuIG59LFpv
LnBlcm11dGU9ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1uZXcgQXJyYXkoZSk7
ZS0tOylyW2VdPW5bdFtlXV07cmV0dXJuIHJ9LFpvLnBhaXJzPWZ1bmN0aW9uKG4pe2Zvcih2YXIg
dCxlPTAscj1uLmxlbmd0aC0xLHU9blswXSxpPW5ldyBBcnJheSgwPnI/MDpyKTtyPmU7KWlbZV09
W3Q9dSx1PW5bKytlXV07cmV0dXJuIGl9LFpvLnppcD1mdW5jdGlvbigpe2lmKCEodT1hcmd1bWVu
dHMubGVuZ3RoKSlyZXR1cm5bXTtmb3IodmFyIG49LTEsdD1aby5taW4oYXJndW1lbnRzLHIpLGU9
bmV3IEFycmF5KHQpOysrbjx0Oylmb3IodmFyIHUsaT0tMSxvPWVbbl09bmV3IEFycmF5KHUpOysr
aTx1OylvW2ldPWFyZ3VtZW50c1tpXVtuXTtyZXR1cm4gZX0sWm8udHJhbnNwb3NlPWZ1bmN0aW9u
KG4pe3JldHVybiBaby56aXAuYXBwbHkoWm8sbil9LFpvLmtleXM9ZnVuY3Rpb24obil7dmFyIHQ9
W107Zm9yKHZhciBlIGluIG4pdC5wdXNoKGUpO3JldHVybiB0fSxaby52YWx1ZXM9ZnVuY3Rpb24o
bil7dmFyIHQ9W107Zm9yKHZhciBlIGluIG4pdC5wdXNoKG5bZV0pO3JldHVybiB0fSxaby5lbnRy
aWVzPWZ1bmN0aW9uKG4pe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiBuKXQucHVzaCh7a2V5OmUsdmFs
dWU6bltlXX0pO3JldHVybiB0fSxaby5tZXJnZT1mdW5jdGlvbihuKXtmb3IodmFyIHQsZSxyLHU9
bi5sZW5ndGgsaT0tMSxvPTA7KytpPHU7KW8rPW5baV0ubGVuZ3RoO2ZvcihlPW5ldyBBcnJheShv
KTstLXU+PTA7KWZvcihyPW5bdV0sdD1yLmxlbmd0aDstLXQ+PTA7KWVbLS1vXT1yW3RdO3JldHVy
biBlfTt2YXIgdWE9TWF0aC5hYnM7Wm8ucmFuZ2U9ZnVuY3Rpb24obix0LGUpe2lmKGFyZ3VtZW50
cy5sZW5ndGg8MyYmKGU9MSxhcmd1bWVudHMubGVuZ3RoPDImJih0PW4sbj0wKSksMS8wPT09KHQt
bikvZSl0aHJvdyBuZXcgRXJyb3IoImluZmluaXRlIHJhbmdlIik7dmFyIHIsaT1bXSxvPXUodWEo
ZSkpLGE9LTE7aWYobio9byx0Kj1vLGUqPW8sMD5lKWZvcig7KHI9bitlKisrYSk+dDspaS5wdXNo
KHIvbyk7ZWxzZSBmb3IoOyhyPW4rZSorK2EpPHQ7KWkucHVzaChyL28pO3JldHVybiBpfSxaby5t
YXA9ZnVuY3Rpb24obil7dmFyIHQ9bmV3IG87aWYobiBpbnN0YW5jZW9mIG8pbi5mb3JFYWNoKGZ1
bmN0aW9uKG4sZSl7dC5zZXQobixlKX0pO2Vsc2UgZm9yKHZhciBlIGluIG4pdC5zZXQoZSxuW2Vd
KTtyZXR1cm4gdH0saShvLHtoYXM6YSxnZXQ6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXNbaWErbl19
LHNldDpmdW5jdGlvbihuLHQpe3JldHVybiB0aGlzW2lhK25dPXR9LHJlbW92ZTpjLGtleXM6cyx2
YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQs
ZSl7bi5wdXNoKGUpfSksbn0sZW50cmllczpmdW5jdGlvbigpe3ZhciBuPVtdO3JldHVybiB0aGlz
LmZvckVhY2goZnVuY3Rpb24odCxlKXtuLnB1c2goe2tleTp0LHZhbHVlOmV9KX0pLG59LHNpemU6
bCxlbXB0eTpmLGZvckVhY2g6ZnVuY3Rpb24obil7Zm9yKHZhciB0IGluIHRoaXMpdC5jaGFyQ29k
ZUF0KDApPT09b2EmJm4uY2FsbCh0aGlzLHQuc3Vic3RyaW5nKDEpLHRoaXNbdF0pfX0pO3ZhciBp
YT0iXHgwMCIsb2E9aWEuY2hhckNvZGVBdCgwKTtaby5uZXN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
bih0LGEsYyl7aWYoYz49aS5sZW5ndGgpcmV0dXJuIHI/ci5jYWxsKHUsYSk6ZT9hLnNvcnQoZSk6
YTtmb3IodmFyIHMsbCxmLGgsZz0tMSxwPWEubGVuZ3RoLHY9aVtjKytdLGQ9bmV3IG87KytnPHA7
KShoPWQuZ2V0KHM9dihsPWFbZ10pKSk/aC5wdXNoKGwpOmQuc2V0KHMsW2xdKTtyZXR1cm4gdD8o
bD10KCksZj1mdW5jdGlvbihlLHIpe2wuc2V0KGUsbih0LHIsYykpfSk6KGw9e30sZj1mdW5jdGlv
bihlLHIpe2xbZV09bih0LHIsYyl9KSxkLmZvckVhY2goZiksbH1mdW5jdGlvbiB0KG4sZSl7aWYo
ZT49aS5sZW5ndGgpcmV0dXJuIG47dmFyIHI9W10sdT1hW2UrK107cmV0dXJuIG4uZm9yRWFjaChm
dW5jdGlvbihuLHUpe3IucHVzaCh7a2V5Om4sdmFsdWVzOnQodSxlKX0pfSksdT9yLnNvcnQoZnVu
Y3Rpb24obix0KXtyZXR1cm4gdShuLmtleSx0LmtleSl9KTpyfXZhciBlLHIsdT17fSxpPVtdLGE9
W107cmV0dXJuIHUubWFwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oZSx0LDApfSx1LmVudHJpZXM9
ZnVuY3Rpb24oZSl7cmV0dXJuIHQobihaby5tYXAsZSwwKSwwKX0sdS5rZXk9ZnVuY3Rpb24obil7
cmV0dXJuIGkucHVzaChuKSx1fSx1LnNvcnRLZXlzPWZ1bmN0aW9uKG4pe3JldHVybiBhW2kubGVu
Z3RoLTFdPW4sdX0sdS5zb3J0VmFsdWVzPWZ1bmN0aW9uKG4pe3JldHVybiBlPW4sdX0sdS5yb2xs
dXA9ZnVuY3Rpb24obil7cmV0dXJuIHI9bix1fSx1fSxaby5zZXQ9ZnVuY3Rpb24obil7dmFyIHQ9
bmV3IGg7aWYobilmb3IodmFyIGU9MCxyPW4ubGVuZ3RoO3I+ZTsrK2UpdC5hZGQobltlXSk7cmV0
dXJuIHR9LGkoaCx7aGFzOmEsYWRkOmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzW2lhK25dPSEwLG59
LHJlbW92ZTpmdW5jdGlvbihuKXtyZXR1cm4gbj1pYStuLG4gaW4gdGhpcyYmZGVsZXRlIHRoaXNb
bl19LHZhbHVlczpzLHNpemU6bCxlbXB0eTpmLGZvckVhY2g6ZnVuY3Rpb24obil7Zm9yKHZhciB0
IGluIHRoaXMpdC5jaGFyQ29kZUF0KDApPT09b2EmJm4uY2FsbCh0aGlzLHQuc3Vic3RyaW5nKDEp
KX19KSxaby5iZWhhdmlvcj17fSxaby5yZWJpbmQ9ZnVuY3Rpb24obix0KXtmb3IodmFyIGUscj0x
LHU9YXJndW1lbnRzLmxlbmd0aDsrK3I8dTspbltlPWFyZ3VtZW50c1tyXV09ZyhuLHQsdFtlXSk7
cmV0dXJuIG59O3ZhciBhYT1bIndlYmtpdCIsIm1zIiwibW96IiwiTW96IiwibyIsIk8iXTtaby5k
aXNwYXRjaD1mdW5jdGlvbigpe2Zvcih2YXIgbj1uZXcgZCx0PS0xLGU9YXJndW1lbnRzLmxlbmd0
aDsrK3Q8ZTspblthcmd1bWVudHNbdF1dPW0obik7cmV0dXJuIG59LGQucHJvdG90eXBlLm9uPWZ1
bmN0aW9uKG4sdCl7dmFyIGU9bi5pbmRleE9mKCIuIikscj0iIjtpZihlPj0wJiYocj1uLnN1YnN0
cmluZyhlKzEpLG49bi5zdWJzdHJpbmcoMCxlKSksbilyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwy
P3RoaXNbbl0ub24ocik6dGhpc1tuXS5vbihyLHQpO2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoKXtp
ZihudWxsPT10KWZvcihuIGluIHRoaXMpdGhpcy5oYXNPd25Qcm9wZXJ0eShuKSYmdGhpc1tuXS5v
bihyLG51bGwpO3JldHVybiB0aGlzfX0sWm8uZXZlbnQ9bnVsbCxaby5yZXF1b3RlPWZ1bmN0aW9u
KG4pe3JldHVybiBuLnJlcGxhY2UoY2EsIlxcJCYiKX07dmFyIGNhPS9bXFxcXlwkXCpcK1w/XHxc
W1xdXChcKVwuXHtcfV0vZyxzYT17fS5fX3Byb3RvX18/ZnVuY3Rpb24obix0KXtuLl9fcHJvdG9f
Xz10fTpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZSBpbiB0KW5bZV09dFtlXX0sbGE9ZnVuY3Rpb24o
bix0KXtyZXR1cm4gdC5xdWVyeVNlbGVjdG9yKG4pfSxmYT1mdW5jdGlvbihuLHQpe3JldHVybiB0
LnF1ZXJ5U2VsZWN0b3JBbGwobil9LGhhPUJvLm1hdGNoZXN8fEJvW3AoQm8sIm1hdGNoZXNTZWxl
Y3RvciIpXSxnYT1mdW5jdGlvbihuLHQpe3JldHVybiBoYS5jYWxsKG4sdCl9OyJmdW5jdGlvbiI9
PXR5cGVvZiBTaXp6bGUmJihsYT1mdW5jdGlvbihuLHQpe3JldHVybiBTaXp6bGUobix0KVswXXx8
bnVsbH0sZmE9U2l6emxlLGdhPVNpenpsZS5tYXRjaGVzU2VsZWN0b3IpLFpvLnNlbGVjdGlvbj1m
dW5jdGlvbigpe3JldHVybiBtYX07dmFyIHBhPVpvLnNlbGVjdGlvbi5wcm90b3R5cGU9W107cGEu
c2VsZWN0PWZ1bmN0aW9uKG4pe3ZhciB0LGUscix1LGk9W107bj1iKG4pO2Zvcih2YXIgbz0tMSxh
PXRoaXMubGVuZ3RoOysrbzxhOyl7aS5wdXNoKHQ9W10pLHQucGFyZW50Tm9kZT0ocj10aGlzW29d
KS5wYXJlbnROb2RlO2Zvcih2YXIgYz0tMSxzPXIubGVuZ3RoOysrYzxzOykodT1yW2NdKT8odC5w
dXNoKGU9bi5jYWxsKHUsdS5fX2RhdGFfXyxjLG8pKSxlJiYiX19kYXRhX18iaW4gdSYmKGUuX19k
YXRhX189dS5fX2RhdGFfXykpOnQucHVzaChudWxsKX1yZXR1cm4gXyhpKX0scGEuc2VsZWN0QWxs
PWZ1bmN0aW9uKG4pe3ZhciB0LGUscj1bXTtuPXcobik7Zm9yKHZhciB1PS0xLGk9dGhpcy5sZW5n
dGg7Kyt1PGk7KWZvcih2YXIgbz10aGlzW3VdLGE9LTEsYz1vLmxlbmd0aDsrK2E8YzspKGU9b1th
XSkmJihyLnB1c2godD1YbyhuLmNhbGwoZSxlLl9fZGF0YV9fLGEsdSkpKSx0LnBhcmVudE5vZGU9
ZSk7cmV0dXJuIF8ocil9O3ZhciB2YT17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
eGh0bWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHhsaW5rOiJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFj
ZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07Wm8ubnM9e3ByZWZpeDp2
YSxxdWFsaWZ5OmZ1bmN0aW9uKG4pe3ZhciB0PW4uaW5kZXhPZigiOiIpLGU9bjtyZXR1cm4gdD49
MCYmKGU9bi5zdWJzdHJpbmcoMCx0KSxuPW4uc3Vic3RyaW5nKHQrMSkpLHZhLmhhc093blByb3Bl
cnR5KGUpP3tzcGFjZTp2YVtlXSxsb2NhbDpufTpufX0scGEuYXR0cj1mdW5jdGlvbihuLHQpe2lm
KGFyZ3VtZW50cy5sZW5ndGg8Mil7aWYoInN0cmluZyI9PXR5cGVvZiBuKXt2YXIgZT10aGlzLm5v
ZGUoKTtyZXR1cm4gbj1aby5ucy5xdWFsaWZ5KG4pLG4ubG9jYWw/ZS5nZXRBdHRyaWJ1dGVOUyhu
LnNwYWNlLG4ubG9jYWwpOmUuZ2V0QXR0cmlidXRlKG4pfWZvcih0IGluIG4pdGhpcy5lYWNoKFMo
dCxuW3RdKSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFjaChTKG4sdCkpfSxwYS5jbGFzc2Vk
PWZ1bmN0aW9uKG4sdCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtpZigic3RyaW5nIj09dHlwZW9m
IG4pe3ZhciBlPXRoaXMubm9kZSgpLHI9KG49QShuKSkubGVuZ3RoLHU9LTE7aWYodD1lLmNsYXNz
TGlzdCl7Zm9yKDsrK3U8cjspaWYoIXQuY29udGFpbnMoblt1XSkpcmV0dXJuITF9ZWxzZSBmb3Io
dD1lLmdldEF0dHJpYnV0ZSgiY2xhc3MiKTsrK3U8cjspaWYoIUUoblt1XSkudGVzdCh0KSlyZXR1
cm4hMTtyZXR1cm4hMH1mb3IodCBpbiBuKXRoaXMuZWFjaChDKHQsblt0XSkpO3JldHVybiB0aGlz
fXJldHVybiB0aGlzLmVhY2goQyhuLHQpKX0scGEuc3R5bGU9ZnVuY3Rpb24obix0LGUpe3ZhciBy
PWFyZ3VtZW50cy5sZW5ndGg7aWYoMz5yKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pezI+ciYmKHQ9
IiIpO2ZvcihlIGluIG4pdGhpcy5lYWNoKHooZSxuW2VdLHQpKTtyZXR1cm4gdGhpc31pZigyPnIp
cmV0dXJuIFdvLmdldENvbXB1dGVkU3R5bGUodGhpcy5ub2RlKCksbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZShuKTtlPSIifXJldHVybiB0aGlzLmVhY2goeihuLHQsZSkpfSxwYS5wcm9wZXJ0eT1mdW5j
dGlvbihuLHQpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7aWYoInN0cmluZyI9PXR5cGVvZiBuKXJl
dHVybiB0aGlzLm5vZGUoKVtuXTtmb3IodCBpbiBuKXRoaXMuZWFjaChMKHQsblt0XSkpO3JldHVy
biB0aGlzfXJldHVybiB0aGlzLmVhY2goTChuLHQpKX0scGEudGV4dD1mdW5jdGlvbihuKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVuY3Rp
b24oKXt2YXIgdD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9
PXQ/IiI6dH06bnVsbD09bj9mdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9IiJ9OmZ1bmN0aW9u
KCl7dGhpcy50ZXh0Q29udGVudD1ufSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LHBhLmh0bWw9
ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCJmdW5jdGlvbiI9
PXR5cGVvZiBuP2Z1bmN0aW9uKCl7dmFyIHQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5p
bm5lckhUTUw9bnVsbD09dD8iIjp0fTpudWxsPT1uP2Z1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9
IiJ9OmZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9bn0pOnRoaXMubm9kZSgpLmlubmVySFRNTH0s
cGEuYXBwZW5kPWZ1bmN0aW9uKG4pe3JldHVybiBuPVQobiksdGhpcy5zZWxlY3QoZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KX0scGEu
aW5zZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49VChuKSx0PWIodCksdGhpcy5zZWxlY3QoZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyks
dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSl9LHBhLnJlbW92ZT1mdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbj10aGlzLnBhcmVudE5vZGU7biYmbi5yZW1v
dmVDaGlsZCh0aGlzKX0pfSxwYS5kYXRhPWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZShuLGUpe3Zh
ciByLHUsaSxhPW4ubGVuZ3RoLGY9ZS5sZW5ndGgsaD1NYXRoLm1pbihhLGYpLGc9bmV3IEFycmF5
KGYpLHA9bmV3IEFycmF5KGYpLHY9bmV3IEFycmF5KGEpO2lmKHQpe3ZhciBkLG09bmV3IG8seT1u
ZXcgbyx4PVtdO2ZvcihyPS0xOysrcjxhOylkPXQuY2FsbCh1PW5bcl0sdS5fX2RhdGFfXyxyKSxt
LmhhcyhkKT92W3JdPXU6bS5zZXQoZCx1KSx4LnB1c2goZCk7Zm9yKHI9LTE7KytyPGY7KWQ9dC5j
YWxsKGUsaT1lW3JdLHIpLCh1PW0uZ2V0KGQpKT8oZ1tyXT11LHUuX19kYXRhX189aSk6eS5oYXMo
ZCl8fChwW3JdPXEoaSkpLHkuc2V0KGQsaSksbS5yZW1vdmUoZCk7Zm9yKHI9LTE7KytyPGE7KW0u
aGFzKHhbcl0pJiYodltyXT1uW3JdKX1lbHNle2ZvcihyPS0xOysrcjxoOyl1PW5bcl0saT1lW3Jd
LHU/KHUuX19kYXRhX189aSxnW3JdPXUpOnBbcl09cShpKTtmb3IoO2Y+cjsrK3IpcFtyXT1xKGVb
cl0pO2Zvcig7YT5yOysrcil2W3JdPW5bcl19cC51cGRhdGU9ZyxwLnBhcmVudE5vZGU9Zy5wYXJl
bnROb2RlPXYucGFyZW50Tm9kZT1uLnBhcmVudE5vZGUsYy5wdXNoKHApLHMucHVzaChnKSxsLnB1
c2godil9dmFyIHIsdSxpPS0xLGE9dGhpcy5sZW5ndGg7aWYoIWFyZ3VtZW50cy5sZW5ndGgpe2Zv
cihuPW5ldyBBcnJheShhPShyPXRoaXNbMF0pLmxlbmd0aCk7KytpPGE7KSh1PXJbaV0pJiYobltp
XT11Ll9fZGF0YV9fKTtyZXR1cm4gbn12YXIgYz1VKFtdKSxzPV8oW10pLGw9XyhbXSk7aWYoImZ1
bmN0aW9uIj09dHlwZW9mIG4pZm9yKDsrK2k8YTspZShyPXRoaXNbaV0sbi5jYWxsKHIsci5wYXJl
bnROb2RlLl9fZGF0YV9fLGkpKTtlbHNlIGZvcig7KytpPGE7KWUocj10aGlzW2ldLG4pO3JldHVy
biBzLmVudGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGN9LHMuZXhpdD1mdW5jdGlvbigpe3JldHVybiBs
fSxzfSxwYS5kYXR1bT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnBy
b3BlcnR5KCJfX2RhdGFfXyIsbik6dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iKX0scGEuZmlsdGVy
PWZ1bmN0aW9uKG4pe3ZhciB0LGUscix1PVtdOyJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj1SKG4p
KTtmb3IodmFyIGk9MCxvPXRoaXMubGVuZ3RoO28+aTtpKyspe3UucHVzaCh0PVtdKSx0LnBhcmVu
dE5vZGU9KGU9dGhpc1tpXSkucGFyZW50Tm9kZTtmb3IodmFyIGE9MCxjPWUubGVuZ3RoO2M+YTth
KyspKHI9ZVthXSkmJm4uY2FsbChyLHIuX19kYXRhX18sYSxpKSYmdC5wdXNoKHIpfXJldHVybiBf
KHUpfSxwYS5vcmRlcj1mdW5jdGlvbigpe2Zvcih2YXIgbj0tMSx0PXRoaXMubGVuZ3RoOysrbjx0
Oylmb3IodmFyIGUscj10aGlzW25dLHU9ci5sZW5ndGgtMSxpPXJbdV07LS11Pj0wOykoZT1yW3Vd
KSYmKGkmJmkhPT1lLm5leHRTaWJsaW5nJiZpLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsaSks
aT1lKTtyZXR1cm4gdGhpc30scGEuc29ydD1mdW5jdGlvbihuKXtuPUQuYXBwbHkodGhpcyxhcmd1
bWVudHMpO2Zvcih2YXIgdD0tMSxlPXRoaXMubGVuZ3RoOysrdDxlOyl0aGlzW3RdLnNvcnQobik7
cmV0dXJuIHRoaXMub3JkZXIoKX0scGEuZWFjaD1mdW5jdGlvbihuKXtyZXR1cm4gUCh0aGlzLGZ1
bmN0aW9uKHQsZSxyKXtuLmNhbGwodCx0Ll9fZGF0YV9fLGUscil9KX0scGEuY2FsbD1mdW5jdGlv
bihuKXt2YXIgdD1Ybyhhcmd1bWVudHMpO3JldHVybiBuLmFwcGx5KHRbMF09dGhpcyx0KSx0aGlz
fSxwYS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiF0aGlzLm5vZGUoKX0scGEubm9kZT1mdW5jdGlv
bigpe2Zvcih2YXIgbj0wLHQ9dGhpcy5sZW5ndGg7dD5uO24rKylmb3IodmFyIGU9dGhpc1tuXSxy
PTAsdT1lLmxlbmd0aDt1PnI7cisrKXt2YXIgaT1lW3JdO2lmKGkpcmV0dXJuIGl9cmV0dXJuIG51
bGx9LHBhLnNpemU9ZnVuY3Rpb24oKXt2YXIgbj0wO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24o
KXsrK259KSxufTt2YXIgZGE9W107Wm8uc2VsZWN0aW9uLmVudGVyPVUsWm8uc2VsZWN0aW9uLmVu
dGVyLnByb3RvdHlwZT1kYSxkYS5hcHBlbmQ9cGEuYXBwZW5kLGRhLmVtcHR5PXBhLmVtcHR5LGRh
Lm5vZGU9cGEubm9kZSxkYS5jYWxsPXBhLmNhbGwsZGEuc2l6ZT1wYS5zaXplLGRhLnNlbGVjdD1m
dW5jdGlvbihuKXtmb3IodmFyIHQsZSxyLHUsaSxvPVtdLGE9LTEsYz10aGlzLmxlbmd0aDsrK2E8
Yzspe3I9KHU9dGhpc1thXSkudXBkYXRlLG8ucHVzaCh0PVtdKSx0LnBhcmVudE5vZGU9dS5wYXJl
bnROb2RlO2Zvcih2YXIgcz0tMSxsPXUubGVuZ3RoOysrczxsOykoaT11W3NdKT8odC5wdXNoKHJb
c109ZT1uLmNhbGwodS5wYXJlbnROb2RlLGkuX19kYXRhX18scyxhKSksZS5fX2RhdGFfXz1pLl9f
ZGF0YV9fKTp0LnB1c2gobnVsbCl9cmV0dXJuIF8obyl9LGRhLmluc2VydD1mdW5jdGlvbihuLHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PWoodGhpcykpLHBhLmluc2VydC5jYWxsKHRo
aXMsbix0KX0scGEudHJhbnNpdGlvbj1mdW5jdGlvbigpe2Zvcih2YXIgbix0LGU9U3N8fCsrTnMs
cj1bXSx1PWtzfHx7dGltZTpEYXRlLm5vdygpLGVhc2U6eHUsZGVsYXk6MCxkdXJhdGlvbjoyNTB9
LGk9LTEsbz10aGlzLmxlbmd0aDsrK2k8bzspe3IucHVzaChuPVtdKTtmb3IodmFyIGE9dGhpc1tp
XSxjPS0xLHM9YS5sZW5ndGg7KytjPHM7KSh0PWFbY10pJiZQbyh0LGMsZSx1KSxuLnB1c2godCl9
cmV0dXJuIHFvKHIsZSl9LHBhLmludGVycnVwdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2go
SCl9LFpvLnNlbGVjdD1mdW5jdGlvbihuKXt2YXIgdD1bInN0cmluZyI9PXR5cGVvZiBuP2xhKG4s
JG8pOm5dO3JldHVybiB0LnBhcmVudE5vZGU9Qm8sXyhbdF0pfSxaby5zZWxlY3RBbGw9ZnVuY3Rp
b24obil7dmFyIHQ9WG8oInN0cmluZyI9PXR5cGVvZiBuP2ZhKG4sJG8pOm4pO3JldHVybiB0LnBh
cmVudE5vZGU9Qm8sXyhbdF0pfTt2YXIgbWE9Wm8uc2VsZWN0KEJvKTtwYS5vbj1mdW5jdGlvbihu
LHQsZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDtpZigzPnIpe2lmKCJzdHJpbmciIT10eXBlb2Yg
bil7Mj5yJiYodD0hMSk7Zm9yKGUgaW4gbil0aGlzLmVhY2goRihlLG5bZV0sdCkpO3JldHVybiB0
aGlzfWlmKDI+cilyZXR1cm4ocj10aGlzLm5vZGUoKVsiX19vbiIrbl0pJiZyLl87ZT0hMX1yZXR1
cm4gdGhpcy5lYWNoKEYobix0LGUpKX07dmFyIHlhPVpvLm1hcCh7bW91c2VlbnRlcjoibW91c2Vv
dmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KTt5YS5mb3JFYWNoKGZ1bmN0aW9uKG4peyJvbiIr
biBpbiAkbyYmeWEucmVtb3ZlKG4pfSk7dmFyIHhhPSJvbnNlbGVjdHN0YXJ0ImluICRvP251bGw6
cChCby5zdHlsZSwidXNlclNlbGVjdCIpLE1hPTA7Wm8ubW91c2U9ZnVuY3Rpb24obil7cmV0dXJu
IFoobix4KCkpfTt2YXIgX2E9L1dlYktpdC8udGVzdChXby5uYXZpZ2F0b3IudXNlckFnZW50KT8t
MTowO1pvLnRvdWNoZXM9ZnVuY3Rpb24obix0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYo
dD14KCkudG91Y2hlcyksdD9Ybyh0KS5tYXAoZnVuY3Rpb24odCl7dmFyIGU9WihuLHQpO3JldHVy
biBlLmlkZW50aWZpZXI9dC5pZGVudGlmaWVyLGV9KTpbXX0sWm8uYmVoYXZpb3IuZHJhZz1mdW5j
dGlvbigpe2Z1bmN0aW9uIG4oKXt0aGlzLm9uKCJtb3VzZWRvd24uZHJhZyIsdSkub24oInRvdWNo
c3RhcnQuZHJhZyIsaSl9ZnVuY3Rpb24gdChuLHQsdSxpLG8pe3JldHVybiBmdW5jdGlvbigpe2Z1
bmN0aW9uIGEoKXt2YXIgbixlLHI9dChoLHYpO3ImJihuPXJbMF0teFswXSxlPXJbMV0teFsxXSxw
fD1ufGUseD1yLGcoe3R5cGU6ImRyYWciLHg6clswXStzWzBdLHk6clsxXStzWzFdLGR4Om4sZHk6
ZX0pKX1mdW5jdGlvbiBjKCl7dChoLHYpJiYobS5vbihpK2QsbnVsbCkub24obytkLG51bGwpLHko
cCYmWm8uZXZlbnQudGFyZ2V0PT09ZiksZyh7dHlwZToiZHJhZ2VuZCJ9KSl9dmFyIHMsbD10aGlz
LGY9Wm8uZXZlbnQudGFyZ2V0LGg9bC5wYXJlbnROb2RlLGc9ZS5vZihsLGFyZ3VtZW50cykscD0w
LHY9bigpLGQ9Ii5kcmFnIisobnVsbD09dj8iIjoiLSIrdiksbT1aby5zZWxlY3QodSgpKS5vbihp
K2QsYSkub24obytkLGMpLHk9SSgpLHg9dChoLHYpO3I/KHM9ci5hcHBseShsLGFyZ3VtZW50cyks
cz1bcy54LXhbMF0scy55LXhbMV1dKTpzPVswLDBdLGcoe3R5cGU6ImRyYWdzdGFydCJ9KX19dmFy
IGU9TShuLCJkcmFnIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIpLHI9bnVsbCx1PXQodixaby5tb3Vz
ZSwkLCJtb3VzZW1vdmUiLCJtb3VzZXVwIiksaT10KFYsWm8udG91Y2gsWCwidG91Y2htb3ZlIiwi
dG91Y2hlbmQiKTtyZXR1cm4gbi5vcmlnaW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHI9dCxuKTpyfSxaby5yZWJpbmQobixlLCJvbiIpfTt2YXIgYmE9TWF0aC5QSSx3YT0y
KmJhLFNhPWJhLzIsa2E9MWUtNixFYT1rYSprYSxBYT1iYS8xODAsQ2E9MTgwL2JhLE5hPU1hdGgu
U1FSVDIsemE9MixMYT00O1pvLmludGVycG9sYXRlWm9vbT1mdW5jdGlvbihuLHQpe2Z1bmN0aW9u
IGUobil7dmFyIHQ9bip5O2lmKG0pe3ZhciBlPVEodiksbz1pLyh6YSpoKSooZSpudChOYSp0K3Yp
LUsodikpO3JldHVybltyK28qcyx1K28qbCxpKmUvUShOYSp0K3YpXX1yZXR1cm5bcituKnMsdStu
KmwsaSpNYXRoLmV4cChOYSp0KV19dmFyIHI9blswXSx1PW5bMV0saT1uWzJdLG89dFswXSxhPXRb
MV0sYz10WzJdLHM9by1yLGw9YS11LGY9cypzK2wqbCxoPU1hdGguc3FydChmKSxnPShjKmMtaSpp
K0xhKmYpLygyKmkqemEqaCkscD0oYypjLWkqaS1MYSpmKS8oMipjKnphKmgpLHY9TWF0aC5sb2co
TWF0aC5zcXJ0KGcqZysxKS1nKSxkPU1hdGgubG9nKE1hdGguc3FydChwKnArMSktcCksbT1kLXYs
eT0obXx8TWF0aC5sb2coYy9pKSkvTmE7cmV0dXJuIGUuZHVyYXRpb249MWUzKnksZX0sWm8uYmVo
YXZpb3Iuem9vbT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7bi5vbihBLHMpLm9uKFJhKyIuem9v
bSIsZikub24oImRibGNsaWNrLnpvb20iLGgpLm9uKHosbCl9ZnVuY3Rpb24gdChuKXtyZXR1cm5b
KG5bMF0tUy54KS9TLmssKG5bMV0tUy55KS9TLmtdfWZ1bmN0aW9uIGUobil7cmV0dXJuW25bMF0q
Uy5rK1MueCxuWzFdKlMuaytTLnldfWZ1bmN0aW9uIHIobil7Uy5rPU1hdGgubWF4KEVbMF0sTWF0
aC5taW4oRVsxXSxuKSl9ZnVuY3Rpb24gdShuLHQpe3Q9ZSh0KSxTLngrPW5bMF0tdFswXSxTLnkr
PW5bMV0tdFsxXX1mdW5jdGlvbiBpKCl7XyYmXy5kb21haW4oeC5yYW5nZSgpLm1hcChmdW5jdGlv
bihuKXtyZXR1cm4obi1TLngpL1Mua30pLm1hcCh4LmludmVydCkpLHcmJncuZG9tYWluKGIucmFu
Z2UoKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuKG4tUy55KS9TLmt9KS5tYXAoYi5pbnZlcnQpKX1m
dW5jdGlvbiBvKG4pe24oe3R5cGU6Inpvb21zdGFydCJ9KX1mdW5jdGlvbiBhKG4pe2koKSxuKHt0
eXBlOiJ6b29tIixzY2FsZTpTLmssdHJhbnNsYXRlOltTLngsUy55XX0pfWZ1bmN0aW9uIGMobil7
bih7dHlwZToiem9vbWVuZCJ9KX1mdW5jdGlvbiBzKCl7ZnVuY3Rpb24gbigpe2w9MSx1KFpvLm1v
dXNlKHIpLGgpLGEocyl9ZnVuY3Rpb24gZSgpe2Yub24oQyxudWxsKS5vbihOLG51bGwpLGcobCYm
Wm8uZXZlbnQudGFyZ2V0PT09aSksYyhzKX12YXIgcj10aGlzLGk9Wm8uZXZlbnQudGFyZ2V0LHM9
TC5vZihyLGFyZ3VtZW50cyksbD0wLGY9Wm8uc2VsZWN0KFdvKS5vbihDLG4pLm9uKE4sZSksaD10
KFpvLm1vdXNlKHIpKSxnPUkoKTtILmNhbGwociksbyhzKX1mdW5jdGlvbiBsKCl7ZnVuY3Rpb24g
bigpe3ZhciBuPVpvLnRvdWNoZXMoZyk7cmV0dXJuIGg9Uy5rLG4uZm9yRWFjaChmdW5jdGlvbihu
KXtuLmlkZW50aWZpZXIgaW4gdiYmKHZbbi5pZGVudGlmaWVyXT10KG4pKX0pLG59ZnVuY3Rpb24g
ZSgpe3ZhciB0PVpvLmV2ZW50LnRhcmdldDtaby5zZWxlY3QodCkub24oTSxpKS5vbihfLGYpLGIu
cHVzaCh0KTtmb3IodmFyIGU9Wm8uZXZlbnQuY2hhbmdlZFRvdWNoZXMsbz0wLGM9ZS5sZW5ndGg7
Yz5vOysrbyl2W2Vbb10uaWRlbnRpZmllcl09bnVsbDt2YXIgcz1uKCksbD1EYXRlLm5vdygpO2lm
KDE9PT1zLmxlbmd0aCl7aWYoNTAwPmwtbSl7dmFyIGg9c1swXSxnPXZbaC5pZGVudGlmaWVyXTty
KDIqUy5rKSx1KGgsZykseSgpLGEocCl9bT1sfWVsc2UgaWYocy5sZW5ndGg+MSl7dmFyIGg9c1sw
XSx4PXNbMV0sdz1oWzBdLXhbMF0saz1oWzFdLXhbMV07ZD13KncrayprfX1mdW5jdGlvbiBpKCl7
Zm9yKHZhciBuLHQsZSxpLG89Wm8udG91Y2hlcyhnKSxjPTAscz1vLmxlbmd0aDtzPmM7KytjLGk9
bnVsbClpZihlPW9bY10saT12W2UuaWRlbnRpZmllcl0pe2lmKHQpYnJlYWs7bj1lLHQ9aX1pZihp
KXt2YXIgbD0obD1lWzBdLW5bMF0pKmwrKGw9ZVsxXS1uWzFdKSpsLGY9ZCYmTWF0aC5zcXJ0KGwv
ZCk7bj1bKG5bMF0rZVswXSkvMiwoblsxXStlWzFdKS8yXSx0PVsodFswXStpWzBdKS8yLCh0WzFd
K2lbMV0pLzJdLHIoZipoKX1tPW51bGwsdShuLHQpLGEocCl9ZnVuY3Rpb24gZigpe2lmKFpvLmV2
ZW50LnRvdWNoZXMubGVuZ3RoKXtmb3IodmFyIHQ9Wm8uZXZlbnQuY2hhbmdlZFRvdWNoZXMsZT0w
LHI9dC5sZW5ndGg7cj5lOysrZSlkZWxldGUgdlt0W2VdLmlkZW50aWZpZXJdO2Zvcih2YXIgdSBp
biB2KXJldHVybiB2b2lkIG4oKX1aby5zZWxlY3RBbGwoYikub24oeCxudWxsKSx3Lm9uKEEscyku
b24oeixsKSxrKCksYyhwKX12YXIgaCxnPXRoaXMscD1MLm9mKGcsYXJndW1lbnRzKSx2PXt9LGQ9
MCx4PSIuem9vbS0iK1pvLmV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIsTT0idG91
Y2htb3ZlIit4LF89InRvdWNoZW5kIit4LGI9W10sdz1aby5zZWxlY3QoZykub24oQSxudWxsKS5v
bih6LGUpLGs9SSgpO0guY2FsbChnKSxlKCksbyhwKX1mdW5jdGlvbiBmKCl7dmFyIG49TC5vZih0
aGlzLGFyZ3VtZW50cyk7ZD9jbGVhclRpbWVvdXQoZCk6KGc9dChwPXZ8fFpvLm1vdXNlKHRoaXMp
KSxILmNhbGwodGhpcyksbyhuKSksZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZD1udWxsLGMobil9
LDUwKSx5KCkscihNYXRoLnBvdygyLC4wMDIqVGEoKSkqUy5rKSx1KHAsZyksYShuKX1mdW5jdGlv
biBoKCl7dmFyIG49TC5vZih0aGlzLGFyZ3VtZW50cyksZT1aby5tb3VzZSh0aGlzKSxpPXQoZSks
cz1NYXRoLmxvZyhTLmspL01hdGguTE4yO28obikscihNYXRoLnBvdygyLFpvLmV2ZW50LnNoaWZ0
S2V5P01hdGguY2VpbChzKS0xOk1hdGguZmxvb3IocykrMSkpLHUoZSxpKSxhKG4pLGMobil9dmFy
IGcscCx2LGQsbSx4LF8sYix3LFM9e3g6MCx5OjAsazoxfSxrPVs5NjAsNTAwXSxFPXFhLEE9Im1v
dXNlZG93bi56b29tIixDPSJtb3VzZW1vdmUuem9vbSIsTj0ibW91c2V1cC56b29tIix6PSJ0b3Vj
aHN0YXJ0Lnpvb20iLEw9TShuLCJ6b29tc3RhcnQiLCJ6b29tIiwiem9vbWVuZCIpO3JldHVybiBu
LmV2ZW50PWZ1bmN0aW9uKG4pe24uZWFjaChmdW5jdGlvbigpe3ZhciBuPUwub2YodGhpcyxhcmd1
bWVudHMpLHQ9UztTcz9aby5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmVhY2goInN0YXJ0Lnpv
b20iLGZ1bmN0aW9uKCl7Uz10aGlzLl9fY2hhcnRfX3x8e3g6MCx5OjAsazoxfSxvKG4pfSkudHdl
ZW4oInpvb206em9vbSIsZnVuY3Rpb24oKXt2YXIgZT1rWzBdLHI9a1sxXSx1PWUvMixpPXIvMixv
PVpvLmludGVycG9sYXRlWm9vbShbKHUtUy54KS9TLmssKGktUy55KS9TLmssZS9TLmtdLFsodS10
LngpL3QuaywoaS10LnkpL3QuayxlL3Qua10pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgcj1vKHQp
LGM9ZS9yWzJdO3RoaXMuX19jaGFydF9fPVM9e3g6dS1yWzBdKmMseTppLXJbMV0qYyxrOmN9LGEo
bil9fSkuZWFjaCgiZW5kLnpvb20iLGZ1bmN0aW9uKCl7YyhuKX0pOih0aGlzLl9fY2hhcnRfXz1T
LG8obiksYShuKSxjKG4pKX0pfSxuLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oUz17eDordFswXSx5Oit0WzFdLGs6Uy5rfSxpKCksbik6W1MueCxTLnldfSxu
LnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPXt4OlMueCx5OlMu
eSxrOit0fSxpKCksbik6Uy5rfSxuLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhFPW51bGw9PXQ/cWE6Wyt0WzBdLCt0WzFdXSxuKTpFfSxuLmNlbnRlcj1m
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj10JiZbK3RbMF0sK3RbMV1dLG4p
OnZ9LG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz10JiZbK3Rb
MF0sK3RbMV1dLG4pOmt9LG4ueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Xz10LHg9dC5jb3B5KCksUz17eDowLHk6MCxrOjF9LG4pOl99LG4ueT1mdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8odz10LGI9dC5jb3B5KCksUz17eDowLHk6MCxrOjF9LG4pOnd9
LFpvLnJlYmluZChuLEwsIm9uIil9O3ZhciBUYSxxYT1bMCwxLzBdLFJhPSJvbndoZWVsImluICRv
PyhUYT1mdW5jdGlvbigpe3JldHVybi1aby5ldmVudC5kZWx0YVkqKFpvLmV2ZW50LmRlbHRhTW9k
ZT8xMjA6MSl9LCJ3aGVlbCIpOiJvbm1vdXNld2hlZWwiaW4gJG8/KFRhPWZ1bmN0aW9uKCl7cmV0
dXJuIFpvLmV2ZW50LndoZWVsRGVsdGF9LCJtb3VzZXdoZWVsIik6KFRhPWZ1bmN0aW9uKCl7cmV0
dXJuLVpvLmV2ZW50LmRldGFpbH0sIk1vek1vdXNlUGl4ZWxTY3JvbGwiKTtaby5jb2xvcj1ldCxl
dC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKSsiIn0sWm8u
aHNsPXJ0O3ZhciBEYT1ydC5wcm90b3R5cGU9bmV3IGV0O0RhLmJyaWdodGVyPWZ1bmN0aW9uKG4p
e3JldHVybiBuPU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/bjoxKSxuZXcgcnQodGhpcy5o
LHRoaXMucyx0aGlzLmwvbil9LERhLmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4gbj1NYXRoLnBv
dyguNyxhcmd1bWVudHMubGVuZ3RoP246MSksbmV3IHJ0KHRoaXMuaCx0aGlzLnMsbip0aGlzLmwp
fSxEYS5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gdXQodGhpcy5oLHRoaXMucyx0aGlzLmwpfSxaby5o
Y2w9aXQ7dmFyIFBhPWl0LnByb3RvdHlwZT1uZXcgZXQ7UGEuYnJpZ2h0ZXI9ZnVuY3Rpb24obil7
cmV0dXJuIG5ldyBpdCh0aGlzLmgsdGhpcy5jLE1hdGgubWluKDEwMCx0aGlzLmwrVWEqKGFyZ3Vt
ZW50cy5sZW5ndGg/bjoxKSkpfSxQYS5kYXJrZXI9ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBpdCh0
aGlzLmgsdGhpcy5jLE1hdGgubWF4KDAsdGhpcy5sLVVhKihhcmd1bWVudHMubGVuZ3RoP246MSkp
KX0sUGEucmdiPWZ1bmN0aW9uKCl7cmV0dXJuIG90KHRoaXMuaCx0aGlzLmMsdGhpcy5sKS5yZ2Io
KX0sWm8ubGFiPWF0O3ZhciBVYT0xOCxqYT0uOTUwNDcsSGE9MSxGYT0xLjA4ODgzLE9hPWF0LnBy
b3RvdHlwZT1uZXcgZXQ7T2EuYnJpZ2h0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBhdChNYXRo
Lm1pbigxMDAsdGhpcy5sK1VhKihhcmd1bWVudHMubGVuZ3RoP246MSkpLHRoaXMuYSx0aGlzLmIp
fSxPYS5kYXJrZXI9ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBhdChNYXRoLm1heCgwLHRoaXMubC1V
YSooYXJndW1lbnRzLmxlbmd0aD9uOjEpKSx0aGlzLmEsdGhpcy5iKX0sT2EucmdiPWZ1bmN0aW9u
KCl7cmV0dXJuIGN0KHRoaXMubCx0aGlzLmEsdGhpcy5iKX0sWm8ucmdiPWd0O3ZhciBZYT1ndC5w
cm90b3R5cGU9bmV3IGV0O1lhLmJyaWdodGVyPWZ1bmN0aW9uKG4pe249TWF0aC5wb3coLjcsYXJn
dW1lbnRzLmxlbmd0aD9uOjEpO3ZhciB0PXRoaXMucixlPXRoaXMuZyxyPXRoaXMuYix1PTMwO3Jl
dHVybiB0fHxlfHxyPyh0JiZ1PnQmJih0PXUpLGUmJnU+ZSYmKGU9dSksciYmdT5yJiYocj11KSxu
ZXcgZ3QoTWF0aC5taW4oMjU1LHQvbiksTWF0aC5taW4oMjU1LGUvbiksTWF0aC5taW4oMjU1LHIv
bikpKTpuZXcgZ3QodSx1LHUpfSxZYS5kYXJrZXI9ZnVuY3Rpb24obil7cmV0dXJuIG49TWF0aC5w
b3coLjcsYXJndW1lbnRzLmxlbmd0aD9uOjEpLG5ldyBndChuKnRoaXMucixuKnRoaXMuZyxuKnRo
aXMuYil9LFlhLmhzbD1mdW5jdGlvbigpe3JldHVybiB5dCh0aGlzLnIsdGhpcy5nLHRoaXMuYil9
LFlhLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiMiK2R0KHRoaXMucikrZHQodGhpcy5nKStk
dCh0aGlzLmIpfTt2YXIgSWE9Wm8ubWFwKHthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRl
OjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJl
aWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2Nzcy
MDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6
MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZTox
Mzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2
Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46
MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46
MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkx
MDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNo
aWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdy
ZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxk
YXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1
MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRp
bWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3Jh
bHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWlu
c2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJv
ZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUs
Z3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVk
OjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxh
dmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYs
bGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYx
NTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdo
dGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdo
dHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkw
LGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdy
ZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxs
aW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5
MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1
LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVl
bjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0
LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdo
dGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nh
c2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1
NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3Jhbmdl
cmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVn
cmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEy
MDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxw
aW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4
ODczNixyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNh
ZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2Vh
Z3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEy
NjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0
NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVs
Ymx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9t
YXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjEx
MzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5
ZWxsb3dncmVlbjoxMDE0NTA3NH0pO0lhLmZvckVhY2goZnVuY3Rpb24obix0KXtJYS5zZXQobixw
dCh0KSl9KSxaby5mdW5jdG9yPWJ0LFpvLnhocj1TdCh3dCksWm8uZHN2PWZ1bmN0aW9uKG4sdCl7
ZnVuY3Rpb24gZShuLGUsaSl7YXJndW1lbnRzLmxlbmd0aDwzJiYoaT1lLGU9bnVsbCk7dmFyIG89
a3Qobix0LG51bGw9PWU/cjp1KGUpLGkpO3JldHVybiBvLnJvdz1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD9vLnJlc3BvbnNlKG51bGw9PShlPW4pP3I6dShuKSk6ZX0sb31mdW5j
dGlvbiByKG4pe3JldHVybiBlLnBhcnNlKG4ucmVzcG9uc2VUZXh0KX1mdW5jdGlvbiB1KG4pe3Jl
dHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5wYXJzZSh0LnJlc3BvbnNlVGV4dCxuKX19ZnVuY3Rp
b24gaSh0KXtyZXR1cm4gdC5tYXAobykuam9pbihuKX1mdW5jdGlvbiBvKG4pe3JldHVybiBhLnRl
c3Qobik/JyInK24ucmVwbGFjZSgvXCIvZywnIiInKSsnIic6bn12YXIgYT1uZXcgUmVnRXhwKCdb
IicrbisiXG5dIiksYz1uLmNoYXJDb2RlQXQoMCk7cmV0dXJuIGUucGFyc2U9ZnVuY3Rpb24obix0
KXt2YXIgcjtyZXR1cm4gZS5wYXJzZVJvd3MobixmdW5jdGlvbihuLGUpe2lmKHIpcmV0dXJuIHIo
bixlLTEpO3ZhciB1PW5ldyBGdW5jdGlvbigiZCIsInJldHVybiB7IituLm1hcChmdW5jdGlvbihu
LHQpe3JldHVybiBKU09OLnN0cmluZ2lmeShuKSsiOiBkWyIrdCsiXSJ9KS5qb2luKCIsIikrIn0i
KTtyPXQ/ZnVuY3Rpb24obixlKXtyZXR1cm4gdCh1KG4pLGUpfTp1fSl9LGUucGFyc2VSb3dzPWZ1
bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZSgpe2lmKGw+PXMpcmV0dXJuIG87aWYodSlyZXR1cm4gdT0h
MSxpO3ZhciB0PWw7aWYoMzQ9PT1uLmNoYXJDb2RlQXQodCkpe2Zvcih2YXIgZT10O2UrKzxzOylp
ZigzND09PW4uY2hhckNvZGVBdChlKSl7aWYoMzQhPT1uLmNoYXJDb2RlQXQoZSsxKSlicmVhazsr
K2V9bD1lKzI7dmFyIHI9bi5jaGFyQ29kZUF0KGUrMSk7cmV0dXJuIDEzPT09cj8odT0hMCwxMD09
PW4uY2hhckNvZGVBdChlKzIpJiYrK2wpOjEwPT09ciYmKHU9ITApLG4uc3Vic3RyaW5nKHQrMSxl
KS5yZXBsYWNlKC8iIi9nLCciJyl9Zm9yKDtzPmw7KXt2YXIgcj1uLmNoYXJDb2RlQXQobCsrKSxh
PTE7aWYoMTA9PT1yKXU9ITA7ZWxzZSBpZigxMz09PXIpdT0hMCwxMD09PW4uY2hhckNvZGVBdChs
KSYmKCsrbCwrK2EpO2Vsc2UgaWYociE9PWMpY29udGludWU7cmV0dXJuIG4uc3Vic3RyaW5nKHQs
bC1hKX1yZXR1cm4gbi5zdWJzdHJpbmcodCl9Zm9yKHZhciByLHUsaT17fSxvPXt9LGE9W10scz1u
Lmxlbmd0aCxsPTAsZj0wOyhyPWUoKSkhPT1vOyl7Zm9yKHZhciBoPVtdO3IhPT1pJiZyIT09bzsp
aC5wdXNoKHIpLHI9ZSgpOyghdHx8KGg9dChoLGYrKykpKSYmYS5wdXNoKGgpfXJldHVybiBhfSxl
LmZvcm1hdD1mdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHRbMF0pKXJldHVybiBlLmZvcm1h
dFJvd3ModCk7dmFyIHI9bmV3IGgsdT1bXTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKG4pe2Zv
cih2YXIgdCBpbiBuKXIuaGFzKHQpfHx1LnB1c2goci5hZGQodCkpfSksW3UubWFwKG8pLmpvaW4o
bildLmNvbmNhdCh0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdS5tYXAoZnVuY3Rpb24obil7cmV0
dXJuIG8odFtuXSl9KS5qb2luKG4pfSkpLmpvaW4oIlxuIil9LGUuZm9ybWF0Um93cz1mdW5jdGlv
bihuKXtyZXR1cm4gbi5tYXAoaSkuam9pbigiXG4iKX0sZX0sWm8uY3N2PVpvLmRzdigiLCIsInRl
eHQvY3N2IiksWm8udHN2PVpvLmRzdigiICAgICIsInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXMi
KSxaby50b3VjaD1mdW5jdGlvbihuLHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwzJiYoZT10LHQ9
eCgpLmNoYW5nZWRUb3VjaGVzKSx0KWZvcih2YXIgcix1PTAsaT10Lmxlbmd0aDtpPnU7Kyt1KWlm
KChyPXRbdV0pLmlkZW50aWZpZXI9PT1lKXJldHVybiBaKG4scil9O3ZhciBaYSxWYSxYYSwkYSxC
YSxXYT1Xb1twKFdvLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKV18fGZ1bmN0aW9uKG4pe3NldFRp
bWVvdXQobiwxNyl9O1pvLnRpbWVyPWZ1bmN0aW9uKG4sdCxlKXt2YXIgcj1hcmd1bWVudHMubGVu
Z3RoOzI+ciYmKHQ9MCksMz5yJiYoZT1EYXRlLm5vdygpKTt2YXIgdT1lK3QsaT17YzpuLHQ6dSxm
OiExLG46bnVsbH07VmE/VmEubj1pOlphPWksVmE9aSxYYXx8KCRhPWNsZWFyVGltZW91dCgkYSks
WGE9MSxXYShBdCkpfSxaby50aW1lci5mbHVzaD1mdW5jdGlvbigpe0N0KCksTnQoKX0sWm8ucm91
bmQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gdD9NYXRoLnJvdW5kKG4qKHQ9TWF0aC5wb3coMTAsdCkp
KS90Ok1hdGgucm91bmQobil9O3ZhciBKYT1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIlx4YjUi
LCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXS5tYXAoTHQpO1pvLmZvcm1h
dFByZWZpeD1mdW5jdGlvbihuLHQpe3ZhciBlPTA7cmV0dXJuIG4mJigwPm4mJihuKj0tMSksdCYm
KG49Wm8ucm91bmQobix6dChuLHQpKSksZT0xK01hdGguZmxvb3IoMWUtMTIrTWF0aC5sb2cobikv
TWF0aC5MTjEwKSxlPU1hdGgubWF4KC0yNCxNYXRoLm1pbigyNCwzKk1hdGguZmxvb3IoKGUtMSkv
MykpKSksSmFbOCtlLzNdfTt2YXIgR2E9Lyg/OihbXntdKT8oWzw+PV5dKSk/KFsrXC0gXSk/KFsk
I10pPygwKT8oXGQrKT8oLCk/KFwuLT9cZCspPyhbYS16JV0pPy9pLEthPVpvLm1hcCh7YjpmdW5j
dGlvbihuKXtyZXR1cm4gbi50b1N0cmluZygyKX0sYzpmdW5jdGlvbihuKXtyZXR1cm4gU3RyaW5n
LmZyb21DaGFyQ29kZShuKX0sbzpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZyg4KX0seDpm
dW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZygxNil9LFg6ZnVuY3Rpb24obil7cmV0dXJuIG4u
dG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9LGc6ZnVuY3Rpb24obix0KXtyZXR1cm4gbi50b1By
ZWNpc2lvbih0KX0sZTpmdW5jdGlvbihuLHQpe3JldHVybiBuLnRvRXhwb25lbnRpYWwodCl9LGY6
ZnVuY3Rpb24obix0KXtyZXR1cm4gbi50b0ZpeGVkKHQpfSxyOmZ1bmN0aW9uKG4sdCl7cmV0dXJu
KG49Wm8ucm91bmQobix6dChuLHQpKSkudG9GaXhlZChNYXRoLm1heCgwLE1hdGgubWluKDIwLHp0
KG4qKDErMWUtMTUpLHQpKSkpfX0pLFFhPVpvLnRpbWU9e30sbmM9RGF0ZTtSdC5wcm90b3R5cGU9
e2dldERhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ0RhdGUoKX0sZ2V0RGF5OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENEYXkoKX0sZ2V0RnVsbFllYXI6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5fLmdldFVUQ0Z1bGxZZWFyKCl9LGdldEhvdXJzOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuXy5nZXRVVENIb3VycygpfSxnZXRNaWxsaXNlY29uZHM6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fLmdldFVUQ01pbGxpc2Vjb25kcygpfSxnZXRNaW51dGVzOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuXy5nZXRVVENNaW51dGVzKCl9LGdldE1vbnRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuXy5nZXRVVENNb250aCgpfSxnZXRTZWNvbmRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5n
ZXRVVENTZWNvbmRzKCl9LGdldFRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFRpbWUo
KX0sZ2V0VGltZXpvbmVPZmZzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sdmFsdWVPZjpmdW5jdGlv
bigpe3JldHVybiB0aGlzLl8udmFsdWVPZigpfSxzZXREYXRlOmZ1bmN0aW9uKCl7dGMuc2V0VVRD
RGF0ZS5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0RGF5OmZ1bmN0aW9uKCl7dGMuc2V0VVRD
RGF5LmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRGdWxsWWVhcjpmdW5jdGlvbigpe3RjLnNl
dFVUQ0Z1bGxZZWFyLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRIb3VyczpmdW5jdGlvbigp
e3RjLnNldFVUQ0hvdXJzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRNaWxsaXNlY29uZHM6
ZnVuY3Rpb24oKXt0Yy5zZXRVVENNaWxsaXNlY29uZHMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9
LHNldE1pbnV0ZXM6ZnVuY3Rpb24oKXt0Yy5zZXRVVENNaW51dGVzLmFwcGx5KHRoaXMuXyxhcmd1
bWVudHMpfSxzZXRNb250aDpmdW5jdGlvbigpe3RjLnNldFVUQ01vbnRoLmFwcGx5KHRoaXMuXyxh
cmd1bWVudHMpfSxzZXRTZWNvbmRzOmZ1bmN0aW9uKCl7dGMuc2V0VVRDU2Vjb25kcy5hcHBseSh0
aGlzLl8sYXJndW1lbnRzKX0sc2V0VGltZTpmdW5jdGlvbigpe3RjLnNldFRpbWUuYXBwbHkodGhp
cy5fLGFyZ3VtZW50cyl9fTt2YXIgdGM9RGF0ZS5wcm90b3R5cGU7UWEueWVhcj1EdChmdW5jdGlv
bihuKXtyZXR1cm4gbj1RYS5kYXkobiksbi5zZXRNb250aCgwLDEpLG59LGZ1bmN0aW9uKG4sdCl7
bi5zZXRGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCkrdCl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdl
dEZ1bGxZZWFyKCl9KSxRYS55ZWFycz1RYS55ZWFyLnJhbmdlLFFhLnllYXJzLnV0Yz1RYS55ZWFy
LnV0Yy5yYW5nZSxRYS5kYXk9RHQoZnVuY3Rpb24obil7dmFyIHQ9bmV3IG5jKDJlMywwKTtyZXR1
cm4gdC5zZXRGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCksbi5nZXRNb250aCgpLG4uZ2V0RGF0ZSgp
KSx0fSxmdW5jdGlvbihuLHQpe24uc2V0RGF0ZShuLmdldERhdGUoKSt0KX0sZnVuY3Rpb24obil7
cmV0dXJuIG4uZ2V0RGF0ZSgpLTF9KSxRYS5kYXlzPVFhLmRheS5yYW5nZSxRYS5kYXlzLnV0Yz1R
YS5kYXkudXRjLnJhbmdlLFFhLmRheU9mWWVhcj1mdW5jdGlvbihuKXt2YXIgdD1RYS55ZWFyKG4p
O3JldHVybiBNYXRoLmZsb29yKChuLXQtNmU0KihuLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRU
aW1lem9uZU9mZnNldCgpKSkvODY0ZTUpfSxbInN1bmRheSIsIm1vbmRheSIsInR1ZXNkYXkiLCJ3
ZWRuZXNkYXkiLCJ0aHVyc2RheSIsImZyaWRheSIsInNhdHVyZGF5Il0uZm9yRWFjaChmdW5jdGlv
bihuLHQpe3Q9Ny10O3ZhciBlPVFhW25dPUR0KGZ1bmN0aW9uKG4pe3JldHVybihuPVFhLmRheShu
KSkuc2V0RGF0ZShuLmdldERhdGUoKS0obi5nZXREYXkoKSt0KSU3KSxufSxmdW5jdGlvbihuLHQp
e24uc2V0RGF0ZShuLmdldERhdGUoKSs3Kk1hdGguZmxvb3IodCkpfSxmdW5jdGlvbihuKXt2YXIg
ZT1RYS55ZWFyKG4pLmdldERheSgpO3JldHVybiBNYXRoLmZsb29yKChRYS5kYXlPZlllYXIobikr
KGUrdCklNykvNyktKGUhPT10KX0pO1FhW24rInMiXT1lLnJhbmdlLFFhW24rInMiXS51dGM9ZS51
dGMucmFuZ2UsUWFbbisiT2ZZZWFyIl09ZnVuY3Rpb24obil7dmFyIGU9UWEueWVhcihuKS5nZXRE
YXkoKTtyZXR1cm4gTWF0aC5mbG9vcigoUWEuZGF5T2ZZZWFyKG4pKyhlK3QpJTcpLzcpfX0pLFFh
LndlZWs9UWEuc3VuZGF5LFFhLndlZWtzPVFhLnN1bmRheS5yYW5nZSxRYS53ZWVrcy51dGM9UWEu
c3VuZGF5LnV0Yy5yYW5nZSxRYS53ZWVrT2ZZZWFyPVFhLnN1bmRheU9mWWVhcjt2YXIgZWM9eyIt
IjoiIixfOiIgIiwwOiIwIn0scmM9L15ccypcZCsvLHVjPS9eJS87Wm8ubG9jYWxlPWZ1bmN0aW9u
KG4pe3JldHVybntudW1iZXJGb3JtYXQ6VHQobiksdGltZUZvcm1hdDpVdChuKX19O3ZhciBpYz1a
by5sb2NhbGUoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5
OlsiJCIsIiJdLGRhdGVUaW1lOiIlYSAlYiAlZSAlWCAlWSIsZGF0ZToiJW0vJWQvJVkiLHRpbWU6
IiVIOiVNOiVTIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJU
dWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0
RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpb
IkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIs
IkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hv
cnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWci
LCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO1pvLmZvcm1hdD1pYy5udW1iZXJGb3JtYXQsWm8u
Z2VvPXt9LHVlLnByb3RvdHlwZT17czowLHQ6MCxhZGQ6ZnVuY3Rpb24obil7aWUobix0aGlzLnQs
b2MpLGllKG9jLnMsdGhpcy5zLHRoaXMpLHRoaXMucz90aGlzLnQrPW9jLnQ6dGhpcy5zPW9jLnR9
LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5zPXRoaXMudD0wfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuc319O3ZhciBvYz1uZXcgdWU7Wm8uZ2VvLnN0cmVhbT1mdW5jdGlvbihuLHQpe24m
JmFjLmhhc093blByb3BlcnR5KG4udHlwZSk/YWNbbi50eXBlXShuLHQpOm9lKG4sdCl9O3ZhciBh
Yz17RmVhdHVyZTpmdW5jdGlvbihuLHQpe29lKG4uZ2VvbWV0cnksdCl9LEZlYXR1cmVDb2xsZWN0
aW9uOmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uZmVhdHVyZXMscj0tMSx1PWUubGVuZ3RoOysr
cjx1OylvZShlW3JdLmdlb21ldHJ5LHQpfX0sY2M9e1NwaGVyZTpmdW5jdGlvbihuLHQpe3Quc3Bo
ZXJlKCl9LFBvaW50OmZ1bmN0aW9uKG4sdCl7bj1uLmNvb3JkaW5hdGVzLHQucG9pbnQoblswXSxu
WzFdLG5bMl0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uY29vcmRpbmF0
ZXMscj0tMSx1PWUubGVuZ3RoOysrcjx1OyluPWVbcl0sdC5wb2ludChuWzBdLG5bMV0sblsyXSl9
LExpbmVTdHJpbmc6ZnVuY3Rpb24obix0KXthZShuLmNvb3JkaW5hdGVzLHQsMCl9LE11bHRpTGlu
ZVN0cmluZzpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1uLmNvb3JkaW5hdGVzLHI9LTEsdT1lLmxl
bmd0aDsrK3I8dTspYWUoZVtyXSx0LDApfSxQb2x5Z29uOmZ1bmN0aW9uKG4sdCl7Y2Uobi5jb29y
ZGluYXRlcyx0KX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uY29vcmRp
bmF0ZXMscj0tMSx1PWUubGVuZ3RoOysrcjx1OyljZShlW3JdLHQpfSxHZW9tZXRyeUNvbGxlY3Rp
b246ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9bi5nZW9tZXRyaWVzLHI9LTEsdT1lLmxlbmd0aDsr
K3I8dTspb2UoZVtyXSx0KX19O1pvLmdlby5hcmVhPWZ1bmN0aW9uKG4pe3JldHVybiBzYz0wLFpv
Lmdlby5zdHJlYW0obixmYyksc2N9O3ZhciBzYyxsYz1uZXcgdWUsZmM9e3NwaGVyZTpmdW5jdGlv
bigpe3NjKz00KmJhfSxwb2ludDp2LGxpbmVTdGFydDp2LGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6
ZnVuY3Rpb24oKXtsYy5yZXNldCgpLGZjLmxpbmVTdGFydD1zZX0scG9seWdvbkVuZDpmdW5jdGlv
bigpe3ZhciBuPTIqbGM7c2MrPTA+bj80KmJhK246bixmYy5saW5lU3RhcnQ9ZmMubGluZUVuZD1m
Yy5wb2ludD12fX07Wm8uZ2VvLmJvdW5kcz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obix0KXt4LnB1
c2goTT1bbD1uLGg9bl0pLGY+dCYmKGY9dCksdD5nJiYoZz10KX1mdW5jdGlvbiB0KHQsZSl7dmFy
IHI9bGUoW3QqQWEsZSpBYV0pO2lmKG0pe3ZhciB1PWhlKG0sciksaT1bdVsxXSwtdVswXSwwXSxv
PWhlKGksdSk7dmUobyksbz1kZShvKTt2YXIgYz10LXAscz1jPjA/MTotMSx2PW9bMF0qQ2Eqcyxk
PXVhKGMpPjE4MDtpZihkXih2PnMqcCYmcyp0PnYpKXt2YXIgeT1vWzFdKkNhO3k+ZyYmKGc9eSl9
ZWxzZSBpZih2PSh2KzM2MCklMzYwLTE4MCxkXih2PnMqcCYmcyp0PnYpKXt2YXIgeT0tb1sxXSpD
YTtmPnkmJihmPXkpfWVsc2UgZj5lJiYoZj1lKSxlPmcmJihnPWUpO2Q/cD50P2EobCx0KT5hKGws
aCkmJihoPXQpOmEodCxoKT5hKGwsaCkmJihsPXQpOmg+PWw/KGw+dCYmKGw9dCksdD5oJiYoaD10
KSk6dD5wP2EobCx0KT5hKGwsaCkmJihoPXQpOmEodCxoKT5hKGwsaCkmJihsPXQpfWVsc2Ugbih0
LGUpO209cixwPXR9ZnVuY3Rpb24gZSgpe18ucG9pbnQ9dH1mdW5jdGlvbiByKCl7TVswXT1sLE1b
MV09aCxfLnBvaW50PW4sbT1udWxsfWZ1bmN0aW9uIHUobixlKXtpZihtKXt2YXIgcj1uLXA7eSs9
dWEocik+MTgwP3IrKHI+MD8zNjA6LTM2MCk6cn1lbHNlIHY9bixkPWU7ZmMucG9pbnQobixlKSx0
KG4sZSl9ZnVuY3Rpb24gaSgpe2ZjLmxpbmVTdGFydCgpfWZ1bmN0aW9uIG8oKXt1KHYsZCksZmMu
bGluZUVuZCgpLHVhKHkpPmthJiYobD0tKGg9MTgwKSksTVswXT1sLE1bMV09aCxtPW51bGx9ZnVu
Y3Rpb24gYShuLHQpe3JldHVybih0LT1uKTwwP3QrMzYwOnR9ZnVuY3Rpb24gYyhuLHQpe3JldHVy
biBuWzBdLXRbMF19ZnVuY3Rpb24gcyhuLHQpe3JldHVybiB0WzBdPD10WzFdP3RbMF08PW4mJm48
PXRbMV06bjx0WzBdfHx0WzFdPG59dmFyIGwsZixoLGcscCx2LGQsbSx5LHgsTSxfPXtwb2ludDpu
LGxpbmVTdGFydDplLGxpbmVFbmQ6cixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtfLnBvaW50PXUs
Xy5saW5lU3RhcnQ9aSxfLmxpbmVFbmQ9byx5PTAsZmMucG9seWdvblN0YXJ0KCl9LHBvbHlnb25F
bmQ6ZnVuY3Rpb24oKXtmYy5wb2x5Z29uRW5kKCksXy5wb2ludD1uLF8ubGluZVN0YXJ0PWUsXy5s
aW5lRW5kPXIsMD5sYz8obD0tKGg9MTgwKSxmPS0oZz05MCkpOnk+a2E/Zz05MDota2E+eSYmKGY9
LTkwKSxNWzBdPWwsTVsxXT1ofX07cmV0dXJuIGZ1bmN0aW9uKG4pe2c9aD0tKGw9Zj0xLzApLHg9
W10sWm8uZ2VvLnN0cmVhbShuLF8pO3ZhciB0PXgubGVuZ3RoO2lmKHQpe3guc29ydChjKTtmb3Io
dmFyIGUscj0xLHU9eFswXSxpPVt1XTt0PnI7KytyKWU9eFtyXSxzKGVbMF0sdSl8fHMoZVsxXSx1
KT8oYSh1WzBdLGVbMV0pPmEodVswXSx1WzFdKSYmKHVbMV09ZVsxXSksYShlWzBdLHVbMV0pPmEo
dVswXSx1WzFdKSYmKHVbMF09ZVswXSkpOmkucHVzaCh1PWUpOworZm9yKHZhciBvLGUscD0tMS8w
LHQ9aS5sZW5ndGgtMSxyPTAsdT1pW3RdO3Q+PXI7dT1lLCsrcillPWlbcl0sKG89YSh1WzFdLGVb
MF0pKT5wJiYocD1vLGw9ZVswXSxoPXVbMV0pfXJldHVybiB4PU09bnVsbCwxLzA9PT1sfHwxLzA9
PT1mP1tbMC8wLDAvMF0sWzAvMCwwLzBdXTpbW2wsZl0sW2gsZ11dfX0oKSxaby5nZW8uY2VudHJv
aWQ9ZnVuY3Rpb24obil7aGM9Z2M9cGM9dmM9ZGM9bWM9eWM9eGM9TWM9X2M9YmM9MCxaby5nZW8u
c3RyZWFtKG4sd2MpO3ZhciB0PU1jLGU9X2Mscj1iYyx1PXQqdCtlKmUrcipyO3JldHVybiBFYT51
JiYodD1tYyxlPXljLHI9eGMsa2E+Z2MmJih0PXBjLGU9dmMscj1kYyksdT10KnQrZSplK3IqcixF
YT51KT9bMC8wLDAvMF06W01hdGguYXRhbjIoZSx0KSpDYSxHKHIvTWF0aC5zcXJ0KHUpKSpDYV19
O3ZhciBoYyxnYyxwYyx2YyxkYyxtYyx5Yyx4YyxNYyxfYyxiYyx3Yz17c3BoZXJlOnYscG9pbnQ6
eWUsbGluZVN0YXJ0Ok1lLGxpbmVFbmQ6X2UscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7d2MubGlu
ZVN0YXJ0PWJlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7d2MubGluZVN0YXJ0PU1lfX0sU2M9QWUo
d2UsVGUsUmUsWy1iYSwtYmEvMl0pLGtjPTFlOTtaby5nZW8uY2xpcEV4dGVudD1mdW5jdGlvbigp
e3ZhciBuLHQsZSxyLHUsaSxvPXtzdHJlYW06ZnVuY3Rpb24obil7cmV0dXJuIHUmJih1LnZhbGlk
PSExKSx1PWkobiksdS52YWxpZD0hMCx1fSxleHRlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGk9VWUobj0rYVswXVswXSx0PSthWzBdWzFdLGU9K2FbMV1bMF0scj0rYVsx
XVsxXSksdSYmKHUudmFsaWQ9ITEsdT1udWxsKSxvKTpbW24sdF0sW2Uscl1dfX07cmV0dXJuIG8u
ZXh0ZW50KFtbMCwwXSxbOTYwLDUwMF1dKX0sKFpvLmdlby5jb25pY0VxdWFsQXJlYT1mdW5jdGlv
bigpe3JldHVybiBIZShGZSl9KS5yYXc9RmUsWm8uZ2VvLmFsYmVycz1mdW5jdGlvbigpe3JldHVy
biBaby5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43
XSkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKX0sWm8uZ2VvLmFsYmVyc1VzYT1m
dW5jdGlvbigpe2Z1bmN0aW9uIG4obil7dmFyIGk9blswXSxvPW5bMV07cmV0dXJuIHQ9bnVsbCxl
KGksbyksdHx8KHIoaSxvKSx0KXx8dShpLG8pLHR9dmFyIHQsZSxyLHUsaT1aby5nZW8uYWxiZXJz
KCksbz1aby5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1
OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLGE9Wm8uZ2VvLmNvbmljRXF1YWxBcmVhKCkucm90YXRl
KFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGM9e3BvaW50OmZ1
bmN0aW9uKG4sZSl7dD1bbixlXX19O3JldHVybiBuLmludmVydD1mdW5jdGlvbihuKXt2YXIgdD1p
LnNjYWxlKCksZT1pLnRyYW5zbGF0ZSgpLHI9KG5bMF0tZVswXSkvdCx1PShuWzFdLWVbMV0pL3Q7
cmV0dXJuKHU+PS4xMiYmLjIzND51JiZyPj0tLjQyNSYmLS4yMTQ+cj9vOnU+PS4xNjYmJi4yMzQ+
dSYmcj49LS4yMTQmJi0uMTE1PnI/YTppKS5pbnZlcnQobil9LG4uc3RyZWFtPWZ1bmN0aW9uKG4p
e3ZhciB0PWkuc3RyZWFtKG4pLGU9by5zdHJlYW0obikscj1hLnN0cmVhbShuKTtyZXR1cm57cG9p
bnQ6ZnVuY3Rpb24obix1KXt0LnBvaW50KG4sdSksZS5wb2ludChuLHUpLHIucG9pbnQobix1KX0s
c3BoZXJlOmZ1bmN0aW9uKCl7dC5zcGhlcmUoKSxlLnNwaGVyZSgpLHIuc3BoZXJlKCl9LGxpbmVT
dGFydDpmdW5jdGlvbigpe3QubGluZVN0YXJ0KCksZS5saW5lU3RhcnQoKSxyLmxpbmVTdGFydCgp
fSxsaW5lRW5kOmZ1bmN0aW9uKCl7dC5saW5lRW5kKCksZS5saW5lRW5kKCksci5saW5lRW5kKCl9
LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3QucG9seWdvblN0YXJ0KCksZS5wb2x5Z29uU3RhcnQo
KSxyLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dC5wb2x5Z29uRW5kKCks
ZS5wb2x5Z29uRW5kKCksci5wb2x5Z29uRW5kKCl9fX0sbi5wcmVjaXNpb249ZnVuY3Rpb24odCl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkucHJlY2lzaW9uKHQpLG8ucHJlY2lzaW9uKHQpLGEu
cHJlY2lzaW9uKHQpLG4pOmkucHJlY2lzaW9uKCl9LG4uc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGkuc2NhbGUodCksby5zY2FsZSguMzUqdCksYS5zY2FsZSh0KSxu
LnRyYW5zbGF0ZShpLnRyYW5zbGF0ZSgpKSk6aS5zY2FsZSgpfSxuLnRyYW5zbGF0ZT1mdW5jdGlv
bih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gaS50cmFuc2xhdGUoKTt2YXIgcz1pLnNj
YWxlKCksbD0rdFswXSxmPSt0WzFdO3JldHVybiBlPWkudHJhbnNsYXRlKHQpLmNsaXBFeHRlbnQo
W1tsLS40NTUqcyxmLS4yMzgqc10sW2wrLjQ1NSpzLGYrLjIzOCpzXV0pLnN0cmVhbShjKS5wb2lu
dCxyPW8udHJhbnNsYXRlKFtsLS4zMDcqcyxmKy4yMDEqc10pLmNsaXBFeHRlbnQoW1tsLS40MjUq
cytrYSxmKy4xMipzK2thXSxbbC0uMjE0KnMta2EsZisuMjM0KnMta2FdXSkuc3RyZWFtKGMpLnBv
aW50LHU9YS50cmFuc2xhdGUoW2wtLjIwNSpzLGYrLjIxMipzXSkuY2xpcEV4dGVudChbW2wtLjIx
NCpzK2thLGYrLjE2NipzK2thXSxbbC0uMTE1KnMta2EsZisuMjM0KnMta2FdXSkuc3RyZWFtKGMp
LnBvaW50LG59LG4uc2NhbGUoMTA3MCl9O3ZhciBFYyxBYyxDYyxOYyx6YyxMYyxUYz17cG9pbnQ6
dixsaW5lU3RhcnQ6dixsaW5lRW5kOnYscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7QWM9MCxUYy5s
aW5lU3RhcnQ9T2V9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtUYy5saW5lU3RhcnQ9VGMubGluZUVu
ZD1UYy5wb2ludD12LEVjKz11YShBYy8yKX19LHFjPXtwb2ludDpZZSxsaW5lU3RhcnQ6dixsaW5l
RW5kOnYscG9seWdvblN0YXJ0OnYscG9seWdvbkVuZDp2fSxSYz17cG9pbnQ6VmUsbGluZVN0YXJ0
OlhlLGxpbmVFbmQ6JGUscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7UmMubGluZVN0YXJ0PUJlfSxw
b2x5Z29uRW5kOmZ1bmN0aW9uKCl7UmMucG9pbnQ9VmUsUmMubGluZVN0YXJ0PVhlLFJjLmxpbmVF
bmQ9JGV9fTtaby5nZW8ucGF0aD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7cmV0dXJuIG4mJigi
ZnVuY3Rpb24iPT10eXBlb2YgYSYmaS5wb2ludFJhZGl1cygrYS5hcHBseSh0aGlzLGFyZ3VtZW50
cykpLG8mJm8udmFsaWR8fChvPXUoaSkpLFpvLmdlby5zdHJlYW0obixvKSksaS5yZXN1bHQoKX1m
dW5jdGlvbiB0KCl7cmV0dXJuIG89bnVsbCxufXZhciBlLHIsdSxpLG8sYT00LjU7cmV0dXJuIG4u
YXJlYT1mdW5jdGlvbihuKXtyZXR1cm4gRWM9MCxaby5nZW8uc3RyZWFtKG4sdShUYykpLEVjfSxu
LmNlbnRyb2lkPWZ1bmN0aW9uKG4pe3JldHVybiBwYz12Yz1kYz1tYz15Yz14Yz1NYz1fYz1iYz0w
LFpvLmdlby5zdHJlYW0obix1KFJjKSksYmM/W01jL2JjLF9jL2JjXTp4Yz9bbWMveGMseWMveGNd
OmRjP1twYy9kYyx2Yy9kY106WzAvMCwwLzBdfSxuLmJvdW5kcz1mdW5jdGlvbihuKXtyZXR1cm4g
emM9TGM9LShDYz1OYz0xLzApLFpvLmdlby5zdHJlYW0obix1KHFjKSksW1tDYyxOY10sW3pjLExj
XV19LG4ucHJvamVjdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0o
ZT1uKT9uLnN0cmVhbXx8R2Uobik6d3QsdCgpKTplfSxuLmNvbnRleHQ9ZnVuY3Rpb24obil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09KHI9bik/bmV3IEllOm5ldyBXZShuKSwiZnVu
Y3Rpb24iIT10eXBlb2YgYSYmaS5wb2ludFJhZGl1cyhhKSx0KCkpOnJ9LG4ucG9pbnRSYWRpdXM9
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9m
IHQ/dDooaS5wb2ludFJhZGl1cygrdCksK3QpLG4pOmF9LG4ucHJvamVjdGlvbihaby5nZW8uYWxi
ZXJzVXNhKCkpLmNvbnRleHQobnVsbCl9LFpvLmdlby50cmFuc2Zvcm09ZnVuY3Rpb24obil7cmV0
dXJue3N0cmVhbTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgS2UodCk7Zm9yKHZhciByIGluIG4pZVty
XT1uW3JdO3JldHVybiBlfX19LEtlLnByb3RvdHlwZT17cG9pbnQ6ZnVuY3Rpb24obix0KXt0aGlz
LnN0cmVhbS5wb2ludChuLHQpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUo
KX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6
ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigp
e3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5z
dHJlYW0ucG9seWdvbkVuZCgpfX0sWm8uZ2VvLnByb2plY3Rpb249bnIsWm8uZ2VvLnByb2plY3Rp
b25NdXRhdG9yPXRyLChaby5nZW8uZXF1aXJlY3Rhbmd1bGFyPWZ1bmN0aW9uKCl7cmV0dXJuIG5y
KHJyKX0pLnJhdz1yci5pbnZlcnQ9cnIsWm8uZ2VvLnJvdGF0aW9uPWZ1bmN0aW9uKG4pe2Z1bmN0
aW9uIHQodCl7cmV0dXJuIHQ9bih0WzBdKkFhLHRbMV0qQWEpLHRbMF0qPUNhLHRbMV0qPUNhLHR9
cmV0dXJuIG49aXIoblswXSUzNjAqQWEsblsxXSpBYSxuLmxlbmd0aD4yP25bMl0qQWE6MCksdC5p
bnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bi5pbnZlcnQodFswXSpBYSx0WzFdKkFhKSx0WzBd
Kj1DYSx0WzFdKj1DYSx0fSx0fSx1ci5pbnZlcnQ9cnIsWm8uZ2VvLmNpcmNsZT1mdW5jdGlvbigp
e2Z1bmN0aW9uIG4oKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yLmFwcGx5KHRoaXMsYXJn
dW1lbnRzKTpyLHQ9aXIoLW5bMF0qQWEsLW5bMV0qQWEsMCkuaW52ZXJ0LHU9W107cmV0dXJuIGUo
bnVsbCxudWxsLDEse3BvaW50OmZ1bmN0aW9uKG4sZSl7dS5wdXNoKG49dChuLGUpKSxuWzBdKj1D
YSxuWzFdKj1DYX19KSx7dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W3VdfX12YXIgdCxlLHI9
WzAsMF0sdT02O3JldHVybiBuLm9yaWdpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocj10LG4pOnJ9LG4uYW5nbGU9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGU9c3IoKHQ9K3IpKkFhLHUqQWEpLG4pOnR9LG4ucHJlY2lzaW9uPWZ1bmN0aW9uKHIpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXNyKHQqQWEsKHU9K3IpKkFhKSxuKTp1fSxuLmFuZ2xl
KDkwKX0sWm8uZ2VvLmRpc3RhbmNlPWZ1bmN0aW9uKG4sdCl7dmFyIGUscj0odFswXS1uWzBdKSpB
YSx1PW5bMV0qQWEsaT10WzFdKkFhLG89TWF0aC5zaW4ociksYT1NYXRoLmNvcyhyKSxjPU1hdGgu
c2luKHUpLHM9TWF0aC5jb3ModSksbD1NYXRoLnNpbihpKSxmPU1hdGguY29zKGkpO3JldHVybiBN
YXRoLmF0YW4yKE1hdGguc3FydCgoZT1mKm8pKmUrKGU9cypsLWMqZiphKSplKSxjKmwrcypmKmEp
fSxaby5nZW8uZ3JhdGljdWxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3JldHVybnt0eXBlOiJN
dWx0aUxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnQoKX19ZnVuY3Rpb24gdCgpe3JldHVybiBaby5y
YW5nZShNYXRoLmNlaWwoaS9kKSpkLHUsZCkubWFwKGgpLmNvbmNhdChaby5yYW5nZShNYXRoLmNl
aWwocy9tKSptLGMsbSkubWFwKGcpKS5jb25jYXQoWm8ucmFuZ2UoTWF0aC5jZWlsKHIvcCkqcCxl
LHApLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gdWEobiVkKT5rYX0pLm1hcChsKSkuY29uY2F0
KFpvLnJhbmdlKE1hdGguY2VpbChhL3YpKnYsbyx2KS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJu
IHVhKG4lbSk+a2F9KS5tYXAoZikpfXZhciBlLHIsdSxpLG8sYSxjLHMsbCxmLGgsZyxwPTEwLHY9
cCxkPTkwLG09MzYwLHk9Mi41O3JldHVybiBuLmxpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5t
YXAoZnVuY3Rpb24obil7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOm59fSl9
LG4ub3V0bGluZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpb
aChpKS5jb25jYXQoZyhjKS5zbGljZSgxKSxoKHUpLnJldmVyc2UoKS5zbGljZSgxKSxnKHMpLnJl
dmVyc2UoKS5zbGljZSgxKSldfX0sbi5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/bi5tYWpvckV4dGVudCh0KS5taW5vckV4dGVudCh0KTpuLm1pbm9yRXh0ZW50KCl9
LG4ubWFqb3JFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3Rb
MF1bMF0sdT0rdFsxXVswXSxzPSt0WzBdWzFdLGM9K3RbMV1bMV0saT51JiYodD1pLGk9dSx1PXQp
LHM+YyYmKHQ9cyxzPWMsYz10KSxuLnByZWNpc2lvbih5KSk6W1tpLHNdLFt1LGNdXX0sbi5taW5v
ckV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdFswXVswXSxl
PSt0WzFdWzBdLGE9K3RbMF1bMV0sbz0rdFsxXVsxXSxyPmUmJih0PXIscj1lLGU9dCksYT5vJiYo
dD1hLGE9byxvPXQpLG4ucHJlY2lzaW9uKHkpKTpbW3IsYV0sW2Usb11dfSxuLnN0ZXA9ZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bi5tYWpvclN0ZXAodCkubWlub3JTdGVwKHQp
Om4ubWlub3JTdGVwKCl9LG4ubWFqb3JTdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhkPSt0WzBdLG09K3RbMV0sbik6W2QsbV19LG4ubWlub3JTdGVwPWZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSt0WzBdLHY9K3RbMV0sbik6W3Asdl19LG4ucHJl
Y2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PSt0LGw9ZnIoYSxv
LDkwKSxmPWhyKHIsZSx5KSxoPWZyKHMsYyw5MCksZz1ocihpLHUseSksbik6eX0sbi5tYWpvckV4
dGVudChbWy0xODAsLTkwK2thXSxbMTgwLDkwLWthXV0pLm1pbm9yRXh0ZW50KFtbLTE4MCwtODAt
a2FdLFsxODAsODAra2FdXSl9LFpvLmdlby5ncmVhdEFyYz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4o
KXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6W3R8fHIuYXBwbHkodGhpcyxh
cmd1bWVudHMpLGV8fHUuYXBwbHkodGhpcyxhcmd1bWVudHMpXX19dmFyIHQsZSxyPWdyLHU9cHI7
cmV0dXJuIG4uZGlzdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gWm8uZ2VvLmRpc3RhbmNlKHR8fHIu
YXBwbHkodGhpcyxhcmd1bWVudHMpLGV8fHUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sbi5zb3Vy
Y2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSx0PSJmdW5jdGlvbiI9
PXR5cGVvZiBlP251bGw6ZSxuKTpyfSxuLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odT10LGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/bnVsbDp0LG4pOnV9LG4ucHJl
Y2lzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bjowfSxufSxaby5nZW8u
aW50ZXJwb2xhdGU9ZnVuY3Rpb24obix0KXtyZXR1cm4gdnIoblswXSpBYSxuWzFdKkFhLHRbMF0q
QWEsdFsxXSpBYSl9LFpvLmdlby5sZW5ndGg9ZnVuY3Rpb24obil7cmV0dXJuIERjPTAsWm8uZ2Vv
LnN0cmVhbShuLFBjKSxEY307dmFyIERjLFBjPXtzcGhlcmU6dixwb2ludDp2LGxpbmVTdGFydDpk
cixsaW5lRW5kOnYscG9seWdvblN0YXJ0OnYscG9seWdvbkVuZDp2fSxVYz1tcihmdW5jdGlvbihu
KXtyZXR1cm4gTWF0aC5zcXJ0KDIvKDErbikpfSxmdW5jdGlvbihuKXtyZXR1cm4gMipNYXRoLmFz
aW4obi8yKX0pOyhaby5nZW8uYXppbXV0aGFsRXF1YWxBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIG5y
KFVjKX0pLnJhdz1VYzt2YXIgamM9bXIoZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5hY29zKG4pO3Jl
dHVybiB0JiZ0L01hdGguc2luKHQpfSx3dCk7KFpvLmdlby5hemltdXRoYWxFcXVpZGlzdGFudD1m
dW5jdGlvbigpe3JldHVybiBucihqYyl9KS5yYXc9amMsKFpvLmdlby5jb25pY0NvbmZvcm1hbD1m
dW5jdGlvbigpe3JldHVybiBIZSh5cil9KS5yYXc9eXIsKFpvLmdlby5jb25pY0VxdWlkaXN0YW50
PWZ1bmN0aW9uKCl7cmV0dXJuIEhlKHhyKX0pLnJhdz14cjt2YXIgSGM9bXIoZnVuY3Rpb24obil7
cmV0dXJuIDEvbn0sTWF0aC5hdGFuKTsoWm8uZ2VvLmdub21vbmljPWZ1bmN0aW9uKCl7cmV0dXJu
IG5yKEhjKX0pLnJhdz1IYyxNci5pbnZlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm5bbiwyKk1hdGgu
YXRhbihNYXRoLmV4cCh0KSktU2FdfSwoWm8uZ2VvLm1lcmNhdG9yPWZ1bmN0aW9uKCl7cmV0dXJu
IF9yKE1yKX0pLnJhdz1Ncjt2YXIgRmM9bXIoZnVuY3Rpb24oKXtyZXR1cm4gMX0sTWF0aC5hc2lu
KTsoWm8uZ2VvLm9ydGhvZ3JhcGhpYz1mdW5jdGlvbigpe3JldHVybiBucihGYyl9KS5yYXc9RmM7
dmFyIE9jPW1yKGZ1bmN0aW9uKG4pe3JldHVybiAxLygxK24pfSxmdW5jdGlvbihuKXtyZXR1cm4g
MipNYXRoLmF0YW4obil9KTsoWm8uZ2VvLnN0ZXJlb2dyYXBoaWM9ZnVuY3Rpb24oKXtyZXR1cm4g
bnIoT2MpfSkucmF3PU9jLGJyLmludmVydD1mdW5jdGlvbihuLHQpe3JldHVyblstdCwyKk1hdGgu
YXRhbihNYXRoLmV4cChuKSktU2FdfSwoWm8uZ2VvLnRyYW5zdmVyc2VNZXJjYXRvcj1mdW5jdGlv
bigpe3ZhciBuPV9yKGJyKSx0PW4uY2VudGVyLGU9bi5yb3RhdGU7cmV0dXJuIG4uY2VudGVyPWZ1
bmN0aW9uKG4pe3JldHVybiBuP3QoWy1uWzFdLG5bMF1dKToobj10KCksW25bMV0sLW5bMF1dKX0s
bi5yb3RhdGU9ZnVuY3Rpb24obil7cmV0dXJuIG4/ZShbblswXSxuWzFdLG4ubGVuZ3RoPjI/blsy
XSs5MDo5MF0pOihuPWUoKSxbblswXSxuWzFdLG5bMl0tOTBdKX0sZShbMCwwLDkwXSl9KS5yYXc9
YnIsWm8uZ2VvbT17fSxaby5nZW9tLmh1bGw9ZnVuY3Rpb24obil7ZnVuY3Rpb24gdChuKXtpZihu
Lmxlbmd0aDwzKXJldHVybltdO3ZhciB0LHU9YnQoZSksaT1idChyKSxvPW4ubGVuZ3RoLGE9W10s
Yz1bXTtmb3IodD0wO28+dDt0KyspYS5wdXNoKFsrdS5jYWxsKHRoaXMsblt0XSx0KSwraS5jYWxs
KHRoaXMsblt0XSx0KSx0XSk7Zm9yKGEuc29ydChFciksdD0wO28+dDt0KyspYy5wdXNoKFthW3Rd
WzBdLC1hW3RdWzFdXSk7dmFyIHM9a3IoYSksbD1rcihjKSxmPWxbMF09PT1zWzBdLGg9bFtsLmxl
bmd0aC0xXT09PXNbcy5sZW5ndGgtMV0sZz1bXTtmb3IodD1zLmxlbmd0aC0xO3Q+PTA7LS10KWcu
cHVzaChuW2Fbc1t0XV1bMl1dKTtmb3IodD0rZjt0PGwubGVuZ3RoLWg7Kyt0KWcucHVzaChuW2Fb
bFt0XV1bMl1dKTtyZXR1cm4gZ312YXIgZT13cixyPVNyO3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
P3Qobik6KHQueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHQpOmV9
LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHQpOnJ9LHQpfSxa
by5nZW9tLnBvbHlnb249ZnVuY3Rpb24obil7cmV0dXJuIHNhKG4sWWMpLG59O3ZhciBZYz1aby5n
ZW9tLnBvbHlnb24ucHJvdG90eXBlPVtdO1ljLmFyZWE9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD0t
MSxlPXRoaXMubGVuZ3RoLHI9dGhpc1tlLTFdLHU9MDsrK3Q8ZTspbj1yLHI9dGhpc1t0XSx1Kz1u
WzFdKnJbMF0tblswXSpyWzFdO3JldHVybi41KnV9LFljLmNlbnRyb2lkPWZ1bmN0aW9uKG4pe3Zh
ciB0LGUscj0tMSx1PXRoaXMubGVuZ3RoLGk9MCxvPTAsYT10aGlzW3UtMV07Zm9yKGFyZ3VtZW50
cy5sZW5ndGh8fChuPS0xLyg2KnRoaXMuYXJlYSgpKSk7KytyPHU7KXQ9YSxhPXRoaXNbcl0sZT10
WzBdKmFbMV0tYVswXSp0WzFdLGkrPSh0WzBdK2FbMF0pKmUsbys9KHRbMV0rYVsxXSkqZTtyZXR1
cm5baSpuLG8qbl19LFljLmNsaXA9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGUscix1LGksbyxhPU5y
KG4pLGM9LTEscz10aGlzLmxlbmd0aC1Ocih0aGlzKSxsPXRoaXNbcy0xXTsrK2M8czspe2Zvcih0
PW4uc2xpY2UoKSxuLmxlbmd0aD0wLHU9dGhpc1tjXSxpPXRbKHI9dC5sZW5ndGgtYSktMV0sZT0t
MTsrK2U8cjspbz10W2VdLEFyKG8sbCx1KT8oQXIoaSxsLHUpfHxuLnB1c2goQ3IoaSxvLGwsdSkp
LG4ucHVzaChvKSk6QXIoaSxsLHUpJiZuLnB1c2goQ3IoaSxvLGwsdSkpLGk9bzthJiZuLnB1c2go
blswXSksbD11fXJldHVybiBufTt2YXIgSWMsWmMsVmMsWGMsJGMsQmM9W10sV2M9W107VXIucHJv
dG90eXBlLnByZXBhcmU9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD10aGlzLmVkZ2VzLGU9dC5sZW5n
dGg7ZS0tOyluPXRbZV0uZWRnZSxuLmImJm4uYXx8dC5zcGxpY2UoZSwxKTtyZXR1cm4gdC5zb3J0
KEhyKSx0Lmxlbmd0aH0sV3IucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbigpe3JldHVybiB0aGlz
LmVkZ2UubD09PXRoaXMuc2l0ZT90aGlzLmVkZ2UuYTp0aGlzLmVkZ2UuYn0sZW5kOmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuZWRnZS5sPT09dGhpcy5zaXRlP3RoaXMuZWRnZS5iOnRoaXMuZWRnZS5h
fX0sSnIucHJvdG90eXBlPXtpbnNlcnQ6ZnVuY3Rpb24obix0KXt2YXIgZSxyLHU7aWYobil7aWYo
dC5QPW4sdC5OPW4uTixuLk4mJihuLk4uUD10KSxuLk49dCxuLlIpe2ZvcihuPW4uUjtuLkw7KW49
bi5MO24uTD10fWVsc2Ugbi5SPXQ7ZT1ufWVsc2UgdGhpcy5fPyhuPW51KHRoaXMuXyksdC5QPW51
bGwsdC5OPW4sbi5QPW4uTD10LGU9bik6KHQuUD10Lk49bnVsbCx0aGlzLl89dCxlPW51bGwpO2Zv
cih0Lkw9dC5SPW51bGwsdC5VPWUsdC5DPSEwLG49dDtlJiZlLkM7KXI9ZS5VLGU9PT1yLkw/KHU9
ci5SLHUmJnUuQz8oZS5DPXUuQz0hMSxyLkM9ITAsbj1yKToobj09PWUuUiYmKEtyKHRoaXMsZSks
bj1lLGU9bi5VKSxlLkM9ITEsci5DPSEwLFFyKHRoaXMscikpKToodT1yLkwsdSYmdS5DPyhlLkM9
dS5DPSExLHIuQz0hMCxuPXIpOihuPT09ZS5MJiYoUXIodGhpcyxlKSxuPWUsZT1uLlUpLGUuQz0h
MSxyLkM9ITAsS3IodGhpcyxyKSkpLGU9bi5VO3RoaXMuXy5DPSExfSxyZW1vdmU6ZnVuY3Rpb24o
bil7bi5OJiYobi5OLlA9bi5QKSxuLlAmJihuLlAuTj1uLk4pLG4uTj1uLlA9bnVsbDt2YXIgdCxl
LHIsdT1uLlUsaT1uLkwsbz1uLlI7aWYoZT1pP28/bnUobyk6aTpvLHU/dS5MPT09bj91Lkw9ZTp1
LlI9ZTp0aGlzLl89ZSxpJiZvPyhyPWUuQyxlLkM9bi5DLGUuTD1pLGkuVT1lLGUhPT1vPyh1PWUu
VSxlLlU9bi5VLG49ZS5SLHUuTD1uLGUuUj1vLG8uVT1lKTooZS5VPXUsdT1lLG49ZS5SKSk6KHI9
bi5DLG49ZSksbiYmKG4uVT11KSwhcil7aWYobiYmbi5DKXJldHVybiBuLkM9ITEsdm9pZCAwO2Rv
e2lmKG49PT10aGlzLl8pYnJlYWs7aWYobj09PXUuTCl7aWYodD11LlIsdC5DJiYodC5DPSExLHUu
Qz0hMCxLcih0aGlzLHUpLHQ9dS5SKSx0LkwmJnQuTC5DfHx0LlImJnQuUi5DKXt0LlImJnQuUi5D
fHwodC5MLkM9ITEsdC5DPSEwLFFyKHRoaXMsdCksdD11LlIpLHQuQz11LkMsdS5DPXQuUi5DPSEx
LEtyKHRoaXMsdSksbj10aGlzLl87YnJlYWt9fWVsc2UgaWYodD11LkwsdC5DJiYodC5DPSExLHUu
Qz0hMCxRcih0aGlzLHUpLHQ9dS5MKSx0LkwmJnQuTC5DfHx0LlImJnQuUi5DKXt0LkwmJnQuTC5D
fHwodC5SLkM9ITEsdC5DPSEwLEtyKHRoaXMsdCksdD11LkwpLHQuQz11LkMsdS5DPXQuTC5DPSEx
LFFyKHRoaXMsdSksbj10aGlzLl87YnJlYWt9dC5DPSEwLG49dSx1PXUuVX13aGlsZSghbi5DKTtu
JiYobi5DPSExKX19fSxaby5nZW9tLnZvcm9ub2k9ZnVuY3Rpb24obil7ZnVuY3Rpb24gdChuKXt2
YXIgdD1uZXcgQXJyYXkobi5sZW5ndGgpLHI9YVswXVswXSx1PWFbMF1bMV0saT1hWzFdWzBdLG89
YVsxXVsxXTtyZXR1cm4gdHUoZShuKSxhKS5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGUsYSl7dmFy
IGM9ZS5lZGdlcyxzPWUuc2l0ZSxsPXRbYV09Yy5sZW5ndGg/Yy5tYXAoZnVuY3Rpb24obil7dmFy
IHQ9bi5zdGFydCgpO3JldHVyblt0LngsdC55XX0pOnMueD49ciYmcy54PD1pJiZzLnk+PXUmJnMu
eTw9bz9bW3Isb10sW2ksb10sW2ksdV0sW3IsdV1dOltdO2wucG9pbnQ9blthXX0pLHR9ZnVuY3Rp
b24gZShuKXtyZXR1cm4gbi5tYXAoZnVuY3Rpb24obix0KXtyZXR1cm57eDpNYXRoLnJvdW5kKGko
bix0KS9rYSkqa2EseTpNYXRoLnJvdW5kKG8obix0KS9rYSkqa2EsaTp0fX0pfXZhciByPXdyLHU9
U3IsaT1yLG89dSxhPUpjO3JldHVybiBuP3Qobik6KHQubGlua3M9ZnVuY3Rpb24obil7cmV0dXJu
IHR1KGUobikpLmVkZ2VzLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gbi5sJiZuLnJ9KS5tYXAo
ZnVuY3Rpb24odCl7cmV0dXJue3NvdXJjZTpuW3QubC5pXSx0YXJnZXQ6blt0LnIuaV19fSl9LHQu
dHJpYW5nbGVzPWZ1bmN0aW9uKG4pe3ZhciB0PVtdO3JldHVybiB0dShlKG4pKS5jZWxscy5mb3JF
YWNoKGZ1bmN0aW9uKGUscil7Zm9yKHZhciB1LGksbz1lLnNpdGUsYT1lLmVkZ2VzLnNvcnQoSHIp
LGM9LTEscz1hLmxlbmd0aCxsPWFbcy0xXS5lZGdlLGY9bC5sPT09bz9sLnI6bC5sOysrYzxzOyl1
PWwsaT1mLGw9YVtjXS5lZGdlLGY9bC5sPT09bz9sLnI6bC5sLHI8aS5pJiZyPGYuaSYmcnUobyxp
LGYpPDAmJnQucHVzaChbbltyXSxuW2kuaV0sbltmLmldXSl9KSx0fSx0Lng9ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9YnQocj1uKSx0KTpyfSx0Lnk9ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89YnQodT1uKSx0KTp1fSx0LmNsaXBFeHRlbnQ9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bnVsbD09bj9KYzpuLHQpOmE9PT1K
Yz9udWxsOmF9LHQuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90LmNs
aXBFeHRlbnQobiYmW1swLDBdLG5dKTphPT09SmM/bnVsbDphJiZhWzFdfSx0KX07dmFyIEpjPVtb
LTFlNiwtMWU2XSxbMWU2LDFlNl1dO1pvLmdlb20uZGVsYXVuYXk9ZnVuY3Rpb24obil7cmV0dXJu
IFpvLmdlb20udm9yb25vaSgpLnRyaWFuZ2xlcyhuKX0sWm8uZ2VvbS5xdWFkdHJlZT1mdW5jdGlv
bihuLHQsZSxyLHUpe2Z1bmN0aW9uIGkobil7ZnVuY3Rpb24gaShuLHQsZSxyLHUsaSxvLGEpe2lm
KCFpc05hTihlKSYmIWlzTmFOKHIpKWlmKG4ubGVhZil7dmFyIGM9bi54LGw9bi55O2lmKG51bGwh
PWMpaWYodWEoYy1lKSt1YShsLXIpPC4wMSlzKG4sdCxlLHIsdSxpLG8sYSk7ZWxzZXt2YXIgZj1u
LnBvaW50O24ueD1uLnk9bi5wb2ludD1udWxsLHMobixmLGMsbCx1LGksbyxhKSxzKG4sdCxlLHIs
dSxpLG8sYSl9ZWxzZSBuLng9ZSxuLnk9cixuLnBvaW50PXR9ZWxzZSBzKG4sdCxlLHIsdSxpLG8s
YSl9ZnVuY3Rpb24gcyhuLHQsZSxyLHUsbyxhLGMpe3ZhciBzPS41Kih1K2EpLGw9LjUqKG8rYyks
Zj1lPj1zLGg9cj49bCxnPShoPDwxKStmO24ubGVhZj0hMSxuPW4ubm9kZXNbZ118fChuLm5vZGVz
W2ddPW91KCkpLGY/dT1zOmE9cyxoP289bDpjPWwsaShuLHQsZSxyLHUsbyxhLGMpfXZhciBsLGYs
aCxnLHAsdixkLG0seSx4PWJ0KGEpLE09YnQoYyk7aWYobnVsbCE9dCl2PXQsZD1lLG09cix5PXU7
ZWxzZSBpZihtPXk9LSh2PWQ9MS8wKSxmPVtdLGg9W10scD1uLmxlbmd0aCxvKWZvcihnPTA7cD5n
OysrZylsPW5bZ10sbC54PHYmJih2PWwueCksbC55PGQmJihkPWwueSksbC54Pm0mJihtPWwueCks
bC55PnkmJih5PWwueSksZi5wdXNoKGwueCksaC5wdXNoKGwueSk7ZWxzZSBmb3IoZz0wO3A+Zzsr
K2cpe3ZhciBfPSt4KGw9bltnXSxnKSxiPStNKGwsZyk7dj5fJiYodj1fKSxkPmImJihkPWIpLF8+
bSYmKG09XyksYj55JiYoeT1iKSxmLnB1c2goXyksaC5wdXNoKGIpfXZhciB3PW0tdixTPXktZDt3
PlM/eT1kK3c6bT12K1M7dmFyIGs9b3UoKTtpZihrLmFkZD1mdW5jdGlvbihuKXtpKGssbiwreChu
LCsrZyksK00obixnKSx2LGQsbSx5KX0say52aXNpdD1mdW5jdGlvbihuKXthdShuLGssdixkLG0s
eSl9LGc9LTEsbnVsbD09dCl7Zm9yKDsrK2c8cDspaShrLG5bZ10sZltnXSxoW2ddLHYsZCxtLHkp
Oy0tZ31lbHNlIG4uZm9yRWFjaChrLmFkZCk7cmV0dXJuIGY9aD1uPWw9bnVsbCxrfXZhciBvLGE9
d3IsYz1TcjtyZXR1cm4obz1hcmd1bWVudHMubGVuZ3RoKT8oYT11dSxjPWl1LDM9PT1vJiYodT1l
LHI9dCxlPXQ9MCksaShuKSk6KGkueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oYT1uLGkpOmF9LGkueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1u
LGkpOmN9LGkuZXh0ZW50PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxs
PT1uP3Q9ZT1yPXU9bnVsbDoodD0rblswXVswXSxlPStuWzBdWzFdLHI9K25bMV1bMF0sdT0rblsx
XVsxXSksaSk6bnVsbD09dD9udWxsOltbdCxlXSxbcix1XV19LGkuc2l6ZT1mdW5jdGlvbihuKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09bj90PWU9cj11PW51bGw6KHQ9ZT0wLHI9K25b
MF0sdT0rblsxXSksaSk6bnVsbD09dD9udWxsOltyLXQsdS1lXX0saSl9LFpvLmludGVycG9sYXRl
UmdiPWN1LFpvLmludGVycG9sYXRlT2JqZWN0PXN1LFpvLmludGVycG9sYXRlTnVtYmVyPWx1LFpv
LmludGVycG9sYXRlU3RyaW5nPWZ1O3ZhciBHYz0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/
OltlRV1bLStdP1xkKyk/L2csS2M9bmV3IFJlZ0V4cChHYy5zb3VyY2UsImciKTtaby5pbnRlcnBv
bGF0ZT1odSxaby5pbnRlcnBvbGF0b3JzPVtmdW5jdGlvbihuLHQpe3ZhciBlPXR5cGVvZiB0O3Jl
dHVybigic3RyaW5nIj09PWU/SWEuaGFzKHQpfHwvXigjfHJnYlwofGhzbFwoKS8udGVzdCh0KT9j
dTpmdTp0IGluc3RhbmNlb2YgZXQ/Y3U6QXJyYXkuaXNBcnJheSh0KT9ndToib2JqZWN0Ij09PWUm
JmlzTmFOKHQpP3N1Omx1KShuLHQpfV0sWm8uaW50ZXJwb2xhdGVBcnJheT1ndTt2YXIgUWM9ZnVu
Y3Rpb24oKXtyZXR1cm4gd3R9LG5zPVpvLm1hcCh7bGluZWFyOlFjLHBvbHk6TXUscXVhZDpmdW5j
dGlvbigpe3JldHVybiBtdX0sY3ViaWM6ZnVuY3Rpb24oKXtyZXR1cm4geXV9LHNpbjpmdW5jdGlv
bigpe3JldHVybiBfdX0sZXhwOmZ1bmN0aW9uKCl7cmV0dXJuIGJ1fSxjaXJjbGU6ZnVuY3Rpb24o
KXtyZXR1cm4gd3V9LGVsYXN0aWM6U3UsYmFjazprdSxib3VuY2U6ZnVuY3Rpb24oKXtyZXR1cm4g
RXV9fSksdHM9Wm8ubWFwKHsiaW4iOnd0LG91dDp2dSwiaW4tb3V0IjpkdSwib3V0LWluIjpmdW5j
dGlvbihuKXtyZXR1cm4gZHUodnUobikpfX0pO1pvLmVhc2U9ZnVuY3Rpb24obil7dmFyIHQ9bi5p
bmRleE9mKCItIiksZT10Pj0wP24uc3Vic3RyaW5nKDAsdCk6bixyPXQ+PTA/bi5zdWJzdHJpbmco
dCsxKToiaW4iO3JldHVybiBlPW5zLmdldChlKXx8UWMscj10cy5nZXQocil8fHd0LHB1KHIoZS5h
cHBseShudWxsLFZvLmNhbGwoYXJndW1lbnRzLDEpKSkpfSxaby5pbnRlcnBvbGF0ZUhjbD1BdSxa
by5pbnRlcnBvbGF0ZUhzbD1DdSxaby5pbnRlcnBvbGF0ZUxhYj1OdSxaby5pbnRlcnBvbGF0ZVJv
dW5kPXp1LFpvLnRyYW5zZm9ybT1mdW5jdGlvbihuKXt2YXIgdD0kby5jcmVhdGVFbGVtZW50TlMo
Wm8ubnMucHJlZml4LnN2ZywiZyIpO3JldHVybihaby50cmFuc2Zvcm09ZnVuY3Rpb24obil7aWYo
bnVsbCE9bil7dC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsbik7dmFyIGU9dC50cmFuc2Zvcm0u
YmFzZVZhbC5jb25zb2xpZGF0ZSgpfXJldHVybiBuZXcgTHUoZT9lLm1hdHJpeDplcyl9KShuKX0s
THUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMu
dHJhbnNsYXRlKyIpcm90YXRlKCIrdGhpcy5yb3RhdGUrIilza2V3WCgiK3RoaXMuc2tldysiKXNj
YWxlKCIrdGhpcy5zY2FsZSsiKSJ9O3ZhciBlcz17YToxLGI6MCxjOjAsZDoxLGU6MCxmOjB9O1pv
LmludGVycG9sYXRlVHJhbnNmb3JtPUR1LFpvLmxheW91dD17fSxaby5sYXlvdXQuYnVuZGxlPWZ1
bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1bXSxlPS0xLHI9bi5sZW5ndGg7
KytlPHI7KXQucHVzaChqdShuW2VdKSk7cmV0dXJuIHR9fSxaby5sYXlvdXQuY2hvcmQ9ZnVuY3Rp
b24oKXtmdW5jdGlvbiBuKCl7dmFyIG4scyxmLGgsZyxwPXt9LHY9W10sZD1aby5yYW5nZShpKSxt
PVtdO2ZvcihlPVtdLHI9W10sbj0wLGg9LTE7KytoPGk7KXtmb3Iocz0wLGc9LTE7KytnPGk7KXMr
PXVbaF1bZ107di5wdXNoKHMpLG0ucHVzaChaby5yYW5nZShpKSksbis9c31mb3IobyYmZC5zb3J0
KGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG8odltuXSx2W3RdKX0pLGEmJm0uZm9yRWFjaChmdW5jdGlv
bihuLHQpe24uc29ydChmdW5jdGlvbihuLGUpe3JldHVybiBhKHVbdF1bbl0sdVt0XVtlXSl9KX0p
LG49KHdhLWwqaSkvbixzPTAsaD0tMTsrK2g8aTspe2ZvcihmPXMsZz0tMTsrK2c8aTspe3ZhciB5
PWRbaF0seD1tW3ldW2ddLE09dVt5XVt4XSxfPXMsYj1zKz1NKm47cFt5KyItIit4XT17aW5kZXg6
eSxzdWJpbmRleDp4LHN0YXJ0QW5nbGU6XyxlbmRBbmdsZTpiLHZhbHVlOk19fXJbeV09e2luZGV4
Onksc3RhcnRBbmdsZTpmLGVuZEFuZ2xlOnMsdmFsdWU6KHMtZikvbn0scys9bH1mb3IoaD0tMTsr
K2g8aTspZm9yKGc9aC0xOysrZzxpOyl7dmFyIHc9cFtoKyItIitnXSxTPXBbZysiLSIraF07KHcu
dmFsdWV8fFMudmFsdWUpJiZlLnB1c2gody52YWx1ZTxTLnZhbHVlP3tzb3VyY2U6Uyx0YXJnZXQ6
d306e3NvdXJjZTp3LHRhcmdldDpTfSl9YyYmdCgpfWZ1bmN0aW9uIHQoKXtlLnNvcnQoZnVuY3Rp
b24obix0KXtyZXR1cm4gYygobi5zb3VyY2UudmFsdWUrbi50YXJnZXQudmFsdWUpLzIsKHQuc291
cmNlLnZhbHVlK3QudGFyZ2V0LnZhbHVlKS8yKX0pfXZhciBlLHIsdSxpLG8sYSxjLHM9e30sbD0w
O3JldHVybiBzLm1hdHJpeD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0o
dT1uKSYmdS5sZW5ndGgsZT1yPW51bGwscyk6dX0scy5wYWRkaW5nPWZ1bmN0aW9uKG4pe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhsPW4sZT1yPW51bGwscyk6bH0scy5zb3J0R3JvdXBzPWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPW4sZT1yPW51bGwscyk6b30scy5zb3J0
U3ViZ3JvdXBzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPW4sZT1udWxs
LHMpOmF9LHMuc29ydENob3Jkcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Yz1uLGUmJnQoKSxzKTpjfSxzLmNob3Jkcz1mdW5jdGlvbigpe3JldHVybiBlfHxuKCksZX0scy5n
cm91cHM9ZnVuY3Rpb24oKXtyZXR1cm4gcnx8bigpLHJ9LHN9LFpvLmxheW91dC5mb3JjZT1mdW5j
dGlvbigpe2Z1bmN0aW9uIG4obil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLHUpe2lmKHQucG9pbnQh
PT1uKXt2YXIgaT10LmN4LW4ueCxvPXQuY3ktbi55LGE9dS1lLGM9aSppK28qbztpZihjPmEqYS9k
KXtpZihwPmMpe3ZhciBzPXQuY2hhcmdlL2M7bi5weC09aSpzLG4ucHktPW8qc31yZXR1cm4hMH1p
Zih0LnBvaW50JiZjJiZwPmMpe3ZhciBzPXQucG9pbnRDaGFyZ2UvYztuLnB4LT1pKnMsbi5weS09
bypzfX1yZXR1cm4hdC5jaGFyZ2V9fWZ1bmN0aW9uIHQobil7bi5weD1aby5ldmVudC54LG4ucHk9
Wm8uZXZlbnQueSxhLnJlc3VtZSgpfXZhciBlLHIsdSxpLG8sYT17fSxjPVpvLmRpc3BhdGNoKCJz
dGFydCIsInRpY2siLCJlbmQiKSxzPVsxLDFdLGw9LjksZj1ycyxoPXVzLGc9LTMwLHA9aXMsdj0u
MSxkPS42NCxtPVtdLHk9W107cmV0dXJuIGEudGljaz1mdW5jdGlvbigpe2lmKChyKj0uOTkpPC4w
MDUpcmV0dXJuIGMuZW5kKHt0eXBlOiJlbmQiLGFscGhhOnI9MH0pLCEwO3ZhciB0LGUsYSxmLGgs
cCxkLHgsTSxfPW0ubGVuZ3RoLGI9eS5sZW5ndGg7Zm9yKGU9MDtiPmU7KytlKWE9eVtlXSxmPWEu
c291cmNlLGg9YS50YXJnZXQseD1oLngtZi54LE09aC55LWYueSwocD14KngrTSpNKSYmKHA9cipp
W2VdKigocD1NYXRoLnNxcnQocCkpLXVbZV0pL3AseCo9cCxNKj1wLGgueC09eCooZD1mLndlaWdo
dC8oaC53ZWlnaHQrZi53ZWlnaHQpKSxoLnktPU0qZCxmLngrPXgqKGQ9MS1kKSxmLnkrPU0qZCk7
aWYoKGQ9cip2KSYmKHg9c1swXS8yLE09c1sxXS8yLGU9LTEsZCkpZm9yKDsrK2U8XzspYT1tW2Vd
LGEueCs9KHgtYS54KSpkLGEueSs9KE0tYS55KSpkO2lmKGcpZm9yKFZ1KHQ9Wm8uZ2VvbS5xdWFk
dHJlZShtKSxyLG8pLGU9LTE7KytlPF87KShhPW1bZV0pLmZpeGVkfHx0LnZpc2l0KG4oYSkpO2Zv
cihlPS0xOysrZTxfOylhPW1bZV0sYS5maXhlZD8oYS54PWEucHgsYS55PWEucHkpOihhLngtPShh
LnB4LShhLnB4PWEueCkpKmwsYS55LT0oYS5weS0oYS5weT1hLnkpKSpsKTtjLnRpY2soe3R5cGU6
InRpY2siLGFscGhhOnJ9KX0sYS5ub2Rlcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8obT1uLGEpOm19LGEubGlua3M9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHk9bixhKTp5fSxhLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHM9bixhKTpzfSxhLmxpbmtEaXN0YW5jZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oZj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOituLGEpOmZ9LGEuZGlzdGFuY2U9YS5saW5r
RGlzdGFuY2UsYS5saW5rU3RyZW5ndGg9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGg9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjorbixhKTpofSxhLmZyaWN0aW9uPWZ1bmN0aW9u
KG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPStuLGEpOmx9LGEuY2hhcmdlPWZ1bmN0aW9u
KG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246K24s
YSk6Z30sYS5jaGFyZ2VEaXN0YW5jZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8ocD1uKm4sYSk6TWF0aC5zcXJ0KHApfSxhLmdyYXZpdHk9ZnVuY3Rpb24obil7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHY9K24sYSk6dn0sYS50aGV0YT1mdW5jdGlvbihuKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oZD1uKm4sYSk6TWF0aC5zcXJ0KGQpfSxhLmFscGhhPWZ1bmN0aW9uKG4p
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPStuLHI/cj1uPjA/bjowOm4+MCYmKGMuc3RhcnQo
e3R5cGU6InN0YXJ0IixhbHBoYTpyPW59KSxaby50aW1lcihhLnRpY2spKSxhKTpyfSxhLnN0YXJ0
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHIpe2lmKCFlKXtmb3IoZT1uZXcgQXJyYXkoYyksYT0w
O2M+YTsrK2EpZVthXT1bXTtmb3IoYT0wO3M+YTsrK2Epe3ZhciB1PXlbYV07ZVt1LnNvdXJjZS5p
bmRleF0ucHVzaCh1LnRhcmdldCksZVt1LnRhcmdldC5pbmRleF0ucHVzaCh1LnNvdXJjZSl9fWZv
cih2YXIgaSxvPWVbdF0sYT0tMSxzPW8ubGVuZ3RoOysrYTxzOylpZighaXNOYU4oaT1vW2FdW25d
KSlyZXR1cm4gaTtyZXR1cm4gTWF0aC5yYW5kb20oKSpyfXZhciB0LGUscixjPW0ubGVuZ3RoLGw9
eS5sZW5ndGgscD1zWzBdLHY9c1sxXTtmb3IodD0wO2M+dDsrK3QpKHI9bVt0XSkuaW5kZXg9dCxy
LndlaWdodD0wO2Zvcih0PTA7bD50OysrdClyPXlbdF0sIm51bWJlciI9PXR5cGVvZiByLnNvdXJj
ZSYmKHIuc291cmNlPW1bci5zb3VyY2VdKSwibnVtYmVyIj09dHlwZW9mIHIudGFyZ2V0JiYoci50
YXJnZXQ9bVtyLnRhcmdldF0pLCsrci5zb3VyY2Uud2VpZ2h0LCsrci50YXJnZXQud2VpZ2h0O2Zv
cih0PTA7Yz50OysrdClyPW1bdF0saXNOYU4oci54KSYmKHIueD1uKCJ4IixwKSksaXNOYU4oci55
KSYmKHIueT1uKCJ5Iix2KSksaXNOYU4oci5weCkmJihyLnB4PXIueCksaXNOYU4oci5weSkmJihy
LnB5PXIueSk7aWYodT1bXSwiZnVuY3Rpb24iPT10eXBlb2YgZilmb3IodD0wO2w+dDsrK3QpdVt0
XT0rZi5jYWxsKHRoaXMseVt0XSx0KTtlbHNlIGZvcih0PTA7bD50OysrdCl1W3RdPWY7aWYoaT1b
XSwiZnVuY3Rpb24iPT10eXBlb2YgaClmb3IodD0wO2w+dDsrK3QpaVt0XT0raC5jYWxsKHRoaXMs
eVt0XSx0KTtlbHNlIGZvcih0PTA7bD50OysrdClpW3RdPWg7aWYobz1bXSwiZnVuY3Rpb24iPT10
eXBlb2YgZylmb3IodD0wO2M+dDsrK3Qpb1t0XT0rZy5jYWxsKHRoaXMsbVt0XSx0KTtlbHNlIGZv
cih0PTA7Yz50OysrdClvW3RdPWc7cmV0dXJuIGEucmVzdW1lKCl9LGEucmVzdW1lPWZ1bmN0aW9u
KCl7cmV0dXJuIGEuYWxwaGEoLjEpfSxhLnN0b3A9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hbHBoYSgw
KX0sYS5kcmFnPWZ1bmN0aW9uKCl7cmV0dXJuIGV8fChlPVpvLmJlaGF2aW9yLmRyYWcoKS5vcmln
aW4od3QpLm9uKCJkcmFnc3RhcnQuZm9yY2UiLE91KS5vbigiZHJhZy5mb3JjZSIsdCkub24oImRy
YWdlbmQuZm9yY2UiLFl1KSksYXJndW1lbnRzLmxlbmd0aD8odGhpcy5vbigibW91c2VvdmVyLmZv
cmNlIixJdSkub24oIm1vdXNlb3V0LmZvcmNlIixadSkuY2FsbChlKSx2b2lkIDApOmV9LFpvLnJl
YmluZChhLGMsIm9uIil9O3ZhciBycz0yMCx1cz0xLGlzPTEvMDtaby5sYXlvdXQuaGllcmFyY2h5
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih1KXt2YXIgaSxvPVt1XSxhPVtdO2Zvcih1LmRlcHRoPTA7
bnVsbCE9KGk9by5wb3AoKSk7KWlmKGEucHVzaChpKSwocz1lLmNhbGwobixpLGkuZGVwdGgpKSYm
KGM9cy5sZW5ndGgpKXtmb3IodmFyIGMscyxsOy0tYz49MDspby5wdXNoKGw9c1tjXSksbC5wYXJl
bnQ9aSxsLmRlcHRoPWkuZGVwdGgrMTtyJiYoaS52YWx1ZT0wKSxpLmNoaWxkcmVuPXN9ZWxzZSBy
JiYoaS52YWx1ZT0rci5jYWxsKG4saSxpLmRlcHRoKXx8MCksZGVsZXRlIGkuY2hpbGRyZW47cmV0
dXJuIEJ1KHUsZnVuY3Rpb24obil7dmFyIGUsdTt0JiYoZT1uLmNoaWxkcmVuKSYmZS5zb3J0KHQp
LHImJih1PW4ucGFyZW50KSYmKHUudmFsdWUrPW4udmFsdWUpfSksYX12YXIgdD1HdSxlPVd1LHI9
SnU7cmV0dXJuIG4uc29ydD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1l
LG4pOnR9LG4uY2hpbGRyZW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9
dCxuKTplfSxuLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQs
bik6cn0sbi5yZXZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiByJiYoJHUodCxmdW5jdGlvbihuKXtu
LmNoaWxkcmVuJiYobi52YWx1ZT0wKX0pLEJ1KHQsZnVuY3Rpb24odCl7dmFyIGU7dC5jaGlsZHJl
bnx8KHQudmFsdWU9K3IuY2FsbChuLHQsdC5kZXB0aCl8fDApLChlPXQucGFyZW50KSYmKGUudmFs
dWUrPXQudmFsdWUpfSkpLHR9LG59LFpvLmxheW91dC5wYXJ0aXRpb249ZnVuY3Rpb24oKXtmdW5j
dGlvbiBuKHQsZSxyLHUpe3ZhciBpPXQuY2hpbGRyZW47aWYodC54PWUsdC55PXQuZGVwdGgqdSx0
LmR4PXIsdC5keT11LGkmJihvPWkubGVuZ3RoKSl7dmFyIG8sYSxjLHM9LTE7Zm9yKHI9dC52YWx1
ZT9yL3QudmFsdWU6MDsrK3M8bzspbihhPWlbc10sZSxjPWEudmFsdWUqcix1KSxlKz1jfX1mdW5j
dGlvbiB0KG4pe3ZhciBlPW4uY2hpbGRyZW4scj0wO2lmKGUmJih1PWUubGVuZ3RoKSlmb3IodmFy
IHUsaT0tMTsrK2k8dTspcj1NYXRoLm1heChyLHQoZVtpXSkpO3JldHVybiAxK3J9ZnVuY3Rpb24g
ZShlLGkpe3ZhciBvPXIuY2FsbCh0aGlzLGUsaSk7cmV0dXJuIG4ob1swXSwwLHVbMF0sdVsxXS90
KG9bMF0pKSxvfXZhciByPVpvLmxheW91dC5oaWVyYXJjaHkoKSx1PVsxLDFdO3JldHVybiBlLnNp
emU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bixlKTp1fSxYdShlLHIp
fSxaby5sYXlvdXQucGllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihpKXt2YXIgbz1pLm1hcChmdW5j
dGlvbihlLHIpe3JldHVybit0LmNhbGwobixlLHIpfSksYT0rKCJmdW5jdGlvbiI9PXR5cGVvZiBy
P3IuYXBwbHkodGhpcyxhcmd1bWVudHMpOnIpLGM9KCgiZnVuY3Rpb24iPT10eXBlb2YgdT91LmFw
cGx5KHRoaXMsYXJndW1lbnRzKTp1KS1hKS9aby5zdW0obykscz1aby5yYW5nZShpLmxlbmd0aCk7
bnVsbCE9ZSYmcy5zb3J0KGU9PT1vcz9mdW5jdGlvbihuLHQpe3JldHVybiBvW3RdLW9bbl19OmZ1
bmN0aW9uKG4sdCl7cmV0dXJuIGUoaVtuXSxpW3RdKX0pO3ZhciBsPVtdO3JldHVybiBzLmZvckVh
Y2goZnVuY3Rpb24obil7dmFyIHQ7bFtuXT17ZGF0YTppW25dLHZhbHVlOnQ9b1tuXSxzdGFydEFu
Z2xlOmEsZW5kQW5nbGU6YSs9dCpjfX0pLGx9dmFyIHQ9TnVtYmVyLGU9b3Mscj0wLHU9d2E7cmV0
dXJuIG4udmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0
fSxuLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxu
LnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxuKTpy
fSxuLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsbik6
dX0sbn07dmFyIG9zPXt9O1pvLmxheW91dC5zdGFjaz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oYSxj
KXt2YXIgcz1hLm1hcChmdW5jdGlvbihlLHIpe3JldHVybiB0LmNhbGwobixlLHIpfSksbD1zLm1h
cChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm5baS5jYWxsKG4s
dCxlKSxvLmNhbGwobix0LGUpXX0pfSksZj1lLmNhbGwobixsLGMpO3M9Wm8ucGVybXV0ZShzLGYp
LGw9Wm8ucGVybXV0ZShsLGYpO3ZhciBoLGcscCx2PXIuY2FsbChuLGwsYyksZD1zLmxlbmd0aCxt
PXNbMF0ubGVuZ3RoO2ZvcihnPTA7bT5nOysrZylmb3IodS5jYWxsKG4sc1swXVtnXSxwPXZbZ10s
bFswXVtnXVsxXSksaD0xO2Q+aDsrK2gpdS5jYWxsKG4sc1toXVtnXSxwKz1sW2gtMV1bZ11bMV0s
bFtoXVtnXVsxXSk7cmV0dXJuIGF9dmFyIHQ9d3QsZT1laSxyPXJpLHU9dGksaT1RdSxvPW5pO3Jl
dHVybiBuLnZhbHVlcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLG4p
OnR9LG4ub3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0
aW9uIj09dHlwZW9mIHQ/dDphcy5nZXQodCl8fGVpLG4pOmV9LG4ub2Zmc2V0PWZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Y3MuZ2V0
KHQpfHxyaSxuKTpyfSxuLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9
dCxuKTppfSxuLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCxuKTpv
fSxuLm91dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LG4pOnV9LG59
O3ZhciBhcz1aby5tYXAoeyJpbnNpZGUtb3V0IjpmdW5jdGlvbihuKXt2YXIgdCxlLHI9bi5sZW5n
dGgsdT1uLm1hcCh1aSksaT1uLm1hcChpaSksbz1aby5yYW5nZShyKS5zb3J0KGZ1bmN0aW9uKG4s
dCl7cmV0dXJuIHVbbl0tdVt0XX0pLGE9MCxjPTAscz1bXSxsPVtdO2Zvcih0PTA7cj50OysrdCll
PW9bdF0sYz5hPyhhKz1pW2VdLHMucHVzaChlKSk6KGMrPWlbZV0sbC5wdXNoKGUpKTtyZXR1cm4g
bC5yZXZlcnNlKCkuY29uY2F0KHMpfSxyZXZlcnNlOmZ1bmN0aW9uKG4pe3JldHVybiBaby5yYW5n
ZShuLmxlbmd0aCkucmV2ZXJzZSgpfSwiZGVmYXVsdCI6ZWl9KSxjcz1aby5tYXAoe3NpbGhvdWV0
dGU6ZnVuY3Rpb24obil7dmFyIHQsZSxyLHU9bi5sZW5ndGgsaT1uWzBdLmxlbmd0aCxvPVtdLGE9
MCxjPVtdO2ZvcihlPTA7aT5lOysrZSl7Zm9yKHQ9MCxyPTA7dT50O3QrKylyKz1uW3RdW2VdWzFd
O3I+YSYmKGE9ciksby5wdXNoKHIpfWZvcihlPTA7aT5lOysrZSljW2VdPShhLW9bZV0pLzI7cmV0
dXJuIGN9LHdpZ2dsZTpmdW5jdGlvbihuKXt2YXIgdCxlLHIsdSxpLG8sYSxjLHMsbD1uLmxlbmd0
aCxmPW5bMF0saD1mLmxlbmd0aCxnPVtdO2ZvcihnWzBdPWM9cz0wLGU9MTtoPmU7KytlKXtmb3Io
dD0wLHU9MDtsPnQ7Kyt0KXUrPW5bdF1bZV1bMV07Zm9yKHQ9MCxpPTAsYT1mW2VdWzBdLWZbZS0x
XVswXTtsPnQ7Kyt0KXtmb3Iocj0wLG89KG5bdF1bZV1bMV0tblt0XVtlLTFdWzFdKS8oMiphKTt0
PnI7KytyKW8rPShuW3JdW2VdWzFdLW5bcl1bZS0xXVsxXSkvYTtpKz1vKm5bdF1bZV1bMV19Z1tl
XT1jLT11P2kvdSphOjAscz5jJiYocz1jKX1mb3IoZT0wO2g+ZTsrK2UpZ1tlXS09cztyZXR1cm4g
Z30sZXhwYW5kOmZ1bmN0aW9uKG4pe3ZhciB0LGUscix1PW4ubGVuZ3RoLGk9blswXS5sZW5ndGgs
bz0xL3UsYT1bXTtmb3IoZT0wO2k+ZTsrK2Upe2Zvcih0PTAscj0wO3U+dDt0Kyspcis9blt0XVtl
XVsxXTtpZihyKWZvcih0PTA7dT50O3QrKyluW3RdW2VdWzFdLz1yO2Vsc2UgZm9yKHQ9MDt1PnQ7
dCsrKW5bdF1bZV1bMV09b31mb3IoZT0wO2k+ZTsrK2UpYVtlXT0wO3JldHVybiBhfSx6ZXJvOnJp
fSk7Wm8ubGF5b3V0Lmhpc3RvZ3JhbT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixpKXtmb3IodmFy
IG8sYSxjPVtdLHM9bi5tYXAoZSx0aGlzKSxsPXIuY2FsbCh0aGlzLHMsaSksZj11LmNhbGwodGhp
cyxsLHMsaSksaT0tMSxoPXMubGVuZ3RoLGc9Zi5sZW5ndGgtMSxwPXQ/MToxL2g7KytpPGc7KW89
Y1tpXT1bXSxvLmR4PWZbaSsxXS0oby54PWZbaV0pLG8ueT0wO2lmKGc+MClmb3IoaT0tMTsrK2k8
aDspYT1zW2ldLGE+PWxbMF0mJmE8PWxbMV0mJihvPWNbWm8uYmlzZWN0KGYsYSwxLGcpLTFdLG8u
eSs9cCxvLnB1c2gobltpXSkpO3JldHVybiBjfXZhciB0PSEwLGU9TnVtYmVyLHI9c2ksdT1haTty
ZXR1cm4gbi52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4p
OmV9LG4ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YnQodCks
bik6cn0sbi5iaW5zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJudW1i
ZXIiPT10eXBlb2YgdD9mdW5jdGlvbihuKXtyZXR1cm4gY2kobix0KX06YnQodCksbik6dX0sbi5m
cmVxdWVuY3k9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ISFlLG4pOnR9
LG59LFpvLmxheW91dC5wYWNrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLGkpe3ZhciBvPWUuY2Fs
bCh0aGlzLG4saSksYT1vWzBdLGM9dVswXSxzPXVbMV0sbD1udWxsPT10P01hdGguc3FydDoiZnVu
Y3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7cmV0dXJuIHR9O2lmKGEueD1hLnk9MCxCdShh
LGZ1bmN0aW9uKG4pe24ucj0rbChuLnZhbHVlKX0pLEJ1KGEscGkpLHIpe3ZhciBmPXIqKHQ/MTpN
YXRoLm1heCgyKmEuci9jLDIqYS5yL3MpKS8yO0J1KGEsZnVuY3Rpb24obil7bi5yKz1mfSksQnUo
YSxwaSksQnUoYSxmdW5jdGlvbihuKXtuLnItPWZ9KX1yZXR1cm4gbWkoYSxjLzIscy8yLHQ/MTox
L01hdGgubWF4KDIqYS5yL2MsMiphLnIvcykpLG99dmFyIHQsZT1aby5sYXlvdXQuaGllcmFyY2h5
KCkuc29ydChsaSkscj0wLHU9WzEsMV07cmV0dXJuIG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odT10LG4pOnV9LG4ucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh0PW51bGw9PWV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6K2Usbik6
dH0sbi5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LG4p
OnJ9LFh1KG4sZSl9LFpvLmxheW91dC50cmVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHUpe3Zh
ciBsPW8uY2FsbCh0aGlzLG4sdSksZj1sWzBdLGg9dChmKTtpZihCdShoLGUpLGgucGFyZW50Lm09
LWgueiwkdShoLHIpLHMpJHUoZixpKTtlbHNle3ZhciBnPWYscD1mLHY9ZjskdShmLGZ1bmN0aW9u
KG4pe24ueDxnLngmJihnPW4pLG4ueD5wLngmJihwPW4pLG4uZGVwdGg+di5kZXB0aCYmKHY9bil9
KTt2YXIgZD1hKGcscCkvMi1nLngsbT1jWzBdLyhwLngrYShwLGcpLzIrZCkseT1jWzFdLyh2LmRl
cHRofHwxKTskdShmLGZ1bmN0aW9uKG4pe24ueD0obi54K2QpKm0sbi55PW4uZGVwdGgqeX0pfXJl
dHVybiBsfWZ1bmN0aW9uIHQobil7Zm9yKHZhciB0LGU9e0E6bnVsbCxjaGlsZHJlbjpbbl19LHI9
W2VdO251bGwhPSh0PXIucG9wKCkpOylmb3IodmFyIHUsaT10LmNoaWxkcmVuLG89MCxhPWkubGVu
Z3RoO2E+bzsrK28pci5wdXNoKChpW29dPXU9e186aVtvXSxwYXJlbnQ6dCxjaGlsZHJlbjoodT1p
W29dLmNoaWxkcmVuKSYmdS5zbGljZSgpfHxbXSxBOm51bGwsYTpudWxsLHo6MCxtOjAsYzowLHM6
MCx0Om51bGwsaTpvfSkuYT11KTtyZXR1cm4gZS5jaGlsZHJlblswXX1mdW5jdGlvbiBlKG4pe3Zh
ciB0PW4uY2hpbGRyZW4sZT1uLnBhcmVudC5jaGlsZHJlbixyPW4uaT9lW24uaS0xXTpudWxsO2lm
KHQubGVuZ3RoKXt3aShuKTt2YXIgaT0odFswXS56K3RbdC5sZW5ndGgtMV0ueikvMjtyPyhuLno9
ci56K2Eobi5fLHIuXyksbi5tPW4uei1pKTpuLno9aX1lbHNlIHImJihuLno9ci56K2Eobi5fLHIu
XykpO24ucGFyZW50LkE9dShuLHIsbi5wYXJlbnQuQXx8ZVswXSl9ZnVuY3Rpb24gcihuKXtuLl8u
eD1uLnorbi5wYXJlbnQubSxuLm0rPW4ucGFyZW50Lm19ZnVuY3Rpb24gdShuLHQsZSl7aWYodCl7
Zm9yKHZhciByLHU9bixpPW4sbz10LGM9dS5wYXJlbnQuY2hpbGRyZW5bMF0scz11Lm0sbD1pLm0s
Zj1vLm0saD1jLm07bz1faShvKSx1PU1pKHUpLG8mJnU7KWM9TWkoYyksaT1faShpKSxpLmE9bixy
PW8ueitmLXUuei1zK2Eoby5fLHUuXykscj4wJiYoYmkoU2kobyxuLGUpLG4scikscys9cixsKz1y
KSxmKz1vLm0scys9dS5tLGgrPWMubSxsKz1pLm07byYmIV9pKGkpJiYoaS50PW8saS5tKz1mLWwp
LHUmJiFNaShjKSYmKGMudD11LGMubSs9cy1oLGU9bil9cmV0dXJuIGV9ZnVuY3Rpb24gaShuKXtu
LngqPWNbMF0sbi55PW4uZGVwdGgqY1sxXX12YXIgbz1aby5sYXlvdXQuaGllcmFyY2h5KCkuc29y
dChudWxsKS52YWx1ZShudWxsKSxhPXhpLGM9WzEsMV0scz1udWxsO3JldHVybiBuLnNlcGFyYXRp
b249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxuKTphfSxuLnNpemU9
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bnVsbD09KGM9dCk/aTpudWxs
LG4pOnM/bnVsbDpjfSxuLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhzPW51bGw9PShjPXQpP251bGw6aSxuKTpzP2M6bnVsbH0sWHUobixvKX0sWm8ubGF5b3V0
LmNsdXN0ZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4saSl7dmFyIG8sYT10LmNhbGwodGhpcyxu
LGkpLGM9YVswXSxzPTA7QnUoYyxmdW5jdGlvbihuKXt2YXIgdD1uLmNoaWxkcmVuO3QmJnQubGVu
Z3RoPyhuLng9RWkodCksbi55PWtpKHQpKToobi54PW8/cys9ZShuLG8pOjAsbi55PTAsbz1uKX0p
O3ZhciBsPUFpKGMpLGY9Q2koYyksaD1sLngtZShsLGYpLzIsZz1mLngrZShmLGwpLzI7cmV0dXJu
IEJ1KGMsdT9mdW5jdGlvbihuKXtuLng9KG4ueC1jLngpKnJbMF0sbi55PShjLnktbi55KSpyWzFd
fTpmdW5jdGlvbihuKXtuLng9KG4ueC1oKS8oZy1oKSpyWzBdLG4ueT0oMS0oYy55P24ueS9jLnk6
MSkpKnJbMV19KSxhfXZhciB0PVpvLmxheW91dC5oaWVyYXJjaHkoKS5zb3J0KG51bGwpLnZhbHVl
KG51bGwpLGU9eGkscj1bMSwxXSx1PSExO3JldHVybiBuLnNlcGFyYXRpb249ZnVuY3Rpb24odCl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLnNpemU9ZnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bnVsbD09KHI9dCksbik6dT9udWxsOnJ9LG4ubm9kZVNp
emU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bnVsbCE9KHI9dCksbik6
dT9yOm51bGx9LFh1KG4sdCl9LFpvLmxheW91dC50cmVlbWFwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
bihuLHQpe2Zvcih2YXIgZSxyLHU9LTEsaT1uLmxlbmd0aDsrK3U8aTspcj0oZT1uW3VdKS52YWx1
ZSooMD50PzA6dCksZS5hcmVhPWlzTmFOKHIpfHwwPj1yPzA6cn1mdW5jdGlvbiB0KGUpe3ZhciBp
PWUuY2hpbGRyZW47aWYoaSYmaS5sZW5ndGgpe3ZhciBvLGEsYyxzPWYoZSksbD1bXSxoPWkuc2xp
Y2UoKSxwPTEvMCx2PSJzbGljZSI9PT1nP3MuZHg6ImRpY2UiPT09Zz9zLmR5OiJzbGljZS1kaWNl
Ij09PWc/MSZlLmRlcHRoP3MuZHk6cy5keDpNYXRoLm1pbihzLmR4LHMuZHkpO2ZvcihuKGgscy5k
eCpzLmR5L2UudmFsdWUpLGwuYXJlYT0wOyhjPWgubGVuZ3RoKT4wOylsLnB1c2gobz1oW2MtMV0p
LGwuYXJlYSs9by5hcmVhLCJzcXVhcmlmeSIhPT1nfHwoYT1yKGwsdikpPD1wPyhoLnBvcCgpLHA9
YSk6KGwuYXJlYS09bC5wb3AoKS5hcmVhLHUobCx2LHMsITEpLHY9TWF0aC5taW4ocy5keCxzLmR5
KSxsLmxlbmd0aD1sLmFyZWE9MCxwPTEvMCk7bC5sZW5ndGgmJih1KGwsdixzLCEwKSxsLmxlbmd0
aD1sLmFyZWE9MCksaS5mb3JFYWNoKHQpfX1mdW5jdGlvbiBlKHQpe3ZhciByPXQuY2hpbGRyZW47
aWYociYmci5sZW5ndGgpe3ZhciBpLG89Zih0KSxhPXIuc2xpY2UoKSxjPVtdO2ZvcihuKGEsby5k
eCpvLmR5L3QudmFsdWUpLGMuYXJlYT0wO2k9YS5wb3AoKTspYy5wdXNoKGkpLGMuYXJlYSs9aS5h
cmVhLG51bGwhPWkueiYmKHUoYyxpLno/by5keDpvLmR5LG8sIWEubGVuZ3RoKSxjLmxlbmd0aD1j
LmFyZWE9MCk7ci5mb3JFYWNoKGUpfX1mdW5jdGlvbiByKG4sdCl7Zm9yKHZhciBlLHI9bi5hcmVh
LHU9MCxpPTEvMCxvPS0xLGE9bi5sZW5ndGg7KytvPGE7KShlPW5bb10uYXJlYSkmJihpPmUmJihp
PWUpLGU+dSYmKHU9ZSkpO3JldHVybiByKj1yLHQqPXQscj9NYXRoLm1heCh0KnUqcC9yLHIvKHQq
aSpwKSk6MS8wfWZ1bmN0aW9uIHUobix0LGUscil7dmFyIHUsaT0tMSxvPW4ubGVuZ3RoLGE9ZS54
LHM9ZS55LGw9dD9jKG4uYXJlYS90KTowO2lmKHQ9PWUuZHgpe2Zvcigocnx8bD5lLmR5KSYmKGw9
ZS5keSk7KytpPG87KXU9bltpXSx1Lng9YSx1Lnk9cyx1LmR5PWwsYSs9dS5keD1NYXRoLm1pbihl
LngrZS5keC1hLGw/Yyh1LmFyZWEvbCk6MCk7dS56PSEwLHUuZHgrPWUueCtlLmR4LWEsZS55Kz1s
LGUuZHktPWx9ZWxzZXtmb3IoKHJ8fGw+ZS5keCkmJihsPWUuZHgpOysraTxvOyl1PW5baV0sdS54
PWEsdS55PXMsdS5keD1sLHMrPXUuZHk9TWF0aC5taW4oZS55K2UuZHktcyxsP2ModS5hcmVhL2wp
OjApO3Uuej0hMSx1LmR5Kz1lLnkrZS5keS1zLGUueCs9bCxlLmR4LT1sfX1mdW5jdGlvbiBpKHIp
e3ZhciB1PW98fGEociksaT11WzBdO3JldHVybiBpLng9MCxpLnk9MCxpLmR4PXNbMF0saS5keT1z
WzFdLG8mJmEucmV2YWx1ZShpKSxuKFtpXSxpLmR4KmkuZHkvaS52YWx1ZSksKG8/ZTp0KShpKSxo
JiYobz11KSx1fXZhciBvLGE9Wm8ubGF5b3V0LmhpZXJhcmNoeSgpLGM9TWF0aC5yb3VuZCxzPVsx
LDFdLGw9bnVsbCxmPU5pLGg9ITEsZz0ic3F1YXJpZnkiLHA9LjUqKDErTWF0aC5zcXJ0KDUpKTty
ZXR1cm4gaS5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPW4saSk6
c30saS5wYWRkaW5nPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHQodCl7dmFyIGU9bi5jYWxsKGksdCx0
LmRlcHRoKTtyZXR1cm4gbnVsbD09ZT9OaSh0KTp6aSh0LCJudW1iZXIiPT10eXBlb2YgZT9bZSxl
LGUsZV06ZSl9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gemkodCxuKX1pZighYXJndW1lbnRzLmxlbmd0
aClyZXR1cm4gbDt2YXIgcjtyZXR1cm4gZj1udWxsPT0obD1uKT9OaToiZnVuY3Rpb24iPT0ocj10
eXBlb2Ygbik/dDoibnVtYmVyIj09PXI/KG49W24sbixuLG5dLGUpOmUsaX0saS5yb3VuZD1mdW5j
dGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1uP01hdGgucm91bmQ6TnVtYmVyLGkp
OmMhPU51bWJlcn0saS5zdGlja3k9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGg9bixvPW51bGwsaSk6aH0saS5yYXRpbz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocD1uLGkpOnB9LGkubW9kZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZz1uKyIiLGkpOmd9LFh1KGksYSl9LFpvLnJhbmRvbT17bm9ybWFsOmZ1bmN0aW9uKG4sdCl7
dmFyIGU9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gMj5lJiYodD0xKSwxPmUmJihuPTApLGZ1bmN0
aW9uKCl7dmFyIGUscix1O2RvIGU9MipNYXRoLnJhbmRvbSgpLTEscj0yKk1hdGgucmFuZG9tKCkt
MSx1PWUqZStyKnI7d2hpbGUoIXV8fHU+MSk7cmV0dXJuIG4rdCplKk1hdGguc3FydCgtMipNYXRo
LmxvZyh1KS91KX19LGxvZ05vcm1hbDpmdW5jdGlvbigpe3ZhciBuPVpvLnJhbmRvbS5ub3JtYWwu
YXBwbHkoWm8sYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5leHAobigp
KX19LGJhdGVzOmZ1bmN0aW9uKG4pe3ZhciB0PVpvLnJhbmRvbS5pcndpbkhhbGwobik7cmV0dXJu
IGZ1bmN0aW9uKCl7cmV0dXJuIHQoKS9ufX0saXJ3aW5IYWxsOmZ1bmN0aW9uKG4pe3JldHVybiBm
dW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9MDtuPmU7ZSsrKXQrPU1hdGgucmFuZG9tKCk7cmV0dXJu
IHR9fX0sWm8uc2NhbGU9e307dmFyIHNzPXtmbG9vcjp3dCxjZWlsOnd0fTtaby5zY2FsZS5saW5l
YXI9ZnVuY3Rpb24oKXtyZXR1cm4gVWkoWzAsMV0sWzAsMV0saHUsITEpfTt2YXIgbHM9e3M6MSxn
OjEscDoxLHI6MSxlOjF9O1pvLnNjYWxlLmxvZz1mdW5jdGlvbigpe3JldHVybiBWaShaby5zY2Fs
ZS5saW5lYXIoKS5kb21haW4oWzAsMV0pLDEwLCEwLFsxLDEwXSl9O3ZhciBmcz1aby5mb3JtYXQo
Ii4wZSIpLGhzPXtmbG9vcjpmdW5jdGlvbihuKXtyZXR1cm4tTWF0aC5jZWlsKC1uKX0sY2VpbDpm
dW5jdGlvbihuKXtyZXR1cm4tTWF0aC5mbG9vcigtbil9fTtaby5zY2FsZS5wb3c9ZnVuY3Rpb24o
KXtyZXR1cm4gWGkoWm8uc2NhbGUubGluZWFyKCksMSxbMCwxXSl9LFpvLnNjYWxlLnNxcnQ9ZnVu
Y3Rpb24oKXtyZXR1cm4gWm8uc2NhbGUucG93KCkuZXhwb25lbnQoLjUpfSxaby5zY2FsZS5vcmRp
bmFsPWZ1bmN0aW9uKCl7cmV0dXJuIEJpKFtdLHt0OiJyYW5nZSIsYTpbW11dfSl9LFpvLnNjYWxl
LmNhdGVnb3J5MTA9ZnVuY3Rpb24oKXtyZXR1cm4gWm8uc2NhbGUub3JkaW5hbCgpLnJhbmdlKGdz
KX0sWm8uc2NhbGUuY2F0ZWdvcnkyMD1mdW5jdGlvbigpe3JldHVybiBaby5zY2FsZS5vcmRpbmFs
KCkucmFuZ2UocHMpfSxaby5zY2FsZS5jYXRlZ29yeTIwYj1mdW5jdGlvbigpe3JldHVybiBaby5z
Y2FsZS5vcmRpbmFsKCkucmFuZ2UodnMpfSxaby5zY2FsZS5jYXRlZ29yeTIwYz1mdW5jdGlvbigp
e3JldHVybiBaby5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoZHMpfTt2YXIgZ3M9WzIwNjIyNjAsMTY3
NDQyMDYsMjkyNDU4OCwxNDAzNDcyOCw5NzI1ODg1LDkxOTcxMzEsMTQ5MDczMzAsODM1NTcxMSwx
MjM2OTE4NiwxNTU2MTc1XS5tYXAodnQpLHBzPVsyMDYyMjYwLDExNDU0NDQwLDE2NzQ0MjA2LDE2
NzU5NjcyLDI5MjQ1ODgsMTAwMTg2OTgsMTQwMzQ3MjgsMTY3NTA3NDIsOTcyNTg4NSwxMjk1NTg2
MSw5MTk3MTMxLDEyODg1MTQwLDE0OTA3MzMwLDE2MjM0MTk0LDgzNTU3MTEsMTMwOTI4MDcsMTIz
NjkxODYsMTQ0MDg1ODksMTU1NjE3NSwxMDQxMDcyNV0ubWFwKHZ0KSx2cz1bMzc1MDc3Nyw1Mzk1
NjE5LDcwNDA3MTksMTAyNjQyODYsNjUxOTA5Nyw5MjE2NTk0LDExOTE1MTE1LDEzNTU2NjM2LDky
MDI5OTMsMTI0MjY4MDksMTUxODY1MTQsMTUxOTA5MzIsODY2NjE2OSwxMTM1NjQ5MCwxNDA0OTY0
MywxNTE3NzM3Miw4MDc3NjgzLDEwODM0MzI0LDEzNTI4NTA5LDE0NTg5NjU0XS5tYXAodnQpLGRz
PVszMjQ0NzMzLDcwNTcxMTAsMTA0MDY2MjUsMTMwMzI0MzEsMTUwOTUwNTMsMTY2MTY3NjQsMTY2
MjUyNTksMTY2MzQwMTgsMzI1MzA3Niw3NjUyNDcwLDEwNjA3MDAzLDEzMTAxNTA0LDc2OTUyODEs
MTAzOTQzMTIsMTIzNjkzNzIsMTQzNDI4OTEsNjUxMzUwNyw5ODY4OTUwLDEyNDM0ODc3LDE0Mjc3
MDgxXS5tYXAodnQpO1pvLnNjYWxlLnF1YW50aWxlPWZ1bmN0aW9uKCl7cmV0dXJuIFdpKFtdLFtd
KX0sWm8uc2NhbGUucXVhbnRpemU9ZnVuY3Rpb24oKXtyZXR1cm4gSmkoMCwxLFswLDFdKX0sWm8u
c2NhbGUudGhyZXNob2xkPWZ1bmN0aW9uKCl7cmV0dXJuIEdpKFsuNV0sWzAsMV0pfSxaby5zY2Fs
ZS5pZGVudGl0eT1mdW5jdGlvbigpe3JldHVybiBLaShbMCwxXSl9LFpvLnN2Zz17fSxaby5zdmcu
YXJjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3ZhciBuPXQuYXBwbHkodGhpcyxhcmd1bWVudHMp
LGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbz1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSttcyxh
PXUuYXBwbHkodGhpcyxhcmd1bWVudHMpK21zLGM9KG8+YSYmKGM9byxvPWEsYT1jKSxhLW8pLHM9
YmE+Yz8iMCI6IjEiLGw9TWF0aC5jb3MobyksZj1NYXRoLnNpbihvKSxoPU1hdGguY29zKGEpLGc9
TWF0aC5zaW4oYSk7CityZXR1cm4gYz49eXM/bj8iTTAsIitpKyJBIitpKyIsIitpKyIgMCAxLDEg
MCwiKy1pKyJBIitpKyIsIitpKyIgMCAxLDEgMCwiK2krIk0wLCIrbisiQSIrbisiLCIrbisiIDAg
MSwwIDAsIistbisiQSIrbisiLCIrbisiIDAgMSwwIDAsIituKyJaIjoiTTAsIitpKyJBIitpKyIs
IitpKyIgMCAxLDEgMCwiKy1pKyJBIitpKyIsIitpKyIgMCAxLDEgMCwiK2krIloiOm4/Ik0iK2kq
bCsiLCIraSpmKyJBIitpKyIsIitpKyIgMCAiK3MrIiwxICIraSpoKyIsIitpKmcrIkwiK24qaCsi
LCIrbipnKyJBIituKyIsIituKyIgMCAiK3MrIiwwICIrbipsKyIsIituKmYrIloiOiJNIitpKmwr
IiwiK2kqZisiQSIraSsiLCIraSsiIDAgIitzKyIsMSAiK2kqaCsiLCIraSpnKyJMMCwwIisiWiJ9
dmFyIHQ9UWksZT1ubyxyPXRvLHU9ZW87cmV0dXJuIG4uaW5uZXJSYWRpdXM9ZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YnQoZSksbik6dH0sbi5vdXRlclJhZGl1cz1mdW5j
dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1idCh0KSxuKTplfSxuLnN0YXJ0QW5n
bGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YnQodCksbik6cn0sbi5l
bmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1idCh0KSxuKTp1
fSxuLmNlbnRyb2lkPWZ1bmN0aW9uKCl7dmFyIG49KHQuYXBwbHkodGhpcyxhcmd1bWVudHMpK2Uu
YXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLGk9KHIuYXBwbHkodGhpcyxhcmd1bWVudHMpK3UuYXBw
bHkodGhpcyxhcmd1bWVudHMpKS8yK21zO3JldHVybltNYXRoLmNvcyhpKSpuLE1hdGguc2luKGkp
Km5dfSxufTt2YXIgbXM9LVNhLHlzPXdhLWthO1pvLnN2Zy5saW5lPWZ1bmN0aW9uKCl7cmV0dXJu
IHJvKHd0KX07dmFyIHhzPVpvLm1hcCh7bGluZWFyOnVvLCJsaW5lYXItY2xvc2VkIjppbyxzdGVw
Om9vLCJzdGVwLWJlZm9yZSI6YW8sInN0ZXAtYWZ0ZXIiOmNvLGJhc2lzOnBvLCJiYXNpcy1vcGVu
Ijp2bywiYmFzaXMtY2xvc2VkIjptbyxidW5kbGU6eW8sY2FyZGluYWw6Zm8sImNhcmRpbmFsLW9w
ZW4iOnNvLCJjYXJkaW5hbC1jbG9zZWQiOmxvLG1vbm90b25lOlNvfSk7eHMuZm9yRWFjaChmdW5j
dGlvbihuLHQpe3Qua2V5PW4sdC5jbG9zZWQ9Ly1jbG9zZWQkLy50ZXN0KG4pfSk7dmFyIE1zPVsw
LDIvMywxLzMsMF0sX3M9WzAsMS8zLDIvMywwXSxicz1bMCwxLzYsMi8zLDEvNl07Wm8uc3ZnLmxp
bmUucmFkaWFsPWZ1bmN0aW9uKCl7dmFyIG49cm8oa28pO3JldHVybiBuLnJhZGl1cz1uLngsZGVs
ZXRlIG4ueCxuLmFuZ2xlPW4ueSxkZWxldGUgbi55LG59LGFvLnJldmVyc2U9Y28sY28ucmV2ZXJz
ZT1hbyxaby5zdmcuYXJlYT1mdW5jdGlvbigpe3JldHVybiBFbyh3dCl9LFpvLnN2Zy5hcmVhLnJh
ZGlhbD1mdW5jdGlvbigpe3ZhciBuPUVvKGtvKTtyZXR1cm4gbi5yYWRpdXM9bi54LGRlbGV0ZSBu
Lngsbi5pbm5lclJhZGl1cz1uLngwLGRlbGV0ZSBuLngwLG4ub3V0ZXJSYWRpdXM9bi54MSxkZWxl
dGUgbi54MSxuLmFuZ2xlPW4ueSxkZWxldGUgbi55LG4uc3RhcnRBbmdsZT1uLnkwLGRlbGV0ZSBu
LnkwLG4uZW5kQW5nbGU9bi55MSxkZWxldGUgbi55MSxufSxaby5zdmcuY2hvcmQ9ZnVuY3Rpb24o
KXtmdW5jdGlvbiBuKG4sYSl7dmFyIGM9dCh0aGlzLGksbixhKSxzPXQodGhpcyxvLG4sYSk7cmV0
dXJuIk0iK2MucDArcihjLnIsYy5wMSxjLmExLWMuYTApKyhlKGMscyk/dShjLnIsYy5wMSxjLnIs
Yy5wMCk6dShjLnIsYy5wMSxzLnIscy5wMCkrcihzLnIscy5wMSxzLmExLXMuYTApK3Uocy5yLHMu
cDEsYy5yLGMucDApKSsiWiJ9ZnVuY3Rpb24gdChuLHQsZSxyKXt2YXIgdT10LmNhbGwobixlLHIp
LGk9YS5jYWxsKG4sdSxyKSxvPWMuY2FsbChuLHUscikrbXMsbD1zLmNhbGwobix1LHIpK21zO3Jl
dHVybntyOmksYTA6byxhMTpsLHAwOltpKk1hdGguY29zKG8pLGkqTWF0aC5zaW4obyldLHAxOltp
Kk1hdGguY29zKGwpLGkqTWF0aC5zaW4obCldfX1mdW5jdGlvbiBlKG4sdCl7cmV0dXJuIG4uYTA9
PXQuYTAmJm4uYTE9PXQuYTF9ZnVuY3Rpb24gcihuLHQsZSl7cmV0dXJuIkEiK24rIiwiK24rIiAw
ICIrICsoZT5iYSkrIiwxICIrdH1mdW5jdGlvbiB1KG4sdCxlLHIpe3JldHVybiJRIDAsMCAiK3J9
dmFyIGk9Z3Isbz1wcixhPUFvLGM9dG8scz1lbztyZXR1cm4gbi5yYWRpdXM9ZnVuY3Rpb24odCl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9YnQodCksbik6YX0sbi5zb3VyY2U9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9YnQodCksbik6aX0sbi50YXJnZXQ9ZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89YnQodCksbik6b30sbi5zdGFydEFuZ2xl
PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWJ0KHQpLG4pOmN9LG4uZW5k
QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9YnQodCksbik6c30s
bn0sWm8uc3ZnLmRpYWdvbmFsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHUpe3ZhciBpPXQuY2Fs
bCh0aGlzLG4sdSksbz1lLmNhbGwodGhpcyxuLHUpLGE9KGkueStvLnkpLzIsYz1baSx7eDppLngs
eTphfSx7eDpvLngseTphfSxvXTtyZXR1cm4gYz1jLm1hcChyKSwiTSIrY1swXSsiQyIrY1sxXSsi
ICIrY1syXSsiICIrY1szXX12YXIgdD1ncixlPXByLHI9Q287cmV0dXJuIG4uc291cmNlPWZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWJ0KGUpLG4pOnR9LG4udGFyZ2V0PWZ1
bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWJ0KHQpLG4pOmV9LG4ucHJvamVj
dGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LG59LFpv
LnN2Zy5kaWFnb25hbC5yYWRpYWw9ZnVuY3Rpb24oKXt2YXIgbj1aby5zdmcuZGlhZ29uYWwoKSx0
PUNvLGU9bi5wcm9qZWN0aW9uO3JldHVybiBuLnByb2plY3Rpb249ZnVuY3Rpb24obil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/ZShObyh0PW4pKTp0fSxufSxaby5zdmcuc3ltYm9sPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gbihuLHIpe3JldHVybih3cy5nZXQodC5jYWxsKHRoaXMsbixyKSl8fFRvKShl
LmNhbGwodGhpcyxuLHIpKX12YXIgdD1MbyxlPXpvO3JldHVybiBuLnR5cGU9ZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YnQoZSksbik6dH0sbi5zaXplPWZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWJ0KHQpLG4pOmV9LG59O3ZhciB3cz1aby5tYXAo
e2NpcmNsZTpUbyxjcm9zczpmdW5jdGlvbihuKXt2YXIgdD1NYXRoLnNxcnQobi81KS8yO3JldHVy
biJNIistMyp0KyIsIistdCsiSCIrLXQrIlYiKy0zKnQrIkgiK3QrIlYiKy10KyJIIiszKnQrIlYi
K3QrIkgiK3QrIlYiKzMqdCsiSCIrLXQrIlYiK3QrIkgiKy0zKnQrIloifSxkaWFtb25kOmZ1bmN0
aW9uKG4pe3ZhciB0PU1hdGguc3FydChuLygyKkFzKSksZT10KkFzO3JldHVybiJNMCwiKy10KyJM
IitlKyIsMCIrIiAwLCIrdCsiICIrLWUrIiwwIisiWiJ9LHNxdWFyZTpmdW5jdGlvbihuKXt2YXIg
dD1NYXRoLnNxcnQobikvMjtyZXR1cm4iTSIrLXQrIiwiKy10KyJMIit0KyIsIistdCsiICIrdCsi
LCIrdCsiICIrLXQrIiwiK3QrIloifSwidHJpYW5nbGUtZG93biI6ZnVuY3Rpb24obil7dmFyIHQ9
TWF0aC5zcXJ0KG4vRXMpLGU9dCpFcy8yO3JldHVybiJNMCwiK2UrIkwiK3QrIiwiKy1lKyIgIist
dCsiLCIrLWUrIloifSwidHJpYW5nbGUtdXAiOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChu
L0VzKSxlPXQqRXMvMjtyZXR1cm4iTTAsIistZSsiTCIrdCsiLCIrZSsiICIrLXQrIiwiK2UrIloi
fX0pO1pvLnN2Zy5zeW1ib2xUeXBlcz13cy5rZXlzKCk7dmFyIFNzLGtzLEVzPU1hdGguc3FydCgz
KSxBcz1NYXRoLnRhbigzMCpBYSksQ3M9W10sTnM9MDtDcy5jYWxsPXBhLmNhbGwsQ3MuZW1wdHk9
cGEuZW1wdHksQ3Mubm9kZT1wYS5ub2RlLENzLnNpemU9cGEuc2l6ZSxaby50cmFuc2l0aW9uPWZ1
bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP1NzP24udHJhbnNpdGlvbigpOm46bWEu
dHJhbnNpdGlvbigpfSxaby50cmFuc2l0aW9uLnByb3RvdHlwZT1DcyxDcy5zZWxlY3Q9ZnVuY3Rp
b24obil7dmFyIHQsZSxyLHU9dGhpcy5pZCxpPVtdO249YihuKTtmb3IodmFyIG89LTEsYT10aGlz
Lmxlbmd0aDsrK288YTspe2kucHVzaCh0PVtdKTtmb3IodmFyIGM9dGhpc1tvXSxzPS0xLGw9Yy5s
ZW5ndGg7KytzPGw7KShyPWNbc10pJiYoZT1uLmNhbGwocixyLl9fZGF0YV9fLHMsbykpPygiX19k
YXRhX18iaW4gciYmKGUuX19kYXRhX189ci5fX2RhdGFfXyksUG8oZSxzLHUsci5fX3RyYW5zaXRp
b25fX1t1XSksdC5wdXNoKGUpKTp0LnB1c2gobnVsbCl9cmV0dXJuIHFvKGksdSl9LENzLnNlbGVj
dEFsbD1mdW5jdGlvbihuKXt2YXIgdCxlLHIsdSxpLG89dGhpcy5pZCxhPVtdO249dyhuKTtmb3Io
dmFyIGM9LTEscz10aGlzLmxlbmd0aDsrK2M8czspZm9yKHZhciBsPXRoaXNbY10sZj0tMSxoPWwu
bGVuZ3RoOysrZjxoOylpZihyPWxbZl0pe2k9ci5fX3RyYW5zaXRpb25fX1tvXSxlPW4uY2FsbChy
LHIuX19kYXRhX18sZixjKSxhLnB1c2godD1bXSk7Zm9yKHZhciBnPS0xLHA9ZS5sZW5ndGg7Kytn
PHA7KSh1PWVbZ10pJiZQbyh1LGcsbyxpKSx0LnB1c2godSl9cmV0dXJuIHFvKGEsbyl9LENzLmZp
bHRlcj1mdW5jdGlvbihuKXt2YXIgdCxlLHIsdT1bXTsiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49
UihuKSk7Zm9yKHZhciBpPTAsbz10aGlzLmxlbmd0aDtvPmk7aSsrKXt1LnB1c2godD1bXSk7Zm9y
KHZhciBlPXRoaXNbaV0sYT0wLGM9ZS5sZW5ndGg7Yz5hO2ErKykocj1lW2FdKSYmbi5jYWxsKHIs
ci5fX2RhdGFfXyxhLGkpJiZ0LnB1c2gocil9cmV0dXJuIHFvKHUsdGhpcy5pZCl9LENzLnR3ZWVu
PWZ1bmN0aW9uKG4sdCl7dmFyIGU9dGhpcy5pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP3Ro
aXMubm9kZSgpLl9fdHJhbnNpdGlvbl9fW2VdLnR3ZWVuLmdldChuKTpQKHRoaXMsbnVsbD09dD9m
dW5jdGlvbih0KXt0Ll9fdHJhbnNpdGlvbl9fW2VdLnR3ZWVuLnJlbW92ZShuKX06ZnVuY3Rpb24o
cil7ci5fX3RyYW5zaXRpb25fX1tlXS50d2Vlbi5zZXQobix0KX0pfSxDcy5hdHRyPWZ1bmN0aW9u
KG4sdCl7ZnVuY3Rpb24gZSgpe3RoaXMucmVtb3ZlQXR0cmlidXRlKGEpfWZ1bmN0aW9uIHIoKXt0
aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGEuc3BhY2UsYS5sb2NhbCl9ZnVuY3Rpb24gdShuKXtyZXR1
cm4gbnVsbD09bj9lOihuKz0iIixmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5nZXRBdHRyaWJ1dGUo
YSk7cmV0dXJuIGUhPT1uJiYodD1vKGUsbiksZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUo
YSx0KG4pKX0pfSl9ZnVuY3Rpb24gaShuKXtyZXR1cm4gbnVsbD09bj9yOihuKz0iIixmdW5jdGlv
bigpe3ZhciB0LGU9dGhpcy5nZXRBdHRyaWJ1dGVOUyhhLnNwYWNlLGEubG9jYWwpO3JldHVybiBl
IT09biYmKHQ9byhlLG4pLGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlMoYS5zcGFjZSxh
LmxvY2FsLHQobikpfSl9KX1pZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih0IGluIG4pdGhpcy5h
dHRyKHQsblt0XSk7cmV0dXJuIHRoaXN9dmFyIG89InRyYW5zZm9ybSI9PW4/RHU6aHUsYT1aby5u
cy5xdWFsaWZ5KG4pO3JldHVybiBSbyh0aGlzLCJhdHRyLiIrbix0LGEubG9jYWw/aTp1KX0sQ3Mu
YXR0clR3ZWVuPWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZShuLGUpe3ZhciByPXQuY2FsbCh0aGlz
LG4sZSx0aGlzLmdldEF0dHJpYnV0ZSh1KSk7cmV0dXJuIHImJmZ1bmN0aW9uKG4pe3RoaXMuc2V0
QXR0cmlidXRlKHUscihuKSl9fWZ1bmN0aW9uIHIobixlKXt2YXIgcj10LmNhbGwodGhpcyxuLGUs
dGhpcy5nZXRBdHRyaWJ1dGVOUyh1LnNwYWNlLHUubG9jYWwpKTtyZXR1cm4gciYmZnVuY3Rpb24o
bil7dGhpcy5zZXRBdHRyaWJ1dGVOUyh1LnNwYWNlLHUubG9jYWwscihuKSl9fXZhciB1PVpvLm5z
LnF1YWxpZnkobik7cmV0dXJuIHRoaXMudHdlZW4oImF0dHIuIituLHUubG9jYWw/cjplKX0sQ3Mu
c3R5bGU9ZnVuY3Rpb24obix0LGUpe2Z1bmN0aW9uIHIoKXt0aGlzLnN0eWxlLnJlbW92ZVByb3Bl
cnR5KG4pfWZ1bmN0aW9uIHUodCl7cmV0dXJuIG51bGw9PXQ/cjoodCs9IiIsZnVuY3Rpb24oKXt2
YXIgcix1PVdvLmdldENvbXB1dGVkU3R5bGUodGhpcyxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKG4p
O3JldHVybiB1IT09dCYmKHI9aHUodSx0KSxmdW5jdGlvbih0KXt0aGlzLnN0eWxlLnNldFByb3Bl
cnR5KG4scih0KSxlKX0pfSl9dmFyIGk9YXJndW1lbnRzLmxlbmd0aDtpZigzPmkpe2lmKCJzdHJp
bmciIT10eXBlb2Ygbil7Mj5pJiYodD0iIik7Zm9yKGUgaW4gbil0aGlzLnN0eWxlKGUsbltlXSx0
KTtyZXR1cm4gdGhpc31lPSIifXJldHVybiBSbyh0aGlzLCJzdHlsZS4iK24sdCx1KX0sQ3Muc3R5
bGVUd2Vlbj1mdW5jdGlvbihuLHQsZSl7ZnVuY3Rpb24gcihyLHUpe3ZhciBpPXQuY2FsbCh0aGlz
LHIsdSxXby5nZXRDb21wdXRlZFN0eWxlKHRoaXMsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShuKSk7
cmV0dXJuIGkmJmZ1bmN0aW9uKHQpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobixpKHQpLGUpfX1y
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzJiYoZT0iIiksdGhpcy50d2Vlbigic3R5bGUuIituLHIp
fSxDcy50ZXh0PWZ1bmN0aW9uKG4pe3JldHVybiBSbyh0aGlzLCJ0ZXh0IixuLERvKX0sQ3MucmVt
b3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaCgiZW5kLnRyYW5zaXRpb24iLGZ1bmN0aW9u
KCl7dmFyIG47dGhpcy5fX3RyYW5zaXRpb25fXy5jb3VudDwyJiYobj10aGlzLnBhcmVudE5vZGUp
JiZuLnJlbW92ZUNoaWxkKHRoaXMpfSl9LENzLmVhc2U9ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5p
ZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP3RoaXMubm9kZSgpLl9fdHJhbnNpdGlvbl9fW3Rd
LmVhc2U6KCJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj1aby5lYXNlLmFwcGx5KFpvLGFyZ3VtZW50
cykpLFAodGhpcyxmdW5jdGlvbihlKXtlLl9fdHJhbnNpdGlvbl9fW3RdLmVhc2U9bn0pKX0sQ3Mu
ZGVsYXk9ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwx
P3RoaXMubm9kZSgpLl9fdHJhbnNpdGlvbl9fW3RdLmRlbGF5OlAodGhpcywiZnVuY3Rpb24iPT10
eXBlb2Ygbj9mdW5jdGlvbihlLHIsdSl7ZS5fX3RyYW5zaXRpb25fX1t0XS5kZWxheT0rbi5jYWxs
KGUsZS5fX2RhdGFfXyxyLHUpfToobj0rbixmdW5jdGlvbihlKXtlLl9fdHJhbnNpdGlvbl9fW3Rd
LmRlbGF5PW59KSl9LENzLmR1cmF0aW9uPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMuaWQ7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg8MT90aGlzLm5vZGUoKS5fX3RyYW5zaXRpb25fX1t0XS5kdXJhdGlv
bjpQKHRoaXMsImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVuY3Rpb24oZSxyLHUpe2UuX190cmFuc2l0
aW9uX19bdF0uZHVyYXRpb249TWF0aC5tYXgoMSxuLmNhbGwoZSxlLl9fZGF0YV9fLHIsdSkpfToo
bj1NYXRoLm1heCgxLG4pLGZ1bmN0aW9uKGUpe2UuX190cmFuc2l0aW9uX19bdF0uZHVyYXRpb249
bn0pKX0sQ3MuZWFjaD1mdW5jdGlvbihuLHQpe3ZhciBlPXRoaXMuaWQ7aWYoYXJndW1lbnRzLmxl
bmd0aDwyKXt2YXIgcj1rcyx1PVNzO1NzPWUsUCh0aGlzLGZ1bmN0aW9uKHQscix1KXtrcz10Ll9f
dHJhbnNpdGlvbl9fW2VdLG4uY2FsbCh0LHQuX19kYXRhX18scix1KX0pLGtzPXIsU3M9dX1lbHNl
IFAodGhpcyxmdW5jdGlvbihyKXt2YXIgdT1yLl9fdHJhbnNpdGlvbl9fW2VdOyh1LmV2ZW50fHwo
dS5ldmVudD1aby5kaXNwYXRjaCgic3RhcnQiLCJlbmQiKSkpLm9uKG4sdCl9KTtyZXR1cm4gdGhp
c30sQ3MudHJhbnNpdGlvbj1mdW5jdGlvbigpe2Zvcih2YXIgbix0LGUscix1PXRoaXMuaWQsaT0r
K05zLG89W10sYT0wLGM9dGhpcy5sZW5ndGg7Yz5hO2ErKyl7by5wdXNoKG49W10pO2Zvcih2YXIg
dD10aGlzW2FdLHM9MCxsPXQubGVuZ3RoO2w+cztzKyspKGU9dFtzXSkmJihyPU9iamVjdC5jcmVh
dGUoZS5fX3RyYW5zaXRpb25fX1t1XSksci5kZWxheSs9ci5kdXJhdGlvbixQbyhlLHMsaSxyKSks
bi5wdXNoKGUpfXJldHVybiBxbyhvLGkpfSxaby5zdmcuYXhpcz1mdW5jdGlvbigpe2Z1bmN0aW9u
IG4obil7bi5lYWNoKGZ1bmN0aW9uKCl7dmFyIG4scz1aby5zZWxlY3QodGhpcyksbD10aGlzLl9f
Y2hhcnRfX3x8ZSxmPXRoaXMuX19jaGFydF9fPWUuY29weSgpLGg9bnVsbD09Yz9mLnRpY2tzP2Yu
dGlja3MuYXBwbHkoZixhKTpmLmRvbWFpbigpOmMsZz1udWxsPT10P2YudGlja0Zvcm1hdD9mLnRp
Y2tGb3JtYXQuYXBwbHkoZixhKTp3dDp0LHA9cy5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShoLGYp
LHY9cC5lbnRlcigpLmluc2VydCgiZyIsIi5kb21haW4iKS5hdHRyKCJjbGFzcyIsInRpY2siKS5z
dHlsZSgib3BhY2l0eSIsa2EpLGQ9Wm8udHJhbnNpdGlvbihwLmV4aXQoKSkuc3R5bGUoIm9wYWNp
dHkiLGthKS5yZW1vdmUoKSxtPVpvLnRyYW5zaXRpb24ocC5vcmRlcigpKS5zdHlsZSgib3BhY2l0
eSIsMSkseT1UaShmKSx4PXMuc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbMF0pLE09KHguZW50
ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLFpvLnRyYW5zaXRpb24o
eCkpO3YuYXBwZW5kKCJsaW5lIiksdi5hcHBlbmQoInRleHQiKTt2YXIgXz12LnNlbGVjdCgibGlu
ZSIpLGI9bS5zZWxlY3QoImxpbmUiKSx3PXAuc2VsZWN0KCJ0ZXh0IikudGV4dChnKSxTPXYuc2Vs
ZWN0KCJ0ZXh0Iiksaz1tLnNlbGVjdCgidGV4dCIpO3N3aXRjaChyKXtjYXNlImJvdHRvbSI6bj1V
byxfLmF0dHIoInkyIix1KSxTLmF0dHIoInkiLE1hdGgubWF4KHUsMCkrbyksYi5hdHRyKCJ4MiIs
MCkuYXR0cigieTIiLHUpLGsuYXR0cigieCIsMCkuYXR0cigieSIsTWF0aC5tYXgodSwwKStvKSx3
LmF0dHIoImR5IiwiLjcxZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxNLmF0dHIo
ImQiLCJNIit5WzBdKyIsIitpKyJWMEgiK3lbMV0rIlYiK2kpO2JyZWFrO2Nhc2UidG9wIjpuPVVv
LF8uYXR0cigieTIiLC11KSxTLmF0dHIoInkiLC0oTWF0aC5tYXgodSwwKStvKSksYi5hdHRyKCJ4
MiIsMCkuYXR0cigieTIiLC11KSxrLmF0dHIoIngiLDApLmF0dHIoInkiLC0oTWF0aC5tYXgodSww
KStvKSksdy5hdHRyKCJkeSIsIjBlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLE0u
YXR0cigiZCIsIk0iK3lbMF0rIiwiKy1pKyJWMEgiK3lbMV0rIlYiKy1pKTticmVhaztjYXNlImxl
ZnQiOm49am8sXy5hdHRyKCJ4MiIsLXUpLFMuYXR0cigieCIsLShNYXRoLm1heCh1LDApK28pKSxi
LmF0dHIoIngyIiwtdSkuYXR0cigieTIiLDApLGsuYXR0cigieCIsLShNYXRoLm1heCh1LDApK28p
KS5hdHRyKCJ5IiwwKSx3LmF0dHIoImR5IiwiLjMyZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJl
bmQiKSxNLmF0dHIoImQiLCJNIistaSsiLCIreVswXSsiSDBWIit5WzFdKyJIIistaSk7YnJlYWs7
Y2FzZSJyaWdodCI6bj1qbyxfLmF0dHIoIngyIix1KSxTLmF0dHIoIngiLE1hdGgubWF4KHUsMCkr
byksYi5hdHRyKCJ4MiIsdSkuYXR0cigieTIiLDApLGsuYXR0cigieCIsTWF0aC5tYXgodSwwKStv
KS5hdHRyKCJ5IiwwKSx3LmF0dHIoImR5IiwiLjMyZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJz
dGFydCIpLE0uYXR0cigiZCIsIk0iK2krIiwiK3lbMF0rIkgwViIreVsxXSsiSCIraSl9aWYoZi5y
YW5nZUJhbmQpe3ZhciBFPWYsQT1FLnJhbmdlQmFuZCgpLzI7bD1mPWZ1bmN0aW9uKG4pe3JldHVy
biBFKG4pK0F9fWVsc2UgbC5yYW5nZUJhbmQ/bD1mOmQuY2FsbChuLGYpO3YuY2FsbChuLGwpLG0u
Y2FsbChuLGYpfSl9dmFyIHQsZT1aby5zY2FsZS5saW5lYXIoKSxyPXpzLHU9NixpPTYsbz0zLGE9
WzEwXSxjPW51bGw7cmV0dXJuIG4uc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGU9dCxuKTplfSxuLm9yaWVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocj10IGluIExzP3QrIiI6enMsbik6cn0sbi50aWNrcz1mdW5jdGlvbigpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhhPWFyZ3VtZW50cyxuKTphfSxuLnRpY2tWYWx1ZXM9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dCxuKTpjfSxuLnRpY2tGb3JtYXQ9ZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0fSxuLnRpY2tTaXplPWZ1bmN0
aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIGU/KHU9K3QsaT0rYXJndW1lbnRz
W2UtMV0sbik6dX0sbi5pbm5lclRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh1PSt0LG4pOnV9LG4ub3V0ZXJUaWNrU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oaT0rdCxuKTppfSxuLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LG4pOm99LG4udGlja1N1YmRpdmlkZT1mdW5jdGlvbigp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoJiZufSxufTt2YXIgenM9ImJvdHRvbSIsTHM9e3RvcDox
LHJpZ2h0OjEsYm90dG9tOjEsbGVmdDoxfTtaby5zdmcuYnJ1c2g9ZnVuY3Rpb24oKXtmdW5jdGlv
biBuKGkpe2kuZWFjaChmdW5jdGlvbigpe3ZhciBpPVpvLnNlbGVjdCh0aGlzKS5zdHlsZSgicG9p
bnRlci1ldmVudHMiLCJhbGwiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwi
cmdiYSgwLDAsMCwwKSIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLHUpLm9uKCJ0b3VjaHN0YXJ0LmJy
dXNoIix1KSxvPWkuc2VsZWN0QWxsKCIuYmFja2dyb3VuZCIpLmRhdGEoWzBdKTtvLmVudGVyKCku
YXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJiYWNrZ3JvdW5kIikuc3R5bGUoInZpc2liaWxp
dHkiLCJoaWRkZW4iKS5zdHlsZSgiY3Vyc29yIiwiY3Jvc3NoYWlyIiksaS5zZWxlY3RBbGwoIi5l
eHRlbnQiKS5kYXRhKFswXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImV4
dGVudCIpLnN0eWxlKCJjdXJzb3IiLCJtb3ZlIik7dmFyIGE9aS5zZWxlY3RBbGwoIi5yZXNpemUi
KS5kYXRhKHAsd3QpO2EuZXhpdCgpLnJlbW92ZSgpLGEuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsZnVuY3Rpb24obil7cmV0dXJuInJlc2l6ZSAiK259KS5zdHlsZSgiY3Vyc29yIixm
dW5jdGlvbihuKXtyZXR1cm4gVHNbbl19KS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IixmdW5jdGlv
bihuKXtyZXR1cm4vW2V3XSQvLnRlc3Qobik/LTM6bnVsbH0pLmF0dHIoInkiLGZ1bmN0aW9uKG4p
e3JldHVybi9eW25zXS8udGVzdChuKT8tMzpudWxsfSkuYXR0cigid2lkdGgiLDYpLmF0dHIoImhl
aWdodCIsNikuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKSxhLnN0eWxlKCJkaXNwbGF5Iixu
LmVtcHR5KCk/Im5vbmUiOm51bGwpO3ZhciBsLGY9Wm8udHJhbnNpdGlvbihpKSxoPVpvLnRyYW5z
aXRpb24obyk7YyYmKGw9VGkoYyksaC5hdHRyKCJ4IixsWzBdKS5hdHRyKCJ3aWR0aCIsbFsxXS1s
WzBdKSxlKGYpKSxzJiYobD1UaShzKSxoLmF0dHIoInkiLGxbMF0pLmF0dHIoImhlaWdodCIsbFsx
XS1sWzBdKSxyKGYpKSx0KGYpfSl9ZnVuY3Rpb24gdChuKXtuLnNlbGVjdEFsbCgiLnJlc2l6ZSIp
LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24obil7cmV0dXJuInRyYW5zbGF0ZSgiK2xbKy9lJC8u
dGVzdChuKV0rIiwiK2ZbKy9ecy8udGVzdChuKV0rIikifSl9ZnVuY3Rpb24gZShuKXtuLnNlbGVj
dCgiLmV4dGVudCIpLmF0dHIoIngiLGxbMF0pLG4uc2VsZWN0QWxsKCIuZXh0ZW50LC5uPnJlY3Qs
LnM+cmVjdCIpLmF0dHIoIndpZHRoIixsWzFdLWxbMF0pfWZ1bmN0aW9uIHIobil7bi5zZWxlY3Qo
Ii5leHRlbnQiKS5hdHRyKCJ5IixmWzBdKSxuLnNlbGVjdEFsbCgiLmV4dGVudCwuZT5yZWN0LC53
PnJlY3QiKS5hdHRyKCJoZWlnaHQiLGZbMV0tZlswXSl9ZnVuY3Rpb24gdSgpe2Z1bmN0aW9uIHUo
KXszMj09Wm8uZXZlbnQua2V5Q29kZSYmKEN8fCh4PW51bGwselswXS09bFsxXSx6WzFdLT1mWzFd
LEM9MikseSgpKX1mdW5jdGlvbiBwKCl7MzI9PVpvLmV2ZW50LmtleUNvZGUmJjI9PUMmJih6WzBd
Kz1sWzFdLHpbMV0rPWZbMV0sQz0wLHkoKSl9ZnVuY3Rpb24gdigpe3ZhciBuPVpvLm1vdXNlKF8p
LHU9ITE7TSYmKG5bMF0rPU1bMF0sblsxXSs9TVsxXSksQ3x8KFpvLmV2ZW50LmFsdEtleT8oeHx8
KHg9WyhsWzBdK2xbMV0pLzIsKGZbMF0rZlsxXSkvMl0pLHpbMF09bFsrKG5bMF08eFswXSldLHpb
MV09ZlsrKG5bMV08eFsxXSldKTp4PW51bGwpLEUmJmQobixjLDApJiYoZShTKSx1PSEwKSxBJiZk
KG4scywxKSYmKHIoUyksdT0hMCksdSYmKHQoUyksdyh7dHlwZToiYnJ1c2giLG1vZGU6Qz8ibW92
ZSI6InJlc2l6ZSJ9KSl9ZnVuY3Rpb24gZChuLHQsZSl7dmFyIHIsdSxhPVRpKHQpLGM9YVswXSxz
PWFbMV0scD16W2VdLHY9ZT9mOmwsZD12WzFdLXZbMF07cmV0dXJuIEMmJihjLT1wLHMtPWQrcCks
cj0oZT9nOmgpP01hdGgubWF4KGMsTWF0aC5taW4ocyxuW2VdKSk6bltlXSxDP3U9KHIrPXApK2Q6
KHgmJihwPU1hdGgubWF4KGMsTWF0aC5taW4ocywyKnhbZV0tcikpKSxyPnA/KHU9cixyPXApOnU9
cCksdlswXSE9cnx8dlsxXSE9dT8oZT9vPW51bGw6aT1udWxsLHZbMF09cix2WzFdPXUsITApOnZv
aWQgMH1mdW5jdGlvbiBtKCl7digpLFMuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc2Vs
ZWN0QWxsKCIucmVzaXplIikuc3R5bGUoImRpc3BsYXkiLG4uZW1wdHkoKT8ibm9uZSI6bnVsbCks
Wm8uc2VsZWN0KCJib2R5Iikuc3R5bGUoImN1cnNvciIsbnVsbCksTC5vbigibW91c2Vtb3ZlLmJy
dXNoIixudWxsKS5vbigibW91c2V1cC5icnVzaCIsbnVsbCkub24oInRvdWNobW92ZS5icnVzaCIs
bnVsbCkub24oInRvdWNoZW5kLmJydXNoIixudWxsKS5vbigia2V5ZG93bi5icnVzaCIsbnVsbCku
b24oImtleXVwLmJydXNoIixudWxsKSxOKCksdyh7dHlwZToiYnJ1c2hlbmQifSl9dmFyIHgsTSxf
PXRoaXMsYj1aby5zZWxlY3QoWm8uZXZlbnQudGFyZ2V0KSx3PWEub2YoXyxhcmd1bWVudHMpLFM9
Wm8uc2VsZWN0KF8pLGs9Yi5kYXR1bSgpLEU9IS9eKG58cykkLy50ZXN0KGspJiZjLEE9IS9eKGV8
dykkLy50ZXN0KGspJiZzLEM9Yi5jbGFzc2VkKCJleHRlbnQiKSxOPUkoKSx6PVpvLm1vdXNlKF8p
LEw9Wm8uc2VsZWN0KFdvKS5vbigia2V5ZG93bi5icnVzaCIsdSkub24oImtleXVwLmJydXNoIixw
KTtpZihaby5ldmVudC5jaGFuZ2VkVG91Y2hlcz9MLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLHYpLm9u
KCJ0b3VjaGVuZC5icnVzaCIsbSk6TC5vbigibW91c2Vtb3ZlLmJydXNoIix2KS5vbigibW91c2V1
cC5icnVzaCIsbSksUy5pbnRlcnJ1cHQoKS5zZWxlY3RBbGwoIioiKS5pbnRlcnJ1cHQoKSxDKXpb
MF09bFswXS16WzBdLHpbMV09ZlswXS16WzFdO2Vsc2UgaWYoayl7dmFyIFQ9Ky93JC8udGVzdChr
KSxxPSsvXm4vLnRlc3Qoayk7TT1bbFsxLVRdLXpbMF0sZlsxLXFdLXpbMV1dLHpbMF09bFtUXSx6
WzFdPWZbcV19ZWxzZSBaby5ldmVudC5hbHRLZXkmJih4PXouc2xpY2UoKSk7Uy5zdHlsZSgicG9p
bnRlci1ldmVudHMiLCJub25lIikuc2VsZWN0QWxsKCIucmVzaXplIikuc3R5bGUoImRpc3BsYXki
LG51bGwpLFpvLnNlbGVjdCgiYm9keSIpLnN0eWxlKCJjdXJzb3IiLGIuc3R5bGUoImN1cnNvciIp
KSx3KHt0eXBlOiJicnVzaHN0YXJ0In0pLHYoKX12YXIgaSxvLGE9TShuLCJicnVzaHN0YXJ0Iiwi
YnJ1c2giLCJicnVzaGVuZCIpLGM9bnVsbCxzPW51bGwsbD1bMCwwXSxmPVswLDBdLGg9ITAsZz0h
MCxwPXFzWzBdO3JldHVybiBuLmV2ZW50PWZ1bmN0aW9uKG4pe24uZWFjaChmdW5jdGlvbigpe3Zh
ciBuPWEub2YodGhpcyxhcmd1bWVudHMpLHQ9e3g6bCx5OmYsaTppLGo6b30sZT10aGlzLl9fY2hh
cnRfX3x8dDt0aGlzLl9fY2hhcnRfXz10LFNzP1pvLnNlbGVjdCh0aGlzKS50cmFuc2l0aW9uKCku
ZWFjaCgic3RhcnQuYnJ1c2giLGZ1bmN0aW9uKCl7aT1lLmksbz1lLmosbD1lLngsZj1lLnksbih7
dHlwZToiYnJ1c2hzdGFydCJ9KX0pLnR3ZWVuKCJicnVzaDpicnVzaCIsZnVuY3Rpb24oKXt2YXIg
ZT1ndShsLHQueCkscj1ndShmLHQueSk7cmV0dXJuIGk9bz1udWxsLGZ1bmN0aW9uKHUpe2w9dC54
PWUodSksZj10Lnk9cih1KSxuKHt0eXBlOiJicnVzaCIsbW9kZToicmVzaXplIn0pfX0pLmVhY2go
ImVuZC5icnVzaCIsZnVuY3Rpb24oKXtpPXQuaSxvPXQuaixuKHt0eXBlOiJicnVzaCIsbW9kZToi
cmVzaXplIn0pLG4oe3R5cGU6ImJydXNoZW5kIn0pfSk6KG4oe3R5cGU6ImJydXNoc3RhcnQifSks
bih7dHlwZToiYnJ1c2giLG1vZGU6InJlc2l6ZSJ9KSxuKHt0eXBlOiJicnVzaGVuZCJ9KSl9KX0s
bi54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQscD1xc1shYzw8MXwh
c10sbik6Y30sbi55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQscD1x
c1shYzw8MXwhc10sbik6c30sbi5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oYyYmcz8oaD0hIXRbMF0sZz0hIXRbMV0pOmM/aD0hIXQ6cyYmKGc9ISF0KSxuKTpjJiZz
P1toLGddOmM/aDpzP2c6bnVsbH0sbi5leHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGUscix1LGEsaDty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYyYmKGU9dFswXSxyPXRbMV0scyYmKGU9ZVswXSxyPXJb
MF0pLGk9W2Uscl0sYy5pbnZlcnQmJihlPWMoZSkscj1jKHIpKSxlPnImJihoPWUsZT1yLHI9aCks
KGUhPWxbMF18fHIhPWxbMV0pJiYobD1bZSxyXSkpLHMmJih1PXRbMF0sYT10WzFdLGMmJih1PXVb
MV0sYT1hWzFdKSxvPVt1LGFdLHMuaW52ZXJ0JiYodT1zKHUpLGE9cyhhKSksdT5hJiYoaD11LHU9
YSxhPWgpLCh1IT1mWzBdfHxhIT1mWzFdKSYmKGY9W3UsYV0pKSxuKTooYyYmKGk/KGU9aVswXSxy
PWlbMV0pOihlPWxbMF0scj1sWzFdLGMuaW52ZXJ0JiYoZT1jLmludmVydChlKSxyPWMuaW52ZXJ0
KHIpKSxlPnImJihoPWUsZT1yLHI9aCkpKSxzJiYobz8odT1vWzBdLGE9b1sxXSk6KHU9ZlswXSxh
PWZbMV0scy5pbnZlcnQmJih1PXMuaW52ZXJ0KHUpLGE9cy5pbnZlcnQoYSkpLHU+YSYmKGg9dSx1
PWEsYT1oKSkpLGMmJnM/W1tlLHVdLFtyLGFdXTpjP1tlLHJdOnMmJlt1LGFdKX0sbi5jbGVhcj1m
dW5jdGlvbigpe3JldHVybiBuLmVtcHR5KCl8fChsPVswLDBdLGY9WzAsMF0saT1vPW51bGwpLG59
LG4uZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hIWMmJmxbMF09PWxbMV18fCEhcyYmZlswXT09Zlsx
XX0sWm8ucmViaW5kKG4sYSwib24iKX07dmFyIFRzPXtuOiJucy1yZXNpemUiLGU6ImV3LXJlc2l6
ZSIsczoibnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3NlLXJlc2l6ZSIsbmU6Im5lc3ct
cmVzaXplIixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJlc2l6ZSJ9LHFzPVtbIm4iLCJlIiwi
cyIsInciLCJudyIsIm5lIiwic2UiLCJzdyJdLFsiZSIsInciXSxbIm4iLCJzIl0sW11dLFJzPVFh
LmZvcm1hdD1pYy50aW1lRm9ybWF0LERzPVJzLnV0YyxQcz1EcygiJVktJW0tJWRUJUg6JU06JVMu
JUxaIik7UnMuaXNvPURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nJiYrbmV3IERhdGUoIjIwMDAt
MDEtMDFUMDA6MDA6MDAuMDAwWiIpP0hvOlBzLEhvLnBhcnNlPWZ1bmN0aW9uKG4pe3ZhciB0PW5l
dyBEYXRlKG4pO3JldHVybiBpc05hTih0KT9udWxsOnR9LEhvLnRvU3RyaW5nPVBzLnRvU3RyaW5n
LFFhLnNlY29uZD1EdChmdW5jdGlvbihuKXtyZXR1cm4gbmV3IG5jKDFlMypNYXRoLmZsb29yKG4v
MWUzKSl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKG4uZ2V0VGltZSgpKzFlMypNYXRoLmZsb29y
KHQpKX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0U2Vjb25kcygpfSksUWEuc2Vjb25kcz1RYS5z
ZWNvbmQucmFuZ2UsUWEuc2Vjb25kcy51dGM9UWEuc2Vjb25kLnV0Yy5yYW5nZSxRYS5taW51dGU9
RHQoZnVuY3Rpb24obil7cmV0dXJuIG5ldyBuYyg2ZTQqTWF0aC5mbG9vcihuLzZlNCkpfSxmdW5j
dGlvbihuLHQpe24uc2V0VGltZShuLmdldFRpbWUoKSs2ZTQqTWF0aC5mbG9vcih0KSl9LGZ1bmN0
aW9uKG4pe3JldHVybiBuLmdldE1pbnV0ZXMoKX0pLFFhLm1pbnV0ZXM9UWEubWludXRlLnJhbmdl
LFFhLm1pbnV0ZXMudXRjPVFhLm1pbnV0ZS51dGMucmFuZ2UsUWEuaG91cj1EdChmdW5jdGlvbihu
KXt2YXIgdD1uLmdldFRpbWV6b25lT2Zmc2V0KCkvNjA7cmV0dXJuIG5ldyBuYygzNmU1KihNYXRo
LmZsb29yKG4vMzZlNS10KSt0KSl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKG4uZ2V0VGltZSgp
KzM2ZTUqTWF0aC5mbG9vcih0KSl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldEhvdXJzKCl9KSxR
YS5ob3Vycz1RYS5ob3VyLnJhbmdlLFFhLmhvdXJzLnV0Yz1RYS5ob3VyLnV0Yy5yYW5nZSxRYS5t
b250aD1EdChmdW5jdGlvbihuKXtyZXR1cm4gbj1RYS5kYXkobiksbi5zZXREYXRlKDEpLG59LGZ1
bmN0aW9uKG4sdCl7bi5zZXRNb250aChuLmdldE1vbnRoKCkrdCl9LGZ1bmN0aW9uKG4pe3JldHVy
biBuLmdldE1vbnRoKCl9KSxRYS5tb250aHM9UWEubW9udGgucmFuZ2UsUWEubW9udGhzLnV0Yz1R
YS5tb250aC51dGMucmFuZ2U7dmFyIFVzPVsxZTMsNWUzLDE1ZTMsM2U0LDZlNCwzZTUsOWU1LDE4
ZTUsMzZlNSwxMDhlNSwyMTZlNSw0MzJlNSw4NjRlNSwxNzI4ZTUsNjA0OGU1LDI1OTJlNiw3Nzc2
ZTYsMzE1MzZlNl0sanM9W1tRYS5zZWNvbmQsMV0sW1FhLnNlY29uZCw1XSxbUWEuc2Vjb25kLDE1
XSxbUWEuc2Vjb25kLDMwXSxbUWEubWludXRlLDFdLFtRYS5taW51dGUsNV0sW1FhLm1pbnV0ZSwx
NV0sW1FhLm1pbnV0ZSwzMF0sW1FhLmhvdXIsMV0sW1FhLmhvdXIsM10sW1FhLmhvdXIsNl0sW1Fh
LmhvdXIsMTJdLFtRYS5kYXksMV0sW1FhLmRheSwyXSxbUWEud2VlaywxXSxbUWEubW9udGgsMV0s
W1FhLm1vbnRoLDNdLFtRYS55ZWFyLDFdXSxIcz1Scy5tdWx0aShbWyIuJUwiLGZ1bmN0aW9uKG4p
e3JldHVybiBuLmdldE1pbGxpc2Vjb25kcygpfV0sWyI6JVMiLGZ1bmN0aW9uKG4pe3JldHVybiBu
LmdldFNlY29uZHMoKX1dLFsiJUk6JU0iLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldE1pbnV0ZXMo
KX1dLFsiJUkgJXAiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldEhvdXJzKCl9XSxbIiVhICVkIixm
dW5jdGlvbihuKXtyZXR1cm4gbi5nZXREYXkoKSYmMSE9bi5nZXREYXRlKCl9XSxbIiViICVkIixm
dW5jdGlvbihuKXtyZXR1cm4gMSE9bi5nZXREYXRlKCl9XSxbIiVCIixmdW5jdGlvbihuKXtyZXR1
cm4gbi5nZXRNb250aCgpfV0sWyIlWSIsd2VdXSksRnM9e3JhbmdlOmZ1bmN0aW9uKG4sdCxlKXty
ZXR1cm4gWm8ucmFuZ2UoTWF0aC5jZWlsKG4vZSkqZSwrdCxlKS5tYXAoT28pfSxmbG9vcjp3dCxj
ZWlsOnd0fTtqcy55ZWFyPVFhLnllYXIsUWEuc2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gRm8oWm8u
c2NhbGUubGluZWFyKCksanMsSHMpfTt2YXIgT3M9anMubWFwKGZ1bmN0aW9uKG4pe3JldHVybltu
WzBdLnV0YyxuWzFdXX0pLFlzPURzLm11bHRpKFtbIi4lTCIsZnVuY3Rpb24obil7cmV0dXJuIG4u
Z2V0VVRDTWlsbGlzZWNvbmRzKCl9XSxbIjolUyIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRD
U2Vjb25kcygpfV0sWyIlSTolTSIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDTWludXRlcygp
fV0sWyIlSSAlcCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDSG91cnMoKX1dLFsiJWEgJWQi
LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ0RheSgpJiYxIT1uLmdldFVUQ0RhdGUoKX1dLFsi
JWIgJWQiLGZ1bmN0aW9uKG4pe3JldHVybiAxIT1uLmdldFVUQ0RhdGUoKX1dLFsiJUIiLGZ1bmN0
aW9uKG4pe3JldHVybiBuLmdldFVUQ01vbnRoKCl9XSxbIiVZIix3ZV1dKTtPcy55ZWFyPVFhLnll
YXIudXRjLFFhLnNjYWxlLnV0Yz1mdW5jdGlvbigpe3JldHVybiBGbyhaby5zY2FsZS5saW5lYXIo
KSxPcyxZcyl9LFpvLnRleHQ9U3QoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVzcG9uc2VUZXh0fSks
Wm8uanNvbj1mdW5jdGlvbihuLHQpe3JldHVybiBrdChuLCJhcHBsaWNhdGlvbi9qc29uIixZbyx0
KX0sWm8uaHRtbD1mdW5jdGlvbihuLHQpe3JldHVybiBrdChuLCJ0ZXh0L2h0bWwiLElvLHQpfSxa
by54bWw9U3QoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVzcG9uc2VYTUx9KSwiZnVuY3Rpb24iPT10
eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShabyk6Im9iamVjdCI9PXR5cGVvZiBtb2R1
bGUmJm1vZHVsZS5leHBvcnRzJiYobW9kdWxlLmV4cG9ydHM9Wm8pLHRoaXMuZDM9Wm99KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvZ3JhcGguanMgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9ncmFwaC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMjFmNWY1ZDY2OWRlMDBmZWYzOWQyZTkyY2NiMzliYzA0NjU1YzFjCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIv
Z3JhcGguanMKQEAgLTAsMCArMSwxNDIgQEAKK2Z1bmN0aW9uIGdyYXBoKHNlbGVjdG9yLCBtYXJn
aW5zLCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpCit7CisgICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICBlbGVtZW50LmlubmVy
SFRNTCA9ICcnOworCisgICAgdmFyIHNpemUgPSBQb2ludC5lbGVtZW50Q2xpZW50U2l6ZShlbGVt
ZW50KS5zdWJ0cmFjdChtYXJnaW5zLnNpemUpOworCisgICAgdmFyIHggPSBkMy5zY2FsZS5saW5l
YXIoKQorICAgICAgICAgICAgLnJhbmdlKFswLCBzaXplLndpZHRoXSkKKyAgICAgICAgICAgIC5k
b21haW4oZDMuZXh0ZW50KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudGltZU9mZnNl
dDsgfSkpOyAgICAgICAgICAgIAorCisgICAgdmFyIHlMZWZ0ID0gZDMuc2NhbGUubGluZWFyKCkK
KyAgICAgICAgICAgIC5yYW5nZShbc2l6ZS5oZWlnaHQsIDBdKQorICAgICAgICAgICAgLmRvbWFp
bihbMCwgZDMubWF4KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVzWzBdOyB9
KV0pOworCisgICAgdmFyIHlSaWdodCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAu
cmFuZ2UoW3NpemUuaGVpZ2h0LCAwXSkKKyAgICAgICAgICAgIC5kb21haW4oWzAsIGQzLm1heChz
YW1wbGVzLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnZhbHVlc1sxXTsgfSldKTsKKworICAgIHZh
ciB4QXhpcyA9IGQzLnN2Zy5heGlzKCkKKyAgICAgICAgICAgIC5zY2FsZSh4KQorICAgICAgICAg
ICAgLm9yaWVudCgiYm90dG9tIik7CisKKyAgICB2YXIgeUF4aXNMZWZ0ID0gZDMuc3ZnLmF4aXMo
KQorICAgICAgICAgICAgLnNjYWxlKHlMZWZ0KQorICAgICAgICAgICAgLm9yaWVudCgibGVmdCIp
OworCisgICAgdmFyIHlBeGlzUmlnaHQgPSBkMy5zdmcuYXhpcygpCisgICAgICAgICAgICAuc2Nh
bGUoeVJpZ2h0KQorICAgICAgICAgICAgLm9yaWVudCgicmlnaHQiKTsKKworICAgIHZhciBsaW5l
TGVmdCA9IGQzLnN2Zy5saW5lKCkKKyAgICAgICAgICAgIC54KGZ1bmN0aW9uKGQpIHsgcmV0dXJu
IHgoZC50aW1lT2Zmc2V0KTsgfSkKKyAgICAgICAgICAgIC55KGZ1bmN0aW9uKGQpIHsgcmV0dXJu
IHlMZWZ0KGQudmFsdWVzWzBdKTsgfSk7CisKKyAgICB2YXIgbGluZVJpZ2h0ID0gZDMuc3ZnLmxp
bmUoKQorICAgICAgICAgICAgLngoZnVuY3Rpb24oZCkgeyByZXR1cm4geChkLnRpbWVPZmZzZXQp
OyB9KQorICAgICAgICAgICAgLnkoZnVuY3Rpb24oZCkgeyByZXR1cm4geVJpZ2h0KGQudmFsdWVz
WzFdKTsgfSk7CisKKyAgICBzYW1wbGVzLmZvckVhY2goZnVuY3Rpb24oZCkgeworICAgICAgICBk
LnRpbWVPZmZzZXQgPSArZC50aW1lT2Zmc2V0OworICAgICAgICBkLnZhbHVlc1swXSA9ICtkLnZh
bHVlc1swXTsKKyAgICAgICAgZC52YWx1ZXNbMV0gPSArZC52YWx1ZXNbMV07ICAgICAgICAKKyAg
ICB9KTsgICAgCisKKyAgICB2YXIgc2FtcGxlZFNhbXBsZXMgPSBzYW1wbGVzLmZpbHRlcihmdW5j
dGlvbihkKSB7CisgICAgICAgIHJldHVybiBkLnRpbWVPZmZzZXQgPj0gc2FtcGxpbmdUaW1lT2Zm
c2V0OworICAgIH0pOworICAgIAorICAgIHZhciBtZWFuTGVmdCA9IGQzLm1lYW4oc2FtcGxlZFNh
bXBsZXMsIGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgcmV0dXJuICtkLnZhbHVlc1swXTsKKyAgICB9
KTsKKworICAgIHZhciBtZWFuUmlnaHQgPSBkMy5tZWFuKHNhbXBsZWRTYW1wbGVzLCBmdW5jdGlv
bihkKSB7CisgICAgICAgIHJldHVybiArZC52YWx1ZXNbMV07CisgICAgfSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCisgICAgdmFyIHN2ZyA9IGQzLnNlbGVjdChzZWxlY3RvcikuYXBw
ZW5kKCJzdmciKQorICAgICAgICAuYXR0cigid2lkdGgiLCBzaXplLndpZHRoICsgbWFyZ2lucy5s
ZWZ0ICsgbWFyZ2lucy5yaWdodCkKKyAgICAgICAgLmF0dHIoImhlaWdodCIsIHNpemUuaGVpZ2h0
ICsgbWFyZ2lucy50b3AgKyBtYXJnaW5zLmJvdHRvbSkKKyAgICAgICAgLmFwcGVuZCgiZyIpCisg
ICAgICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgbWFyZ2lucy5sZWZ0
ICsgIiwiICsgbWFyZ2lucy50b3AgKyAiKSIpOworCisgICAgLy8geC1heGlzCisgICAgc3ZnLmFw
cGVuZCgiZyIpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJ4IGF4aXMiKQorICAgICAgICAuYXR0
cigiZmlsbCIsICJyZ2IoMjM1LCAyMzUsIDIzNSkiKQorICAgICAgICAuYXR0cigidHJhbnNmb3Jt
IiwgInRyYW5zbGF0ZSgwLCIgKyBzaXplLmhlaWdodCArICIpIikKKyAgICAgICAgLmNhbGwoeEF4
aXMpCisgICAgICAgIC5hcHBlbmQoInRleHQiKQorICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwg
ImxhYmVsIikKKyAgICAgICAgICAgIC5hdHRyKCJ4Iiwgc2l6ZS53aWR0aCkKKyAgICAgICAgICAg
IC5hdHRyKCJ5IiwgLTYpCisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJyZ2IoMjM1LCAyMzUs
IDIzNSkiKQorICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQorICAgICAg
ICAgICAgLnRleHQoInRpbWUiKTsKKyAgICAgICAgICAgICAgICAgCisgICAgLy8geUxlZnQtYXhp
cworICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAieSBheGlzIikK
KyAgICAgICAgLmF0dHIoImZpbGwiLCAiIzdBREQ0OSIpCisgICAgICAgIC5jYWxsKHlBeGlzTGVm
dCkKKyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAi
bGFiZWwiKQorICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCisg
ICAgICAgICAgICAuYXR0cigieSIsIDYpCisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICIjN0FE
RDQ5IikKKyAgICAgICAgICAgIC5hdHRyKCJkeSIsICIuNzFlbSIpCisgICAgICAgICAgICAuc3R5
bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAudGV4dChheGVzWzBdKTsKKwor
ICAgIC8vIHlSaWdodC1heGlzCisgICAgc3ZnLmFwcGVuZCgiZyIpCisgICAgICAgIC5hdHRyKCJj
bGFzcyIsICJ5IGF4aXMiKQorICAgICAgICAuYXR0cigiZmlsbCIsICIjRkE0OTI1IikKKyAgICAg
ICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIHNpemUud2lkdGggKyAiLCAwKSIp
CisgICAgICAgIC5jYWxsKHlBeGlzUmlnaHQpCisgICAgICAgIC5hcHBlbmQoInRleHQiKQorICAg
ICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAgICAgIC5hdHRyKCJ0cmFu
c2Zvcm0iLCAicm90YXRlKC05MCkiKQorICAgICAgICAgICAgLmF0dHIoInkiLCA2KQorICAgICAg
ICAgICAgLmF0dHIoImZpbGwiLCAiI0ZBNDkyNSIpCisgICAgICAgICAgICAuYXR0cigiZHkiLCAi
LjcxZW0iKQorICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQorICAgICAg
ICAgICAgLnRleHQoYXhlc1sxXSk7CisKKyAgICAvLyBsZWZ0LW1lYW4KKyAgICBzdmcuYXBwZW5k
KCJzdmc6bGluZSIpCisgICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkpCisgICAgICAgIC5hdHRyKCJ4
MiIsIHNpemUud2lkdGgpCisgICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0KG1lYW5MZWZ0KSkKKyAg
ICAgICAgLmF0dHIoInkyIiwgeUxlZnQobWVhbkxlZnQpKQorICAgICAgICAuYXR0cigiY2xhc3Mi
LCAibGVmdC1tZWFuIik7CisKKyAgICAvLyByaWdodC1tZWFuCisgICAgc3ZnLmFwcGVuZCgic3Zn
OmxpbmUiKQorICAgICAgICAuYXR0cigieDEiLCB4KDApKQorICAgICAgICAuYXR0cigieDIiLCBz
aXplLndpZHRoKQorICAgICAgICAuYXR0cigieTEiLCB5UmlnaHQobWVhblJpZ2h0KSkKKyAgICAg
ICAgLmF0dHIoInkyIiwgeVJpZ2h0KG1lYW5SaWdodCkpCisgICAgICAgIC5hdHRyKCJjbGFzcyIs
ICJyaWdodC1tZWFuIik7ICAgICAgICAKKworICAgIC8vIHNhbXBsaW5nVGltZU9mZnNldAorICAg
IHN2Zy5hcHBlbmQoImxpbmUiKQorICAgICAgICAuYXR0cigieDEiLCB4KHNhbXBsaW5nVGltZU9m
ZnNldCkpCisgICAgICAgIC5hdHRyKCJ4MiIsIHgoc2FtcGxpbmdUaW1lT2Zmc2V0KSkKKyAgICAg
ICAgLmF0dHIoInkxIiwgeUxlZnQoMCkpCisgICAgICAgIC5hdHRyKCJ5MiIsIHlMZWZ0KHlBeGlz
TGVmdC5zY2FsZSgpLmRvbWFpbigpWzFdKSkKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInNhbXBs
ZS10aW1lIik7CisKKyAgICAvLyBsZWZ0LXNhbXBsZXMKKyAgICBzdmcuYXBwZW5kKCJwYXRoIikK
KyAgICAgICAgLmRhdHVtKHNhbXBsZXMpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJsZWZ0LXNh
bXBsZXMiKQorICAgICAgICAuYXR0cigiZCIsIGxpbmVMZWZ0KTsKKyAgICAgICAgCisgICAgLy8g
cmlnaHQtc2FtcGxlcworICAgIHN2Zy5hcHBlbmQoInBhdGgiKQorICAgICAgICAuZGF0dW0oc2Ft
cGxlcykKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInJpZ2h0LXNhbXBsZXMiKQorICAgICAgICAu
YXR0cigiZCIsIGxpbmVSaWdodCk7Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL3Rlc3RzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFiYWViNmIzZmM5ZDdkMmVjMzBlOGUwYmRiZGM5NDE3ZWJiZGM1NzAKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90
ZXN0cy5qcwpAQCAtMCwwICsxLDI1MyBAQAorVXRpbGl0aWVzLmV4dGVuZE9iamVjdChIZWFkZXJz
LCB7CisgICAgZGV0YWlsczogWworICAgICAgICB7CisgICAgICAgICAgICB0aXRsZTogU3RyaW5n
cy50ZXh0LnJlc3VsdHMuZ3JhcGgKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
dGl0bGU6IFN0cmluZ3MudGV4dC5leHBlcmltZW50cy5jb21wbGV4aXR5LAorICAgICAgICAgICAg
Y2hpbGRyZW46CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICB0ZXh0OiBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZGF0YVtTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0eV1bU3RyaW5ncy5q
c29uLm1lYXN1cmVtZW50cy5hdmVyYWdlXS50b0ZpeGVkKDIpOworICAgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJhdmVyYWdlIgorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0ZXh0OiBm
dW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICLCsSAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFbU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmNvbXBsZXhpdHldW1N0cmluZ3MuanNvbi5t
ZWFzdXJlbWVudHMucGVyY2VudF0udG9GaXhlZCgyKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiJSIKKyAgICAgICAgICAgICAgICAgICAgICAgIF0uam9pbigiIik7CisgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogZnVuY3Rpb24oZGF0
YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICJzdGRldiI7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW1N0cmluZ3MuanNvbi5leHBlcmltZW50
cy5jb21wbGV4aXR5XVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLnBlcmNlbnRdID49IDEwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArPSAiIG5vaXN5LXJlc3VsdHMi
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgdGl0bGU6IFN0cmluZ3MudGV4dC5leHBlcmltZW50cy5m
cmFtZVJhdGUsCisgICAgICAgICAgICBjaGlsZHJlbjoKKyAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHRleHQ6IGZ1bmN0aW9uKGRhdGEpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhW1N0cmluZ3MuanNvbi5leHBlcmltZW50
cy5mcmFtZVJhdGVdW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFnZV0udG9GaXhlZCgy
KTsKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1l
OiBmdW5jdGlvbihkYXRhLCBvcHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
Y2xhc3NOYW1lID0gImF2ZXJhZ2UiOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGgu
YWJzKGRhdGFbU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZV1bU3RyaW5ncy5qc29u
Lm1lYXN1cmVtZW50cy5hdmVyYWdlXSAtIG9wdGlvbnNbImZyYW1lLXJhdGUiXSkgPj0gMikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUgKz0gIiBub2lzeS1yZXN1bHRzIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGFzc05hbWU7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGV4dDogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGZyYW1lUmF0ZURhdGEgPSBkYXRhW1N0cmluZ3MuanNvbi5leHBlcmltZW50cy5mcmFt
ZVJhdGVdOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiwrEgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZVJh
dGVEYXRhW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMucGVyY2VudF0udG9GaXhlZCgyKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIKKyAgICAgICAgICAgICAgICAgICAgICAgIF0u
am9pbigiIik7CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGNs
YXNzTmFtZTogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNs
YXNzTmFtZSA9ICJzdGRldiI7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW1N0
cmluZ3MuanNvbi5leHBlcmltZW50cy5mcmFtZVJhdGVdW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVu
dHMucGVyY2VudF0gPj0gMTApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1l
ICs9ICIgbm9pc3ktcmVzdWx0cyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xh
c3NOYW1lOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgXQorICAgICAgICB9LAorICAgIF0KK30pCisKKy8vLy8vLy8vLy8vCisvLyBTdWl0ZXMK
KworU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJIVE1MIHN1aXRlIiwKKyAgICBbCisgICAgICAgIHsg
CisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBl
cy5odG1sP3BhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwK
KyAgICAgICAgICAgIG5hbWU6ICJDU1MgYm91bmNpbmcgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAg
ICAgICAgeyAKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
c3Mtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1y
ZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGNsaXBwZWQg
cmVjdHMiCisgICAgICAgIH0sCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICJib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NTAmcGFy
dGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAg
bmFtZTogIkNTUyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVzIgorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWlt
YWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4v
cmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5n
IFNWRyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImJv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04
MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwK
KyAgICAgICAgICAgIG5hbWU6ICJDU1MgYm91bmNpbmcgUE5HIGltYWdlcyIKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAidGV4dC9sYXllcmluZy10ZXh0Lmh0bWwiLAor
ICAgICAgICAgICAgbmFtZTogIkNTUyBsYXllcmluZyB0ZXh0IgorICAgICAgICB9LAorICAgIF0K
KykpOworCitTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkNhbnZhcyBzdWl0ZSIsCisgICAgWworICAg
ICAgICB7IAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNh
bnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBl
PWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNpcmNsZXMiCisg
ICAgICAgIH0sCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVI
ZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAgICAgICAgbmFtZTogImNhbnZh
cyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIgorICAgICAgICB9LAorICAgICAgICB7IAorICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRt
bD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdy
YWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgZ3JhZGllbnQgY2ly
Y2xlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZw
YXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAg
ICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5n
LWNhbnZhcy1pbWFnZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmlt
YWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTogImNh
bnZhcyBib3VuY2luZyBQTkcgaW1hZ2VzIgorICAgICAgICB9LAorICAgIF0KKykpOworCitTdWl0
ZXMucHVzaChuZXcgU3VpdGUoIlNWRyBzdWl0ZSIsCisgICAgWworICAgICAgICB7CisgICAgICAg
ICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP3Bh
cnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAg
ICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgY2lyY2xlcyIsCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVz
Lmh0bWw/cGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9
c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiLAor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWln
aHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogIlNW
RyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1s
P3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2Vz
L3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFNWRyBpbWFn
ZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0aWNs
ZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKKyAgICAgICAg
ICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgUE5HIGltYWdlcyIKKyAgICAgICAgfSwKKyAgICBdCisp
KTsKKworU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJCYXNpYyBjYW52YXMgcGF0aCBzdWl0ZSIsCisg
ICAgWworICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1w
YXRocy5odG1sP3BhdGhUeXBlPWxpbmUmbGluZUNhcD1idXR0IiwKKyAgICAgICAgICAgIG5hbWU6
ICJDYW52YXMgbGluZSBzZWdtZW50cywgYnV0dCBjYXBzIgorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhU
eXBlPWxpbmUmbGluZUNhcD1yb3VuZCIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGxpbmUg
c2VnbWVudHMsIHJvdW5kIGNhcHMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
IHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZSZsaW5l
Q2FwPXNxdWFyZSIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGxpbmUgc2VnbWVudHMsIHNx
dWFyZSBjYXBzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1w
bGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWxpbmVQYXRoJmxpbmVKb2luPWJl
dmVsIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgbGluZSBwYXRoLCBiZXZlbCBqb2luIgor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNh
bnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWxpbmVQYXRoJmxpbmVKb2luPXJvdW5kIiwKKyAgICAg
ICAgICAgIG5hbWU6ICJDYW52YXMgbGluZSBwYXRoLCByb3VuZCBqb2luIgorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5o
dG1sP3BhdGhUeXBlPWxpbmVQYXRoJmxpbmVKb2luPW1pdGVyIiwKKyAgICAgICAgICAgIG5hbWU6
ICJDYW52YXMgbGluZSBwYXRoLCBtaXRlciBqb2luIgorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBl
PWxpbmVQYXRoJmxpbmVEYXNoPTEiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHBh
dGggd2l0aCBkYXNoIHBhdHRlcm4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
IHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9cXVhZHJhdGlj
IiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgcXVhZHJhdGljIHNlZ21lbnRzIgorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1w
YXRocy5odG1sP3BhdGhUeXBlPXF1YWRyYXRpY1BhdGgiLAorICAgICAgICAgICAgbmFtZTogIkNh
bnZhcyBxdWFkcmF0aWMgcGF0aCIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
dXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1iZXppZXIiLAor
ICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBiZXppZXIgc2VnbWVudHMiCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0
bWw/cGF0aFR5cGU9YmV6aWVyUGF0aCIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGJlemll
ciBwYXRoIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUv
c2ltcGxlLWNhbnZhcy1wYXRocy5odG1sPyZwYXRoVHlwZT1hcmNUbyIsCisgICAgICAgICAgICBu
YW1lOiAiQ2FudmFzIGFyY1RvIHNlZ21lbnRzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWFy
YyIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGFyYyBzZWdtZW50cyIKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMu
aHRtbD9wYXRoVHlwZT1yZWN0IiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgcmVjdHMiCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2Fu
dmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZUZpbGwiLAorICAgICAgICAgICAgbmFtZTogIkNh
bnZhcyBsaW5lIHBhdGgsIGZpbGwiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
IHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9cXVhZHJhdGlj
RmlsbCIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIHF1YWRyYXRpYyBwYXRoLCBmaWxsIgor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNh
bnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWJlemllckZpbGwiLAorICAgICAgICAgICAgbmFtZTog
IkNhbnZhcyBiZXppZXIgcGF0aCwgZmlsbCIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD8mcGF0aFR5cGU9YXJj
VG9GaWxsIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgYXJjVG8gc2VnbWVudHMsIGZpbGwi
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUt
Y2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9YXJjRmlsbCIsCisgICAgICAgICAgICBuYW1lOiAi
Q2FudmFzIGFyYyBzZWdtZW50cywgZmlsbCIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1yZWN0
RmlsbCIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIHJlY3RzLCBmaWxsIgorICAgICAgICB9
CisgICAgXQorKSk7CisKK1N1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiTWlzY2VsbGFuZW91cyBUZXN0
cyIsCisgICAgWworICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJtaXNjL2NvbXBvc2l0aW5n
LXRyYW5zZm9ybXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJmZpbHRl
cnM9eWVzJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAg
bmFtZTogIkNvbXBvc2l0ZWQgVHJhbnNmb3JtcyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgdXJsOiAiZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sIiwKKyAgICAgICAg
ICAgIG5hbWU6ICJjYW52YXMgZWxlY3Ryb25zIgorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICB1cmw6ICJleGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbCIsCisgICAgICAgICAgICBu
YW1lOiAiY2FudmFzIHN0YXJzIgorICAgICAgICB9LAorICAgIF0KKykpOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCmluZGV4IDU2
NmRjOGRmZDI3M2FiNjlhNmI2MmE1NTRlN2RlMjA1ZmEyNzczNGUuLmZmNDMzNGJjYWM3ZGYxZDky
N2ExM2I4NDQxODNmMjAzOGQ3MDQwMmYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKQEAgLTEsMyArMSw1MSBAQAorQXJyYXku
cHJvdG90eXBlLnN3YXAgPSBmdW5jdGlvbihpLCBqKQoreworICAgIHZhciB0ID0gdGhpc1tpXTsK
KyAgICB0aGlzW2ldID0gdGhpc1tqXTsKKyAgICB0aGlzW2pdID0gdDsKKyAgICByZXR1cm4gdGhp
czsKK30KKworaWYgKCFBcnJheS5wcm90b3R5cGUuZmlsbCkgIHsKKyAgICBBcnJheS5wcm90b3R5
cGUuZmlsbCA9IGZ1bmN0aW9uKHZhbHVlKSB7CisKKyAgICAgICAgdmFyIG9iamVjdCA9IE9iamVj
dCh0aGlzKTsKKyAgICAgICAgdmFyIGxlbiA9IHBhcnNlSW50KG9iamVjdC5sZW5ndGgsIDEwKTsK
KyAgICAgICAgdmFyIHN0YXJ0ID0gYXJndW1lbnRzWzFdOworICAgICAgICB2YXIgcmVsYXRpdmVT
dGFydCA9IHBhcnNlSW50KHN0YXJ0LCAxMCkgfHwgMDsKKyAgICAgICAgdmFyIGsgPSByZWxhdGl2
ZVN0YXJ0IDwgMCA/IE1hdGgubWF4KGxlbiArIHJlbGF0aXZlU3RhcnQsIDApIDogTWF0aC5taW4o
cmVsYXRpdmVTdGFydCwgbGVuKTsKKyAgICAgICAgdmFyIGVuZCA9IGFyZ3VtZW50c1syXTsKKyAg
ICAgICAgdmFyIHJlbGF0aXZlRW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiAocGFyc2VJ
bnQoZW5kKSB8fCAwKSA7CisgICAgICAgIHZhciBmaW5hbCA9IHJlbGF0aXZlRW5kIDwgMCA/IE1h
dGgubWF4KGxlbiArIHJlbGF0aXZlRW5kLCAwKSA6IE1hdGgubWluKHJlbGF0aXZlRW5kLCBsZW4p
OworCisgICAgICAgIGZvciAoOyBrIDwgZmluYWw7IGsrKykgeworICAgICAgICAgICAgb2JqZWN0
W2tdID0gdmFsdWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH07
Cit9CisKK2lmICghQXJyYXkucHJvdG90eXBlLmZpbmQpIHsKKyAgICBBcnJheS5wcm90b3R5cGUu
ZmluZCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkgeworICAgICAgICBpZiAodGhpcyA9PT0gbnVsbCkK
KyAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FycmF5LnByb3RvdHlwZS5maW5kIGNh
bGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZCcpOworICAgICAgICBpZiAodHlwZW9mIHByZWRpY2F0
ZSAhPT0gJ2Z1bmN0aW9uJykKKyAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ByZWRp
Y2F0ZSBtdXN0IGJlIGEgZnVuY3Rpb24nKTsKKyAgICAgICAgdmFyIGxpc3QgPSBPYmplY3QodGhp
cyk7CisgICAgICAgIHZhciBsZW5ndGggPSBsaXN0Lmxlbmd0aCA+Pj4gMDsKKyAgICAgICAgdmFy
IHRoaXNBcmcgPSBhcmd1bWVudHNbMV07CisgICAgICAgIHZhciB2YWx1ZTsKKworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGxp
c3RbaV07CisgICAgICAgICAgICBpZiAocHJlZGljYXRlLmNhbGwodGhpc0FyZywgdmFsdWUsIGks
IGxpc3QpKQorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gdW5kZWZpbmVkOworICAgIH07Cit9CisKIGZ1bmN0aW9uIFBvaW50KHgsIHkpCiB7
CiAgICAgdGhpcy54ID0geDsKQEAgLTEzNCw3ICsxODIsNyBAQCBTaW1wbGVQcm9taXNlLnByb3Rv
dHlwZS5yZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKQogCiB3aW5kb3cuRG9jdW1lbnRFeHRlbnNp
b24gPQogewotICAgIGNyZWF0ZUVsZW1lbnQgOiBmdW5jdGlvbihuYW1lLCBhdHRycywgcGFyZW50
RWxlbWVudCkKKyAgICBjcmVhdGVFbGVtZW50OiBmdW5jdGlvbihuYW1lLCBhdHRycywgcGFyZW50
RWxlbWVudCkKICAgICB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudChuYW1lKTsKIApAQCAtMTkxLDYgKzIzOSw3IEBAIFByb2dyZXNzQmFyLnByb3RvdHlwZSA9
CiBmdW5jdGlvbiBSZXN1bHRzRGFzaGJvYXJkKCkKIHsKICAgICB0aGlzLl9pdGVyYXRpb25zU2Ft
cGxlcnMgPSBbXTsKKyAgICB0aGlzLl9wcm9jZXNzZWREYXRhID0gdW5kZWZpbmVkOwogfQogCiBS
ZXN1bHRzRGFzaGJvYXJkLnByb3RvdHlwZSA9CkBAIC0yMDAsNyArMjQ5LDcgQEAgUmVzdWx0c0Rh
c2hib2FyZC5wcm90b3R5cGUgPQogICAgICAgICB0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMucHVz
aChzdWl0ZXNTYW1wbGVycyk7ICAgICAgICAKICAgICB9LAogICAgIAotICAgIHRvSlNPTjogZnVu
Y3Rpb24oc3RhdGlzdGljcywgZ3JhcGgpCisgICAgX3Byb2Nlc3NEYXRhOiBmdW5jdGlvbihzdGF0
aXN0aWNzLCBncmFwaCkKICAgICB7CiAgICAgICAgIHZhciBpdGVyYXRpb25zUmVzdWx0cyA9IFtd
OwogICAgICAgICB2YXIgaXRlcmF0aW9uc1Njb3JlcyA9IFtdOwpAQCAtMjM0LDEwICsyODMsMjIg
QEAgUmVzdWx0c0Rhc2hib2FyZC5wcm90b3R5cGUgPQogICAgICAgICAgICAgaXRlcmF0aW9uc1Nj
b3Jlcy5wdXNoKGl0ZXJhdGlvbnNSZXN1bHRzW2luZGV4XVtTdHJpbmdzLmpzb24uc2NvcmVdKTsK
ICAgICAgICAgfSk7CiAKLSAgICAgICAgdmFyIGpzb24gPSB7fTsKLSAgICAgICAganNvbltTdHJp
bmdzLmpzb24uc2NvcmVdID0gU3RhdGlzdGljcy5zYW1wbGVNZWFuKGl0ZXJhdGlvbnNTY29yZXMu
bGVuZ3RoLCBpdGVyYXRpb25zU2NvcmVzLnJlZHVjZShmdW5jdGlvbihhLCBiKSB7IHJldHVybiBh
ICogYjsgfSkpOwotICAgICAgICBqc29uW1N0cmluZ3MuanNvbi5yZXN1bHRzLml0ZXJhdGlvbnNd
ID0gaXRlcmF0aW9uc1Jlc3VsdHM7Ci0gICAgICAgIHJldHVybiBqc29uOworICAgICAgICB0aGlz
Ll9wcm9jZXNzZWREYXRhID0ge307CisgICAgICAgIHRoaXMuX3Byb2Nlc3NlZERhdGFbU3RyaW5n
cy5qc29uLnNjb3JlXSA9IFN0YXRpc3RpY3Muc2FtcGxlTWVhbihpdGVyYXRpb25zU2NvcmVzLmxl
bmd0aCwgaXRlcmF0aW9uc1Njb3Jlcy5yZWR1Y2UoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYSAq
IGI7IH0pKTsKKyAgICAgICAgdGhpcy5fcHJvY2Vzc2VkRGF0YVtTdHJpbmdzLmpzb24ucmVzdWx0
cy5pdGVyYXRpb25zXSA9IGl0ZXJhdGlvbnNSZXN1bHRzOworICAgIH0sCisKKyAgICBnZXQgZGF0
YSgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcHJvY2Vzc2VkRGF0YSkKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLl9wcm9jZXNzZWREYXRhOworICAgICAgICB0aGlzLl9wcm9jZXNzRGF0YSh0
cnVlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NlZERhdGE7CisgICAgfSwK
KworICAgIGdldCBzY29yZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5kYXRhW1N0cmlu
Z3MuanNvbi5zY29yZV07CiAgICAgfQogfQogCkBAIC0yNDUsNiArMzA2LDE1IEBAIGZ1bmN0aW9u
IFJlc3VsdHNUYWJsZShlbGVtZW50LCBoZWFkZXJzKQogewogICAgIHRoaXMuZWxlbWVudCA9IGVs
ZW1lbnQ7CiAgICAgdGhpcy5faGVhZGVycyA9IGhlYWRlcnM7CisKKyAgICB0aGlzLl9mbGF0dGVu
ZWRIZWFkZXJzID0gW107CisgICAgdGhpcy5faGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGhlYWRl
cikgeworICAgICAgICBpZiAoaGVhZGVyLmNoaWxkcmVuKQorICAgICAgICAgICAgdGhpcy5fZmxh
dHRlbmVkSGVhZGVycyA9IHRoaXMuX2ZsYXR0ZW5lZEhlYWRlcnMuY29uY2F0KGhlYWRlci5jaGls
ZHJlbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2ZsYXR0ZW5lZEhlYWRlcnMu
cHVzaChoZWFkZXIpOworICAgIH0sIHRoaXMpOworCiAgICAgdGhpcy5jbGVhcigpOwogfQogCkBA
IC0yNTUsMTEyICszMjUsNDkgQEAgUmVzdWx0c1RhYmxlLnByb3RvdHlwZSA9CiAgICAgICAgIHRo
aXMuZWxlbWVudC5pbm5lckhUTUwgPSAiIjsKICAgICB9LAogCi0gICAgX3Nob3dIZWFkZXJSb3c6
IGZ1bmN0aW9uKHJvdywgcXVldWUsIGhlYWRlcnMsIG1lc3NhZ2UpCi0gICAgewotICAgICAgICBo
ZWFkZXJzLmZvckVhY2goZnVuY3Rpb24gKGhlYWRlcikgewotICAgICAgICAgICAgdmFyIHRoID0g
RG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidGgiLCB7fSwgcm93KTsKLSAgICAgICAg
ICAgIHRoLnRleHRDb250ZW50ID0gaGVhZGVyLnRleHQ7Ci0gICAgICAgICAgICBpZiAodHlwZW9m
IG1lc3NhZ2UgIT0gInVuZGVmaW5lZCIgJiYgbWVzc2FnZS5sZW5ndGgpIHsKLSAgICAgICAgICAg
ICAgICB0aC5pbm5lckhUTUwgKz0gIjxicj4iICsgJ1snICsgbWVzc2FnZSArJ10nOwotICAgICAg
ICAgICAgICAgIG1lc3NhZ2UgPSAiIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgi
d2lkdGgiIGluIGhlYWRlcikKLSAgICAgICAgICAgICAgICB0aC53aWR0aCA9IGhlYWRlci53aWR0
aCArICIlIjsKLSAgICAgICAgICAgIHF1ZXVlLnB1c2goe2VsZW1lbnQ6IHRoLCBoZWFkZXJzOiBo
ZWFkZXIuY2hpbGRyZW4gfSk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfc2hvd0hlYWRl
cjogZnVuY3Rpb24obWVzc2FnZSkKKyAgICBfYWRkSGVhZGVyOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICB2YXIgdGhlYWQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ0aGVh
ZCIsIHt9LCB0aGlzLmVsZW1lbnQpOwogICAgICAgICB2YXIgcm93ID0gRG9jdW1lbnRFeHRlbnNp
b24uY3JlYXRlRWxlbWVudCgidHIiLCB7fSwgdGhlYWQpOwogCi0gICAgICAgIHZhciBxdWV1ZSA9
IFtdOwotICAgICAgICB0aGlzLl9zaG93SGVhZGVyUm93KHJvdywgcXVldWUsIHRoaXMuX2hlYWRl
cnMsIG1lc3NhZ2UpOwotCi0gICAgICAgIHdoaWxlIChxdWV1ZS5sZW5ndGgpIHsKLSAgICAgICAg
ICAgIHZhciByb3cgPSBudWxsOwotICAgICAgICAgICAgdmFyIGVudHJpZXMgPSBbXTsKLQotICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHF1ZXVlLmxlbmd0aDsgaSA8IGxlbjsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gcXVldWUuc2hpZnQoKTsKLQotICAgICAg
ICAgICAgICAgIGlmICghZW50cnkuaGVhZGVycy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZW50cmllcy5wdXNoKGVudHJ5LmVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXJvdykKLSAg
ICAgICAgICAgICAgICAgICAgcm93ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgi
dHIiLCB7fSwgdGhlYWQpOwotCi0gICAgICAgICAgICAgICAgdGhpcy5fc2hvd0hlYWRlclJvdyhy
b3csIHF1ZXVlLCBlbnRyeS5oZWFkZXJzLCAiIik7Ci0gICAgICAgICAgICAgICAgZW50cnkuZWxl
bWVudC5jb2xTcGFuID0gZW50cnkuaGVhZGVycy5sZW5ndGg7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmIChyb3cpIHsKLSAgICAgICAgICAgICAgICBlbnRyaWVzLmZvckVhY2goZnVu
Y3Rpb24oZW50cnkpIHsKLSAgICAgICAgICAgICAgICAgICAgKytlbnRyeS5yb3dTcGFuOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLSAgICAK
LSAgICBfc2hvd0VtcHR5Q2VsbDogZnVuY3Rpb24ocm93LCBjbGFzc05hbWUpCi0gICAgewotICAg
ICAgICByZXR1cm4gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidGQiLCB7IGNsYXNz
OiBjbGFzc05hbWUgfSwgcm93KTsKLSAgICB9LAotCi0gICAgX3Nob3dUZXh0OiBmdW5jdGlvbihy
b3csIHRleHQsIGNsYXNzTmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciB0ZCA9IERvY3VtZW50RXh0
ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoInRkIiwgeyBjbGFzczogY2xhc3NOYW1lIH0sIHJvdyk7Ci0g
ICAgICAgIHRkLnRleHRDb250ZW50ID0gdGV4dDsKKyAgICAgICAgdGhpcy5faGVhZGVycy5mb3JF
YWNoKGZ1bmN0aW9uIChoZWFkZXIpIHsKKyAgICAgICAgICAgIHZhciB0aCA9IERvY3VtZW50RXh0
ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoInRoIiwge30sIHJvdyk7CisgICAgICAgICAgICBpZiAoaGVh
ZGVyLnRpdGxlICE9IFN0cmluZ3MudGV4dC5yZXN1bHRzLmdyYXBoKQorICAgICAgICAgICAgICAg
IHRoLnRleHRDb250ZW50ID0gaGVhZGVyLnRpdGxlOworICAgICAgICAgICAgaWYgKGhlYWRlci5j
aGlsZHJlbikKKyAgICAgICAgICAgICAgICB0aC5jb2xTcGFuID0gaGVhZGVyLmNoaWxkcmVuLmxl
bmd0aDsKKyAgICAgICAgfSk7CiAgICAgfSwKIAotICAgIF9zaG93Rml4ZWROdW1iZXI6IGZ1bmN0
aW9uKHJvdywgdmFsdWUsIGRpZ2l0cywgY2xhc3NOYW1lKQotICAgIHsKLSAgICAgICAgdmFyIHRk
ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidGQiLCB7IGNsYXNzOiBjbGFzc05h
bWUgfSwgcm93KTsKLSAgICAgICAgdGQudGV4dENvbnRlbnQgPSB2YWx1ZS50b0ZpeGVkKGRpZ2l0
cyB8fCAyKTsKLSAgICB9LAotICAgIAotICAgIF9zaG93R3JhcGg6IGZ1bmN0aW9uKHJvdywgdGVz
dE5hbWUsIHRlc3RSZXN1bHRzKQorICAgIF9hZGRHcmFwaEJ1dHRvbjogZnVuY3Rpb24odGQsIHRl
c3ROYW1lLCB0ZXN0UmVzdWx0cykKICAgICB7CiAgICAgICAgIHZhciBkYXRhID0gdGVzdFJlc3Vs
dHNbU3RyaW5ncy5qc29uLnNhbXBsZXNdOwotICAgICAgICBpZiAoIWRhdGEpIHsKLSAgICAgICAg
ICAgIHRoaXMuX3Nob3dFbXB0eUNlbGwocm93LCAiIik7CisgICAgICAgIGlmICghZGF0YSkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmFyIHRkID0g
RG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidGQiLCB7fSwgcm93KTsKICAgICAgICAg
dmFyIGJ1dHRvbiA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIsIHsg
Y2xhc3M6ICJzbWFsbC1idXR0b24iIH0sIHRkKTsKIAogICAgICAgICBidXR0b24uYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHZhciBzYW1wbGVzID0g
ZGF0YVtTdHJpbmdzLmpzb24uZ3JhcGgucG9pbnRzXTsKICAgICAgICAgICAgIHZhciBzYW1wbGlu
Z1RpbWVPZmZzZXQgPSBkYXRhW1N0cmluZ3MuanNvbi5ncmFwaC5zYW1wbGluZ1RpbWVPZmZzZXRd
OwogICAgICAgICAgICAgdmFyIGF4ZXMgPSBbU3RyaW5ncy50ZXh0LmV4cGVyaW1lbnRzLmNvbXBs
ZXhpdHksIFN0cmluZ3MudGV4dC5leHBlcmltZW50cy5mcmFtZVJhdGVdOwotICAgICAgICAgICAg
YmVuY2htYXJrQ29udHJvbGxlci5zaG93VGVzdEdyYXBoKHRlc3ROYW1lLCBheGVzLCBzYW1wbGVz
LCBzYW1wbGluZ1RpbWVPZmZzZXQpOworICAgICAgICAgICAgdmFyIHNjb3JlID0gdGVzdFJlc3Vs
dHNbU3RyaW5ncy5qc29uLnNjb3JlXS50b0ZpeGVkKDIpOworICAgICAgICAgICAgdmFyIGNvbXBs
ZXhpdHkgPSB0ZXN0UmVzdWx0c1tTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0eV07
CisgICAgICAgICAgICB2YXIgbWVhbiA9IFsKKyAgICAgICAgICAgICAgICAibWVhbjogIiwKKyAg
ICAgICAgICAgICAgICBjb21wbGV4aXR5W1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFn
ZV0udG9GaXhlZCgyKSwKKyAgICAgICAgICAgICAgICAiIMKxICIsCisgICAgICAgICAgICAgICAg
Y29tcGxleGl0eVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLnN0ZGV2XS50b0ZpeGVkKDIpLAor
ICAgICAgICAgICAgICAgICIgKCIsCisgICAgICAgICAgICAgICAgY29tcGxleGl0eVtTdHJpbmdz
Lmpzb24ubWVhc3VyZW1lbnRzLnBlcmNlbnRdLnRvRml4ZWQoMiksCisgICAgICAgICAgICAgICAg
IiUpLCB3b3JzdCA1JTogIiwKKyAgICAgICAgICAgICAgICBjb21wbGV4aXR5W1N0cmluZ3MuanNv
bi5tZWFzdXJlbWVudHMuY29uY2Vybl0udG9GaXhlZCgyKV0uam9pbigiIik7CisgICAgICAgICAg
ICBiZW5jaG1hcmtDb250cm9sbGVyLnNob3dUZXN0R3JhcGgodGVzdE5hbWUsIHNjb3JlLCBtZWFu
LCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpOwogICAgICAgICB9KTsKICAgICAg
ICAgICAgIAogICAgICAgICBidXR0b24udGV4dENvbnRlbnQgPSBTdHJpbmdzLnRleHQucmVzdWx0
cy5ncmFwaCArICIuLi4iOwogICAgIH0sCiAKLSAgICBfc2hvd0pTT046IGZ1bmN0aW9uKHJvdywg
dGVzdE5hbWUsIHRlc3RSZXN1bHRzKQotICAgIHsKLSAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVz
dWx0c1tTdHJpbmdzLmpzb24uc2FtcGxlc107Ci0gICAgICAgIGlmICghZGF0YSkgewotICAgICAg
ICAgICAgdGhpcy5fc2hvd0VtcHR5Q2VsbChyb3csICIiKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIHZhciB0ZCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVs
ZW1lbnQoInRkIiwge30sIHJvdyk7Ci0gICAgICAgIHZhciBidXR0b24gPSBEb2N1bWVudEV4dGVu
c2lvbi5jcmVhdGVFbGVtZW50KCJidXR0b24iLCB7IGNsYXNzOiAic21hbGwtYnV0dG9uIiB9LCB0
ZCk7Ci0KLSAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBiZW5jaG1hcmtDb250cm9sbGVyLnNob3dUZXN0SlNPTih0ZXN0TmFt
ZSwgdGVzdFJlc3VsdHMpOwotICAgICAgICB9KTsKLSAgICAgICAgICAgIAotICAgICAgICBidXR0
b24udGV4dENvbnRlbnQgPSBTdHJpbmdzLnRleHQucmVzdWx0cy5qc29uICsgIi4uLiI7Ci0gICAg
fSwKLSAgICAKICAgICBfaXNOb2lzeU1lYXN1cmVtZW50OiBmdW5jdGlvbihqc29uRXhwZXJpbWVu
dCwgZGF0YSwgbWVhc3VyZW1lbnQsIG9wdGlvbnMpCiAgICAgewogICAgICAgICBjb25zdCBwZXJj
ZW50VGhyZXNob2xkID0gMTA7CkBAIC0zNzUsOTkgKzM4MiwxMjggQEAgUmVzdWx0c1RhYmxlLnBy
b3RvdHlwZSA9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCi0gICAgX2lzTm9pc3lU
ZXN0OiBmdW5jdGlvbih0ZXN0UmVzdWx0cywgb3B0aW9ucykKLSAgICB7Ci0gICAgICAgIGZvciAo
dmFyIGluZGV4ID0gMDsgaW5kZXggPCAyOyArK2luZGV4KSB7Ci0gICAgICAgICAgICB2YXIganNv
bkV4cGVyaW1lbnQgPSAhaW5kZXggPyBTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0
eSA6IFN0cmluZ3MuanNvbi5leHBlcmltZW50cy5mcmFtZVJhdGU7Ci0gICAgICAgICAgICB2YXIg
ZGF0YSA9IHRlc3RSZXN1bHRzW2pzb25FeHBlcmltZW50XTsKLSAgICAgICAgICAgIGZvciAodmFy
IG1lYXN1cmVtZW50IGluIGRhdGEpIHsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNOb2lz
eU1lYXN1cmVtZW50KGpzb25FeHBlcmltZW50LCBkYXRhLCBtZWFzdXJlbWVudCwgb3B0aW9ucykp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgX3Nob3dFbXB0eUNlbGxz
OiBmdW5jdGlvbihyb3csIGhlYWRlcnMpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpbmRleCA9
IDA7IGluZGV4IDwgaGVhZGVycy5sZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgICAgIGlmICgh
aGVhZGVyc1tpbmRleF0uY2hpbGRyZW4ubGVuZ3RoKQotICAgICAgICAgICAgICAgIHRoaXMuX3No
b3dFbXB0eUNlbGwocm93LCAic3VpdGVzLXNlcGFyYXRvciIpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eUNlbGxzKHJvdywgaGVhZGVyc1tpbmRleF0u
Y2hpbGRyZW4pOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9zaG93RW1wdHlSb3c6IGZ1bmN0
aW9uKCkKKyAgICBfYWRkRW1wdHlSb3c6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBy
b3cgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ0ciIsIHt9LCB0aGlzLmVsZW1l
bnQpOwotICAgICAgICB0aGlzLl9zaG93RW1wdHlDZWxscyhyb3csIHRoaXMuX2hlYWRlcnMpOwor
ICAgICAgICB0aGlzLl9mbGF0dGVuZWRIZWFkZXJzLmZvckVhY2goZnVuY3Rpb24gKGhlYWRlcikg
eworICAgICAgICAgICAgcmV0dXJuIERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoInRk
IiwgeyBjbGFzczogInN1aXRlcy1zZXBhcmF0b3IiIH0sIHJvdyk7CisgICAgICAgIH0pOwogICAg
IH0sCiAKLSAgICBfc2hvd1Rlc3Q6IGZ1bmN0aW9uKHRlc3ROYW1lLCB0ZXN0UmVzdWx0cywgb3B0
aW9ucykKKyAgICBfYWRkVGVzdDogZnVuY3Rpb24odGVzdE5hbWUsIHRlc3RSZXN1bHRzLCBvcHRp
b25zKQogICAgIHsKICAgICAgICAgdmFyIHJvdyA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVs
ZW1lbnQoInRyIiwge30sIHRoaXMuZWxlbWVudCk7Ci0gICAgICAgIHZhciBjbGFzc05hbWUgPSB0
aGlzLl9pc05vaXN5VGVzdCh0ZXN0UmVzdWx0cywgb3B0aW9ucykgPyAibm9pc3ktcmVzdWx0cyIg
OiAiIjsKLSAgICAgICAgCi0gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlz
Ll9oZWFkZXJzLmxlbmd0aDsgKytpbmRleCkgewotCi0gICAgICAgICAgICBzd2l0Y2ggKGluZGV4
KSB7Ci0gICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2hvd1RleHQo
cm93LCB0ZXN0TmFtZSwgY2xhc3NOYW1lKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgIHZhciBkYXRhID0gdGVzdFJlc3VsdHNb
U3RyaW5ncy5qc29uLnNjb3JlXTsKLSAgICAgICAgICAgICAgICB0aGlzLl9zaG93Rml4ZWROdW1i
ZXIocm93LCBkYXRhLCAyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAg
Y2FzZSAyOgotICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgIHZhciBqc29uRXhw
ZXJpbWVudCA9IGluZGV4ID09IDIgPyBTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0
eSA6IFN0cmluZ3MuanNvbi5leHBlcmltZW50cy5mcmFtZVJhdGU7Ci0gICAgICAgICAgICAgICAg
dmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tqc29uRXhwZXJpbWVudF07Ci0gICAgICAgICAgICAgICAg
Zm9yICh2YXIgbWVhc3VyZW1lbnQgaW4gZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5f
c2hvd0ZpeGVkTnVtYmVyKHJvdywgZGF0YVttZWFzdXJlbWVudF0sIDIsIHRoaXMuX2lzTm9pc3lN
ZWFzdXJlbWVudChqc29uRXhwZXJpbWVudCwgZGF0YSwgbWVhc3VyZW1lbnQsIG9wdGlvbnMpID8g
Y2xhc3NOYW1lIDogIiIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dHcmFwaChy
b3csIHRlc3ROYW1lLCB0ZXN0UmVzdWx0cyk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2hvd0pT
T04ocm93LCB0ZXN0TmFtZSwgdGVzdFJlc3VsdHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIHZhciBpc05vaXN5ID0gZmFsc2U7CisgICAgICAgIFtTdHJpbmdzLmpzb24uZXhw
ZXJpbWVudHMuY29tcGxleGl0eSwgU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZV0u
Zm9yRWFjaChmdW5jdGlvbiAoZXhwZXJpbWVudCkgeworICAgICAgICAgICAgdmFyIGRhdGEgPSB0
ZXN0UmVzdWx0c1tleHBlcmltZW50XTsKKyAgICAgICAgICAgIGZvciAodmFyIG1lYXN1cmVtZW50
IGluIGRhdGEpIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNOb2lzeU1lYXN1cmVtZW50
KGV4cGVyaW1lbnQsIGRhdGEsIG1lYXN1cmVtZW50LCBvcHRpb25zKSkKKyAgICAgICAgICAgICAg
ICAgICAgaXNOb2lzeSA9IHRydWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAg
fSwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fZmxhdHRlbmVkSGVhZGVycy5mb3JFYWNoKGZ1bmN0
aW9uIChoZWFkZXIpIHsKKyAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSAiIjsKKyAgICAgICAg
ICAgIGlmIChoZWFkZXIuY2xhc3NOYW1lKSB7CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBo
ZWFkZXIuY2xhc3NOYW1lID09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICAgICAgICAgIGNsYXNz
TmFtZSA9IGhlYWRlci5jbGFzc05hbWUodGVzdFJlc3VsdHMsIG9wdGlvbnMpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gaGVhZGVyLmNsYXNz
TmFtZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGhlYWRlci50aXRsZSA9PSBT
dHJpbmdzLnRleHQudGVzdE5hbWUpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGl0bGVDbGFzc05h
bWUgPSBjbGFzc05hbWU7CisgICAgICAgICAgICAgICAgaWYgKGlzTm9pc3kpCisgICAgICAgICAg
ICAgICAgICAgIHRpdGxlQ2xhc3NOYW1lICs9ICIgbm9pc3ktcmVzdWx0cyI7CisgICAgICAgICAg
ICAgICAgdmFyIHRkID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidGQiLCB7IGNs
YXNzOiB0aXRsZUNsYXNzTmFtZSB9LCByb3cpOworICAgICAgICAgICAgICAgIHRkLnRleHRDb250
ZW50ID0gdGVzdE5hbWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgdGQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ0
ZCIsIHsgY2xhc3M6IGNsYXNzTmFtZSB9LCByb3cpOworICAgICAgICAgICAgaWYgKGhlYWRlci50
aXRsZSA9PSBTdHJpbmdzLnRleHQucmVzdWx0cy5ncmFwaCkgeworICAgICAgICAgICAgICAgIHRo
aXMuX2FkZEdyYXBoQnV0dG9uKHRkLCB0ZXN0TmFtZSwgdGVzdFJlc3VsdHMpOworICAgICAgICAg
ICAgfSBlbHNlIGlmICghKCJ0ZXh0IiBpbiBoZWFkZXIpKSB7CisgICAgICAgICAgICAgICAgdGQu
dGV4dENvbnRlbnQgPSB0ZXN0UmVzdWx0c1toZWFkZXIudGl0bGVdOworICAgICAgICAgICAgfSBl
bHNlIGlmICh0eXBlb2YgaGVhZGVyLnRleHQgPT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgZGF0YSA9IHRlc3RSZXN1bHRzW2hlYWRlci50ZXh0XTsKKyAgICAgICAgICAgICAgICBp
ZiAodHlwZW9mIGRhdGEgPT0gIm51bWJlciIpCisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBk
YXRhLnRvRml4ZWQoMik7CisgICAgICAgICAgICAgICAgdGQudGV4dENvbnRlbnQgPSBkYXRhOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0ZC50ZXh0Q29udGVudCA9IGhl
YWRlci50ZXh0KHRlc3RSZXN1bHRzLCB0ZXN0TmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0sIHRoaXMpOwogICAgIH0sCiAKLSAgICBfc2hvd1N1aXRlOiBmdW5jdGlvbihzdWl0ZU5hbWUs
IHN1aXRlUmVzdWx0cywgb3B0aW9ucykKKyAgICBfYWRkU3VpdGU6IGZ1bmN0aW9uKHN1aXRlTmFt
ZSwgc3VpdGVSZXN1bHRzLCBvcHRpb25zKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgdGVzdE5h
bWUgaW4gc3VpdGVSZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1bHRzLnRlc3RzXSkgewotICAgICAg
ICAgICAgdGhpcy5fc2hvd1Rlc3QodGVzdE5hbWUsIHN1aXRlUmVzdWx0c1tTdHJpbmdzLmpzb24u
cmVzdWx0cy50ZXN0c11bdGVzdE5hbWVdLCBvcHRpb25zKTsKKyAgICAgICAgICAgIHZhciB0ZXN0
UmVzdWx0cyA9IHN1aXRlUmVzdWx0c1tTdHJpbmdzLmpzb24ucmVzdWx0cy50ZXN0c11bdGVzdE5h
bWVdOworICAgICAgICAgICAgdGhpcy5fYWRkVGVzdCh0ZXN0TmFtZSwgdGVzdFJlc3VsdHMsIG9w
dGlvbnMpOwogICAgICAgICB9CiAgICAgfSwKICAgICAKLSAgICBfc2hvd0l0ZXJhdGlvbiA6IGZ1
bmN0aW9uKGl0ZXJhdGlvblJlc3VsdHMsIG9wdGlvbnMpCisgICAgX2FkZEl0ZXJhdGlvbjogZnVu
Y3Rpb24oaXRlcmF0aW9uUmVzdWx0LCBvcHRpb25zKQogICAgIHsKLSAgICAgICAgZm9yICh2YXIg
c3VpdGVOYW1lIGluIGl0ZXJhdGlvblJlc3VsdHNbU3RyaW5ncy5qc29uLnJlc3VsdHMuc3VpdGVz
XSkgewotICAgICAgICAgICAgaWYgKHN1aXRlTmFtZSAhPSBPYmplY3Qua2V5cyhpdGVyYXRpb25S
ZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1bHRzLnN1aXRlc10pWzBdKQotICAgICAgICAgICAgICAg
IHRoaXMuX3Nob3dFbXB0eVJvdygpOwotICAgICAgICAgICAgdGhpcy5fc2hvd1N1aXRlKHN1aXRl
TmFtZSwgaXRlcmF0aW9uUmVzdWx0c1tTdHJpbmdzLmpzb24ucmVzdWx0cy5zdWl0ZXNdW3N1aXRl
TmFtZV0sIG9wdGlvbnMpOworICAgICAgICBmb3IgKHZhciBzdWl0ZU5hbWUgaW4gaXRlcmF0aW9u
UmVzdWx0W1N0cmluZ3MuanNvbi5yZXN1bHRzLnN1aXRlc10pIHsKKyAgICAgICAgICAgIHRoaXMu
X2FkZEVtcHR5Um93KCk7CisgICAgICAgICAgICB0aGlzLl9hZGRTdWl0ZShzdWl0ZU5hbWUsIGl0
ZXJhdGlvblJlc3VsdFtTdHJpbmdzLmpzb24ucmVzdWx0cy5zdWl0ZXNdW3N1aXRlTmFtZV0sIG9w
dGlvbnMpOwogICAgICAgICB9CiAgICAgfSwKLSAgICAKLSAgICBzaG93UmVjb3JkOiBmdW5jdGlv
bih0ZXN0TmFtZSwgbWVzc2FnZSwgdGVzdFJlc3VsdHMsIG9wdGlvbnMpCi0gICAgewotICAgICAg
ICB0aGlzLmNsZWFyKCk7Ci0gICAgICAgIHRoaXMuX3Nob3dIZWFkZXIobWVzc2FnZSk7Ci0gICAg
ICAgIHRoaXMuX3Nob3dUZXN0KHRlc3ROYW1lLCB0ZXN0UmVzdWx0cywgb3B0aW9ucyk7Ci0gICAg
fSwKIAogICAgIHNob3dJdGVyYXRpb25zOiBmdW5jdGlvbihpdGVyYXRpb25zUmVzdWx0cywgb3B0
aW9ucykKICAgICB7CiAgICAgICAgIHRoaXMuY2xlYXIoKTsKLSAgICAgICAgdGhpcy5fc2hvd0hl
YWRlcigiIik7CisgICAgICAgIHRoaXMuX2FkZEhlYWRlcigpOwogICAgICAgICAKLSAgICAgICAg
aXRlcmF0aW9uc1Jlc3VsdHMuZm9yRWFjaChmdW5jdGlvbihpdGVyYXRpb25SZXN1bHRzKSB7Ci0g
ICAgICAgICAgICB0aGlzLl9zaG93SXRlcmF0aW9uKGl0ZXJhdGlvblJlc3VsdHMsIG9wdGlvbnMp
OworICAgICAgICBpdGVyYXRpb25zUmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZXJhdGlvblJl
c3VsdCkgeworICAgICAgICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uKGl0ZXJhdGlvblJlc3VsdCwg
b3B0aW9ucyk7CiAgICAgICAgIH0sIHRoaXMpOwogICAgIH0KIH0KIAord2luZG93LlV0aWxpdGll
cyA9Cit7CisgICAgX3BhcnNlOiBmdW5jdGlvbihzdHIsIHNlcCkKKyAgICB7CisgICAgICAgIHZh
ciBvdXRwdXQgPSB7fTsKKyAgICAgICAgc3RyLnNwbGl0KHNlcCkuZm9yRWFjaChmdW5jdGlvbihw
YXJ0KSB7CisgICAgICAgICAgICB2YXIgaXRlbSA9IHBhcnQuc3BsaXQoIj0iKTsKKyAgICAgICAg
ICAgIHZhciB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChpdGVtWzFdKTsKKyAgICAgICAgICAg
IGlmICh2YWx1ZVswXSA9PSAiJyIgKQorICAgICAgICAgICAgICAgIG91dHB1dFtpdGVtWzBdXSA9
IHZhbHVlLnN1YnN0cigxLCB2YWx1ZS5sZW5ndGggLSAyKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBvdXRwdXRbaXRlbVswXV0gPSB2YWx1ZTsKKyAgICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICB9LAorCisgICAgcGFyc2VQYXJhbWV0ZXJzOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2Uod2luZG93LmxvY2F0aW9u
LnNlYXJjaC5zdWJzdHIoMSksICImIik7CisgICAgfSwKKworICAgIHBhcnNlQXJndW1lbnRzOiBm
dW5jdGlvbihzdHIpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2Uoc3RyLCAiICIp
OworICAgIH0sCisKKyAgICBleHRlbmRPYmplY3Q6IGZ1bmN0aW9uKG9iajEsIG9iajIpCisgICAg
eworICAgICAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBvYmoyKQorICAgICAgICAgICAgb2JqMVth
dHRybmFtZV0gPSBvYmoyW2F0dHJuYW1lXTsKKyAgICAgICAgcmV0dXJuIG9iajE7CisgICAgfSwK
KworICAgIGNvcHlPYmplY3Q6IGZ1bmN0aW9uKG9iaikKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLmV4dGVuZE9iamVjdCh7fSwgb2JqKTsKKyAgICB9LAorCisgICAgbWVyZ2VPYmplY3RzOiBm
dW5jdGlvbihvYmoxLCBvYmoyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kT2Jq
ZWN0KHRoaXMuY29weU9iamVjdChvYmoxKSwgb2JqMik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5j
c3MgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21l
dGVyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kOGY2MzRhNjU2MGM4NWY0MzAzZjEyNmQ2MTY5MTAyYWUzMmYx
YWFjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291
cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3MKQEAgLTAsMCArMSwyNDIgQEAKKy8qIE91dGVyIGhh
cm5lc3MgKi8KK2h0bWwsYm9keSB7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIG1hcmdpbjogMHB4
OworICAgIHBhZGRpbmc6IDBweDsKK30KKworYm9keSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDI0MSwgMjQxLCAyNDEpOworICAgIGNvbG9yOiByZ2IoOTYsIDk2LCA5Nik7CisgICAgZm9u
dC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgVmVy
ZGFuYSwgc2Fucy1zZXJpZjsKK30KKworbWFpbiB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVp
Z2h0OiAxMDAlOworCisgICAgZGlzcGxheTogZmxleDsKKyAgICBhbGlnbi1pdGVtczogY2VudGVy
OworICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKKyAgICBmbGV4LWZsb3c6IGNvbHVt
bjsKK30KKworaHIgeworICAgIGZsZXg6IDEgMCAyMHB4OworICAgIHdpZHRoOiAxcHg7CisgICAg
Ym9yZGVyOiAwOworICAgIG1hcmdpbjogMDsKK30KKworc2VjdGlvbiB7CisgICAgYm94LXNpemlu
ZzogYm9yZGVyLWJveDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBkaXNwbGF5OiBub25lOworfQor
CitzZWN0aW9uLnNlbGVjdGVkIHsKKyAgICBkaXNwbGF5OiBpbml0aWFsOworfQorCitoMSB7Cisg
ICAgZm9udC1zaXplOiAzZW07CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGZvbnQtd2Vp
Z2h0OiA2MDA7CisgICAgbWFyZ2luOiAxMHZoIDA7CisgICAgZmxleDogMCAxIDFlbTsKK30KKwor
YnV0dG9uIHsKKyAgICBmbGV4OiAwIDAgYXV0bzsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBm
b250LXNpemU6IDEuNWVtOworICAgIG1hcmdpbi1ib3R0b206IDEwdmg7CisgICAgYm9yZGVyOiAy
cHggc29saWQgcmdiKDk2LCA5NiwgOTYpOworICAgIGNvbG9yOiByZ2IoOTYsIDk2LCA5Nik7Cisg
ICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXJhZGl1czogMTBweDsKKyAg
ICBwYWRkaW5nOiAuNWVtIDJlbTsKK30KKworYnV0dG9uOmhvdmVyIHsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4xKTsKKyAgICBjdXJzb3I6IHBvaW50ZXI7Cit9CisKK2J1
dHRvbjphY3RpdmUgeworICAgIGNvbG9yOiBpbmhlcml0OworICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYmEoMCwgMCwgMCwgLjIpOworfQorCisKK0BtZWRpYSBzY3JlZW4gYW5kIChtaW4tZGV2aWNl
LXdpZHRoOiA3NjhweCkgeworICAgIHNlY3Rpb24geworICAgICAgICBwYWRkaW5nOiAwIDIwcHg7
CisgICAgfQorCisgICAgc2VjdGlvbi5zZWxlY3RlZCB7CisgICAgICAgIGRpc3BsYXk6IGZsZXg7
CisgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CisgICAgICAgIGp1c3RpZnktY29udGVudDog
ZmxleC1zdGFydDsKKyAgICAgICAgZmxleC1mbG93OiBjb2x1bW47CisgICAgfQorfQorCitAbWVk
aWEgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogNDE0cHgpIHsKKyAgICBoMSB7CisgICAg
ICAgIGZvbnQtc2l6ZTogMi41ZW07CisgICAgfQorCisgICAgaHIgeworICAgICAgICBmbGV4OiAw
IDAgMDsKKyAgICB9CisKKyAgICBzZWN0aW9uIHsKKyAgICAgICAgYm94LXNpemluZzogYm9yZGVy
LWJveDsKKyAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAg
ICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKKyAgICAgICAgcGFkZGluZzogMCA1cHg7CisgICAgfQor
fQorCisvKiBJbnRybyBzZWN0aW9uICovCisjaW50cm8uc2VsZWN0ZWQgeworICAgIGZsZXg6IDEg
MCBhdXRvOworfQorCisjaW50cm8gcCB7CisgICAgZmxleDogMSAxIGF1dG87CisgICAgcGFkZGlu
ZzogMCAwIDEwdmggMDsKKyAgICBmb250LXNpemU6IDJlbTsKK30KKworQG1lZGlhIHNjcmVlbiBh
bmQgKG1pbi1kZXZpY2Utd2lkdGg6IDc2OHB4KSB7CisgICAgI2ludHJvIHAgeworICAgICAgICBt
YXgtd2lkdGg6IDgwMHB4OworICAgICAgICBtYXJnaW46IDA7CisgICAgfQorfQorCitAbWVkaWEg
c2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogNDE0cHgpIHsKKyAgICAjaW50cm8uc2VsZWN0
ZWQgeworICAgICAgICBkaXNwbGF5OiBmbGV4OworICAgICAgICBhbGlnbi1pdGVtczogY2VudGVy
OworICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CisgICAgICAgIGZsZXgtZmxv
dzogY29sdW1uOworICAgIH0KKworICAgICNpbnRybyBwIHsKKyAgICAgICAgcGFkZGluZy1sZWZ0
OiAyMHB4OworICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OworICAgICAgICBmb250LXNpemU6
IDEuNWVtOworICAgIH0KK30KKworLyogUnVubmluZyB0ZXN0IHNlY3Rpb24gKi8KKyN0ZXN0LWNv
bnRhaW5lci5zZWxlY3RlZCB7CisgICAgZGlzcGxheTogZmxleDsKKworICAgIGFsaWduLWl0ZW1z
OiBjZW50ZXI7CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cit9CisKKy5mcmFtZS1jb250
YWluZXIgPiBpZnJhbWUgeworICAgIHdpZHRoOiAxMjAwcHg7CisgICAgaGVpZ2h0OiA2MDBweDsK
KyAgICBib3JkZXI6IDA7CisgICAgbWFyZ2luOiAwIGF1dG87Cit9CisKK0BtZWRpYSBzY3JlZW4g
YW5kIChtaW4tZGV2aWNlLXdpZHRoOiAxODAwcHgpIHsKKyAgICAuZnJhbWUtY29udGFpbmVyID4g
aWZyYW1lIHsKKyAgICAgICAgd2lkdGg6IDE2MDBweDsKKyAgICAgICAgaGVpZ2h0OiA4MDBweDsK
KyAgICB9Cit9CisKK0BtZWRpYSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0MTRweCkg
eworICAgICN0ZXN0LWNvbnRhaW5lciB7CisgICAgICAgIHBhZGRpbmc6IDA7CisgICAgfQorCisg
ICAgLmZyYW1lLWNvbnRhaW5lciB7CisgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICBoZWln
aHQ6IDEwMCU7CisgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgfQorCisgICAgLmZyYW1l
LWNvbnRhaW5lciA+IGlmcmFtZSB7CisgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUpOworICAgICAg
ICBoZWlnaHQ6IGNhbGMoMTAwJSk7CisgICAgfQorfQorCitAbWVkaWEgc2NyZWVuIGFuZCAobWF4
LWRldmljZS13aWR0aDogMTAyNHB4KSB7CisgICAgLmZyYW1lLWNvbnRhaW5lciA+IGlmcmFtZSB7
CisgICAgICAgIHdpZHRoOiA5MDBweDsKKyAgICB9Cit9CisKKy8qIFJlc3VsdHMgc2VjdGlvbiAq
LworI3Jlc3VsdHMgeworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworI3Jlc3VsdHMuc2Vs
ZWN0ZWQgeworICAgIGZsZXg6IDEgMCBhdXRvOworfQorCisuc2NvcmUgeworICAgIGZvbnQtc2l6
ZTogNWVtOworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgIG1hcmdpbjogMDsKK30KKworI3Jl
c3VsdHMtdGFibGVzIHsKKyAgICBkaXJlY3Rpb246IHJ0bDsKKworICAgIGRpc3BsYXk6IGZsZXg7
CisKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworICAgIGp1c3RpZnktY29udGVudDogY2VudGVy
OworCisgICAgbWFyZ2luOiAzZW0gMDsKK30KKworI3Jlc3VsdHMgdGFibGUgeworICAgIGRpcmVj
dGlvbjogbHRyOworICAgIGJvcmRlci1zcGFjaW5nOiAwOworfQorCisjcmVzdWx0cyB0aCB7Cisg
ICAgcGFkZGluZzogLjVlbSAwOworfQorCisjcmVzdWx0cyB0ciB0ZCB7CisgICAgcGFkZGluZzog
LjI1ZW0gMDsKK30KKworI3Jlc3VsdHMtaGVhZGVyIHRkLCAjcmVzdWx0cy1oZWFkZXIgdGggewor
ICAgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisjcmVzdWx0cy1oZWFkZXIgdHIgdGQgeworICAgIHBh
ZGRpbmctcmlnaHQ6IDFlbTsKK30KKyNyZXN1bHRzLXNjb3JlIHRkLCAjcmVzdWx0cy1zY29yZSB0
aCB7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK0BtZWRpYSBzY3JlZW4gYW5kIChtYXgt
ZGV2aWNlLXdpZHRoOiA0MTRweCkgeworICAgICNyZXN1bHRzLnNlbGVjdGVkIHsKKyAgICAgICAg
cGFkZGluZzogMCAyMHB4OworICAgICAgICBkaXNwbGF5OiBmbGV4OworICAgICAgICBhbGlnbi1p
dGVtczogY2VudGVyOworICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CisgICAg
ICAgIGZsZXgtZmxvdzogY29sdW1uOworICAgIH0KKworICAgIC5zY29yZSB7CisgICAgICAgIGZv
bnQtc2l6ZTogM2VtOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0
OTgxMzVjMDc1NzJhNzBjZGEwNzM4ZWJkYWM1M2M4ZjkwMWU5ZWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVy
LmpzCkBAIC0wLDAgKzEsMTIzIEBACit3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50ID0gewor
ICAgIGl0ZXJhdGlvbkNvdW50OiAxLAorICAgIG9wdGlvbnM6IG51bGwsCisgICAgcmVzdWx0czog
bnVsbCwKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHN1aXRlcywgb3B0aW9ucykKKyAgICB7
CisgICAgICAgIHRoaXMudGVzdHNDb3VudCA9IHRoaXMuaXRlcmF0aW9uQ291bnQgKiBzdWl0ZXMu
cmVkdWNlKGZ1bmN0aW9uIChjb3VudCwgc3VpdGUpIHsgcmV0dXJuIGNvdW50ICsgc3VpdGUudGVz
dHMubGVuZ3RoOyB9LCAwKTsKKyAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKyAgICB9
LAorCisgICAgd2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMucmVzdWx0cyA9IG5ldyBSZXN1bHRzRGFzaGJvYXJkKCk7CisgICAgfSwKKworICAg
IGRpZFJ1blN1aXRlczogZnVuY3Rpb24oc3VpdGVzU2FtcGxlcnMpCisgICAgeworICAgICAgICB0
aGlzLnJlc3VsdHMucHVzaChzdWl0ZXNTYW1wbGVycyk7CisgICAgfSwKKworICAgIGRpZEZpbmlz
aExhc3RJdGVyYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGJlbmNobWFya0NvbnRy
b2xsZXIuc2hvd1Jlc3VsdHMoKTsKKyAgICB9Cit9OworCit3aW5kb3cuc2VjdGlvbnNNYW5hZ2Vy
ID0KK3sKKyAgICBzaG93U2VjdGlvbjogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIsIHB1c2hT
dGF0ZSkKKyAgICB7CisgICAgICAgIHZhciBjdXJyZW50U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCJzZWN0aW9uLnNlbGVjdGVkIik7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGN1cnJlbnRTZWN0aW9uRWxlbWVudCk7CisKKyAgICAgICAgdmFyIG5ld1NlY3Rpb25FbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkZW50aWZpZXIpOworICAgICAg
ICBjb25zb2xlLmFzc2VydChuZXdTZWN0aW9uRWxlbWVudCk7CisKKyAgICAgICAgY3VycmVudFNl
Y3Rpb25FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIik7CisgICAgICAgIG5ld1Nl
Y3Rpb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIik7CisKKyAgICAgICAgaWYgKHB1
c2hTdGF0ZSkKKyAgICAgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKHtzZWN0aW9uOiBzZWN0aW9u
SWRlbnRpZmllcn0sIGRvY3VtZW50LnRpdGxlKTsKKyAgICB9LAorCisgICAgc2V0U2VjdGlvblNj
b3JlOiBmdW5jdGlvbihzZWN0aW9uSWRlbnRpZmllciwgc2NvcmUsIG1lYW4pCisgICAgeworICAg
ICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjIiArIHNlY3Rpb25JZGVudGlmaWVyICsgIiAu
c2NvcmUiKS50ZXh0Q29udGVudCA9IHNjb3JlOworICAgICAgICBpZiAobWVhbikKKyAgICAgICAg
ICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiMiICsgc2VjdGlvbklkZW50aWZpZXIgKyAiIC5t
ZWFuIikuaW5uZXJIVE1MID0gbWVhbjsKKyAgICB9LAorCisgICAgcG9wdWxhdGVUYWJsZTogZnVu
Y3Rpb24odGFibGVJZGVudGlmaWVyLCBoZWFkZXJzLCBkYXRhKQorICAgIHsKKyAgICAgICAgdmFy
IHRhYmxlID0gbmV3IFJlc3VsdHNUYWJsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJsZUlk
ZW50aWZpZXIpLCBoZWFkZXJzKTsKKyAgICAgICAgdGFibGUuc2hvd0l0ZXJhdGlvbnMoZGF0YSwg
YmVuY2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnMpOworICAgIH0KK307CisKK3dpbmRvdy5iZW5j
aG1hcmtDb250cm9sbGVyID0geworICAgIF9zdGFydEJlbmNobWFyazogZnVuY3Rpb24oc3VpdGVz
LCBvcHRpb25zLCBmcmFtZUNvbnRhaW5lcklEKQorICAgIHsKKyAgICAgICAgYmVuY2htYXJrUnVu
bmVyQ2xpZW50LmluaXRpYWxpemUoc3VpdGVzLCBvcHRpb25zKTsKKyAgICAgICAgdmFyIGZyYW1l
Q29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZnJhbWVDb250YWluZXJJRCk7Cisg
ICAgICAgIHZhciBydW5uZXIgPSBuZXcgQmVuY2htYXJrUnVubmVyKHN1aXRlcywgZnJhbWVDb250
YWluZXIsIGJlbmNobWFya1J1bm5lckNsaWVudCk7CisgICAgICAgIHJ1bm5lci5ydW5NdWx0aXBs
ZUl0ZXJhdGlvbnMoKTsKKworICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInRl
c3QtY29udGFpbmVyIik7CisgICAgfSwKKworICAgIHN0YXJ0QmVuY2htYXJrOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB2YXIgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgICJ0ZXN0LWludGVy
dmFsIjogMTAsCisgICAgICAgICAgICAiZGlzcGxheSI6ICJtaW5pbWFsIiwKKyAgICAgICAgICAg
ICJhZGp1c3RtZW50IjogImFkYXB0aXZlIiwKKyAgICAgICAgICAgICJmcmFtZS1yYXRlIjogNTAs
CisgICAgICAgICAgICAiZXN0aW1hdGVkLWZyYW1lLXJhdGUiOiB0cnVlCisgICAgICAgIH07Cisg
ICAgICAgIHRoaXMuX3N0YXJ0QmVuY2htYXJrKFN1aXRlcywgb3B0aW9ucywgInRlc3QtY29udGFp
bmVyIik7CisgICAgfSwKKworICAgIHNob3dSZXN1bHRzOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuYWRkZWRLZXlFdmVudCkgeworICAgICAgICAgICAgZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigia2V5cHJlc3MiLCB0aGlzLnNlbGVjdFJlc3VsdHMsIGZhbHNlKTsKKyAg
ICAgICAgICAgIHRoaXMuYWRkZWRLZXlFdmVudCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICBzZWN0aW9uc01hbmFnZXIuc2V0U2VjdGlvblNjb3JlKCJyZXN1bHRzIiwgYmVuY2htYXJrUnVu
bmVyQ2xpZW50LnJlc3VsdHMuc2NvcmUudG9GaXhlZCgyKSk7CisgICAgICAgIHZhciBkYXRhID0g
YmVuY2htYXJrUnVubmVyQ2xpZW50LnJlc3VsdHMuZGF0YVtTdHJpbmdzLmpzb24ucmVzdWx0cy5p
dGVyYXRpb25zXTsKKyAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnBvcHVsYXRlVGFibGUoInJlc3Vs
dHMtaGVhZGVyIiwgSGVhZGVycy50ZXN0TmFtZSwgZGF0YSk7CisgICAgICAgIHNlY3Rpb25zTWFu
YWdlci5wb3B1bGF0ZVRhYmxlKCJyZXN1bHRzLXNjb3JlIiwgSGVhZGVycy5zY29yZSwgZGF0YSk7
CisgICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93U2VjdGlvbigicmVzdWx0cyIsIHRydWUpOwor
ICAgIH0sCisKKyAgICBzZWxlY3RSZXN1bHRzOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIGlmIChldmVudC5jaGFyQ29kZSAhPSAxMTUpIC8vICdzJworICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGV2ZW50LnRhcmdldC5zZWxlY3RSYW5nZSA9ICgoZXZlbnQudGFyZ2V0LnNl
bGVjdFJhbmdlIHx8IDApICsgMSkgJSAzOworCisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsK
KyAgICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgc3dp
dGNoIChldmVudC50YXJnZXQuc2VsZWN0UmFuZ2UpIHsKKyAgICAgICAgICAgIGNhc2UgMDogewor
ICAgICAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNy
ZXN1bHRzIC5zY29yZSIpLCAwKTsKKyAgICAgICAgICAgICAgICByYW5nZS5zZXRFbmRBZnRlcihk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVzdWx0cy1zY29yZSA+IHRyOmxhc3Qtb2YtdHlwZSIp
LCAwKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGNhc2UgMTogeworICAgICAgICAgICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVzdWx0cyAuc2NvcmUiKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIDI6IHsKKyAgICAgICAgICAg
ICAgICByYW5nZS5zZWxlY3ROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzLXNj
b3JlIikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgfQorfTsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjk4NDE4MTE2NWMyYzdkYjFiMGNlMWJkZmRjMTVlMWJkOTExODMwNAotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVu
bmVyL3Rlc3RzLmpzCkBAIC0wLDAgKzEsNDggQEAKK3ZhciBIZWFkZXJzID0geworICAgIHRlc3RO
YW1lOiBbeyB0aXRsZTogU3RyaW5ncy50ZXh0LnRlc3ROYW1lIH1dLAorICAgIHNjb3JlOiBbeyB0
aXRsZTogU3RyaW5ncy50ZXh0LnNjb3JlLCB0ZXh0OiBTdHJpbmdzLmpzb24uc2NvcmUgfV0KK307
CisKK3ZhciBTdWl0ZSA9IGZ1bmN0aW9uKG5hbWUsIHRlc3RzKSB7CisgICAgdGhpcy5uYW1lID0g
bmFtZTsKKyAgICB0aGlzLnRlc3RzID0gdGVzdHM7Cit9OworU3VpdGUucHJvdG90eXBlLnByZXBh
cmUgPSBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkKK3sK
KyAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9u
IChlbGVtZW50KSB7CisgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0pOworfTsKK1N1aXRl
LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCBw
cm9ncmVzc0JhcikKK3sKKyAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhp
cywgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOworfTsKKwordmFyIFN1aXRlcyA9IFtdOwor
CitTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkFuaW1vbWV0ZXIiLAorICAgIFsKKyAgICAgICAgewor
ICAgICAgICAgICAgdXJsOiAibWFzdGVyL2NhbnZhcy1zdGFnZS5odG1sP3BhdGhUeXBlPWFyY3Mi
LAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBhcmNzIgorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICB1cmw6ICJtYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWw/cGF0aFR5cGU9bGlu
ZVBhdGgmbGluZUpvaW49cm91bmQmbGluZUNhcD1yb3VuZCIsCisgICAgICAgICAgICBuYW1lOiAi
Q2FudmFzIGxpbmUgcGF0aCwgcm91bmQgam9pbiIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgdXJsOiAibWFzdGVyL2NhbnZhcy1zdGFnZS5odG1sP3BhdGhUeXBlPWxpbmUmbGlu
ZUNhcD1zcXVhcmUiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHNlZ21lbnRzIgor
ICAgICAgICB9LAorICAgIF0KKykpOworCitmdW5jdGlvbiBzdWl0ZUZyb21OYW1lKG5hbWUpCit7
CisgICAgcmV0dXJuIFN1aXRlcy5maW5kKGZ1bmN0aW9uKHN1aXRlKSB7IHJldHVybiBzdWl0ZS5u
YW1lID09IG5hbWU7IH0pOworfQorCitmdW5jdGlvbiB0ZXN0RnJvbU5hbWUoc3VpdGUsIG5hbWUp
Cit7CisgICAgcmV0dXJuIHN1aXRlLnRlc3RzLmZpbmQoZnVuY3Rpb24odGVzdCkgeyByZXR1cm4g
dGVzdC5uYW1lID09IG5hbWU7IH0pOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjY2ZTYzYmYzYmY0MzE5ZmU5YzM0MDM0MjM2NDQxZTBkNzU0ZWE0MS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPG1ldGEgbmFtZT0idmll
d3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgdXNlci1zY2FsYWJsZT1ubyI+Ci0g
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvYW5pbW9tZXRlci5jc3Mi
PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdHMuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9hbmltb21ldGVyLmpzIiBkZWZlcj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2QzLm1pbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9ncmFwaC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8bWFpbj4K
LSAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPjwvZGl2PgotCi0gICAgPHNlY3Rpb24gaWQ9ImhvbWUi
IGNsYXNzPSJzZWxlY3RlZCI+Ci0gICAgICAgIDxoZWFkZXI+Ci0gICAgICAgICAgICA8aDE+QW5p
bW9tZXRlcjwvaDE+Ci0gICAgICAgIDwvaGVhZGVyPgotICAgICAgICA8ZGl2IGlkPSJzdWl0ZXMi
PgotICAgICAgICAgICAgPGgyPlN1aXRlczo8L2gyPgotICAgICAgICAgICAgPHVsIGNsYXNzPSJ0
cmVlIj48L3VsPgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBpZD0ib3B0aW9ucyI+Ci0g
ICAgICAgICAgICA8aDI+T3B0aW9uczo8L2gyPgotICAgICAgICAgICAgPGZvcm0gbmFtZT0iYmVu
Y2htYXJrLW9wdGlvbnMiPgotICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgPGxpPgotICAg
ICAgICAgICAgICAgIDxsYWJlbD5UZXN0IGxlbmd0aDogPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9
InRlc3QtaW50ZXJ2YWwiIHZhbHVlPSIxMCI+IHNlY29uZHMgZWFjaDwvbGFiZWw+Ci0gICAgICAg
ICAgICA8L2xpPgotICAgICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAgIDxoMz5EaXNwbGF5
OjwvaDM+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgICAgICA8bGk+PGxh
YmVsPjxpbnB1dCBuYW1lPSJkaXNwbGF5IiB0eXBlPSJyYWRpbyIgdmFsdWU9Im1pbmltYWwiIGNo
ZWNrZWQ+IE1pbmltYWw8L2xhYmVsPjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT48bGFi
ZWw+PGlucHV0IG5hbWU9ImRpc3BsYXkiIHR5cGU9InJhZGlvIiB2YWx1ZT0icHJvZ3Jlc3MtYmFy
IiBjaGVja2VkPiBQcm9ncmVzcyBiYXI8L2xhYmVsPjwvbGk+Ci0gICAgICAgICAgICAgICAgICAg
IDxsaT48bGFiZWw+PGlucHV0IG5hbWU9ImRpc3BsYXkiIHR5cGU9InJhZGlvIiB2YWx1ZT0ic3Rh
dGlzdGljcy10YWJsZSI+IFN0YXRpc3RpY3MgdGFibGU8L2xhYmVsPjwvbGk+Ci0gICAgICAgICAg
ICAgICAgPC91bD4KLSAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICA8bGk+Ci0gICAgICAg
ICAgICAgICAgPGgzPkFkanVzdGluZyB0aGUgdGVzdCBjb21wbGV4aXR5OjwvaDM+Ci0gICAgICAg
ICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1l
PSJhZGp1c3RtZW50IiB0eXBlPSJyYWRpbyIgdmFsdWU9ImZpeGVkIj4gS2VlcCBjb25zdGFudDwv
bGFiZWw+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFtZT0i
YWRqdXN0bWVudCIgdHlwZT0icmFkaW8iIHZhbHVlPSJmaXhlZC1hZnRlci13YXJtdXAiPiBLZWVw
IGNvbnN0YW50IGFmdGVyIHdhcm11cCB0byB0YXJnZXQgRlBTPC9sYWJlbD48L2xpPgotICAgICAg
ICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1lPSJhZGp1c3RtZW50IiB0eXBlPSJy
YWRpbyIgdmFsdWU9ImFkYXB0aXZlIiBjaGVja2VkPiBNYWludGFpbiB0YXJnZXQgRlBTPC9sYWJl
bD48L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICA8L2xpPgotICAgICAg
ICAgICAgPGxpPgotICAgICAgICAgICAgICAgIDxsYWJlbD5UYXJnZXQgZnJhbWUgcmF0ZTogPGlu
cHV0IHR5cGU9Im51bWJlciIgaWQ9ImZyYW1lLXJhdGUiIHZhbHVlPSI1MCI+IEZQUzwvbGFiZWw+
Ci0gICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAgIDxs
YWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSIgY2hl
Y2tlZD4gRmlsdGVyIGZyYW1lIHJhdGUgY2FsY3VsYXRpb248L2xhYmVsPgotICAgICAgICAgICAg
PC9saT4KLSAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICA8L2Zvcm0+Ci0gICAgICAgIDwv
ZGl2PgotICAgICAgICA8Zm9vdGVyPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2Ut
YnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0VGVzdCgpIj5TdGFydCBU
ZXN0PC9idXR0b24+Ci0gICAgICAgIDwvZm9vdGVyPgotICAgIDwvc2VjdGlvbj4KLSAgICA8c2Vj
dGlvbiBpZD0icnVubmluZyI+Ci0gICAgICAgIDxkaXYgaWQ9InJ1bm5pbmctdGVzdCI+PC9kaXY+
Ci0gICAgICAgIDxkaXYgaWQ9InByb2dyZXNzIj4KLSAgICAgICAgICAgIDxkaXYgaWQ9InByb2dy
ZXNzLWNvbXBsZXRlZCI+PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGlkPSJy
ZWNvcmQiPgotICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJyZXN1bHRzLXRhYmxlIj48L3RhYmxl
PgotICAgICAgICA8L2Rpdj4KLSAgICA8L3NlY3Rpb24+Ci0gICAgPHNlY3Rpb24gaWQ9InJlc3Vs
dHMiPgotICAgICAgICA8aGVhZGVyPgotICAgICAgICAgICAgPGgxPlJlc3VsdHM6PC9oMT4KLSAg
ICAgICAgPC9oZWFkZXI+Ci0gICAgICAgIDxkYXRhPgotICAgICAgICAgICAgPHRhYmxlIGNsYXNz
PSJyZXN1bHRzLXRhYmxlIj48L3RhYmxlPgotICAgICAgICA8L2RhdGE+Ci0gICAgICAgIDxmb290
ZXI+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJl
bmNobWFya0NvbnRyb2xsZXIuc2VsZWN0UmVzdWx0cygpIj5TZWxlY3Q8L2J1dHRvbj4KLSAgICAg
ICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29u
dHJvbGxlci5zaG93SlNPTigpIj5KU09OPC9idXR0b24+Ci0gICAgICAgICAgICA8YnV0dG9uIGNs
YXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRUZXN0
KCkiPlRlc3QgQWdhaW48L2J1dHRvbj4KLSAgICAgICAgPC9mb290ZXI+Ci0gICAgPC9zZWN0aW9u
PgotICAgIDxzZWN0aW9uIGlkPSJqc29uIj4KLSAgICAgICAgPGhlYWRlcj4KLSAgICAgICAgICAg
IDxoMT5KU09OOjwvaDE+Ci0gICAgICAgIDwvaGVhZGVyPgotICAgICAgICA8ZGF0YT4KLSAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdHMtanNvbiIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48
L2Rpdj4KLSAgICAgICAgPC9kYXRhPgotICAgICAgICA8Zm9vdGVyPgotICAgICAgICAgICAgPGJ1
dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNl
bGVjdEpTT04oJ2pzb24nKSI+U2VsZWN0PC9idXR0b24+Ci0gICAgICAgICAgICA8YnV0dG9uIGNs
YXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3Vs
dHMoKSI+UmVzdWx0czwvYnV0dG9uPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2Ut
YnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0VGVzdCgpIj5UZXN0IEFn
YWluPC9idXR0b24+Ci0gICAgICAgIDwvZm9vdGVyPgotICAgIDwvc2VjdGlvbj4KLSAgICA8c2Vj
dGlvbiBpZD0idGVzdC1qc29uIj4KLSAgICAgICAgPGhlYWRlcj4KLSAgICAgICAgICAgIDxoMT5K
U09OOjwvaDE+Ci0gICAgICAgIDwvaGVhZGVyPgotICAgICAgICA8ZGF0YT4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9InJlc3VsdHMtanNvbiIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4K
LSAgICAgICAgPC9kYXRhPgotICAgICAgICA8Zm9vdGVyPgotICAgICAgICAgICAgPGJ1dHRvbiBj
bGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNlbGVjdEpT
T04oJ3Rlc3QtanNvbicpIj5TZWxlY3Q8L2J1dHRvbj4KLSAgICAgICAgICAgIDxidXR0b24gY2xh
c3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVzdWx0
cygpIj5SZXN1bHRzPC9idXR0b24+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1i
dXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRUZXN0KCkiPlRlc3QgQWdh
aW48L2J1dHRvbj4KLSAgICAgICAgPC9mb290ZXI+Ci0gICAgPC9zZWN0aW9uPgotICAgIDxzZWN0
aW9uIGlkPSJ0ZXN0LWdyYXBoIj4KLSAgICAgICAgPGhlYWRlcj4KLSAgICAgICAgICAgIDxoMT5H
cmFwaDo8L2gxPgotICAgICAgICA8L2hlYWRlcj4KLSAgICAgICAgPGRhdGE+PC9kYXRhPgotICAg
ICAgICA8Zm9vdGVyPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBv
bmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNob3dSZXN1bHRzKCkiPlJlc3VsdHM8L2J1dHRv
bj4KLSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVu
Y2htYXJrQ29udHJvbGxlci5zdGFydFRlc3QoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPgotICAgICAg
ICA8L2Zvb3Rlcj4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPjwv
ZGl2PgotICAgIDwvbWFpbj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0Yjc2Yjg2ODFhMzcwNWFkODM3Mjc5NWJl
ZGVhNWRkZmUyZWJjOTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9t
ZXRlci5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw1OTkgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVE1MIGFuZCBCb2R5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq
LwotaHRtbCxib2R5IHsKLSAgICBoZWlnaHQ6IDEwMCU7Ci0gICAgbWFyZ2luOiAwcHg7Ci0gICAg
cGFkZGluZzogMHB4OwotfQotCi1ib2R5IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTYs
IDk2LCA5Nik7Ci0gICAgY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKLSAgICBmb250LWZhbWls
eTogIkhlbHZldGljYSBOZXVlIiwgSGVsdmV0aWNhLCBWZXJkYW5hLCBzYW5zLXNlcmlmOwotfQot
Ci0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdXR0b25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tICovCi0KLWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBu
b25lOwotICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gICAgYmFja2dyb3VuZC1jb2xv
cjogdHJhbnNwYXJlbnQ7Ci19Ci0KLWJ1dHRvbi5sYXJnZS1idXR0b24gewotICAgIGJvcmRlcjog
M3B4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1KTsKLSAgICBib3JkZXItcmFkaXVzOiAxMHB4Owot
ICAgIG1pbi13aWR0aDogMjAwcHg7Ci0gICAgcGFkZGluZzogLjVlbSAyZW07Ci0gICAgbWFyZ2lu
OiAwIDFlbTsKLSAgICBmb250LXNpemU6IDI1cHg7Ci0gICAgY29sb3I6IHJnYigyMzUsIDIzNSwg
MjM1KTsKLX0KLQotYnV0dG9uLmxhcmdlLWJ1dHRvbjphY3RpdmUgewotICAgIGJhY2tncm91bmQt
Y29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKLSAgICBjb2xvcjogcmdiKDQ2LCA1MSwgNTUpOwot
ICAgIGJvcmRlci1jb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpICFpbXBvcnRhbnQ7Ci19Ci0KLWJ1
dHRvbi5sYXJnZS1idXR0b246ZGlzYWJsZWQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig5
NiwgOTYsIDk2KTsKLSAgICBjb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgpOwotfQotCi1idXR0b24u
c21hbGwtYnV0dG9uIHsKLSAgICBib3JkZXI6IDFweCBzb2xpZCBEYXJrQ3lhbjsKLSAgICBib3Jk
ZXItcmFkaXVzOiAycHg7Ci0gICAgcGFkZGluZzogMXB4IDRweDsKLSAgICBtYXJnaW46IDAgNHB4
OwotICAgIGZvbnQtc2l6ZTogOXB4OwotICAgIGNvbG9yOiBibGFjazsKLX0KLQotYnV0dG9uLnNt
YWxsLWJ1dHRvbjphY3RpdmUgewotICAgIGJhY2tncm91bmQtY29sb3I6IERhcmtDeWFuOwotICAg
IGNvbG9yOiByZ2IoNDYsIDUxLCA1NSk7Ci0gICAgYm9yZGVyLWNvbG9yOiBEYXJrQ3lhbiAhaW1w
b3J0YW50OwotfQotCi1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogNDE0cHgp
IHsKLSAgICBidXR0b24ubGFyZ2UtYnV0dG9uIHsKLSAgICAgICAgbWFyZ2luOiAxZW0gMDsKLSAg
ICB9Ci19Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUcmVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
LwotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLnRyZWUgewotICAgIHBhZGRpbmc6IDA7Ci0g
ICAgbGlzdC1zdHlsZS10eXBlOiBub25lOwotfQotCi0udHJlZSAuZXhwYW5kLWJ1dHRvbiB7Ci0g
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7Ci19Ci0K
LS50cmVlIC5leHBhbmQtYnV0dG9uIH4gdWwgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS50
cmVlIC5leHBhbmQtYnV0dG9uOmNoZWNrZWQgfiB1bCB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci19
Ci0KLS50cmVlIHVsIHsKLSAgICBsaXN0LXN0eWxlLXR5cGU6bm9uZTsKLX0KLQotLnRyZWUgbGkg
ewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBwYWRkaW5nOiAwIDAgMWVtIDFlbTsKLX0K
LQotLnRyZWUgdWwgbGkgewotICAgIGxpc3Qtc3R5bGU6bm9uZTsKLSAgICBwYWRkaW5nOiAxZW0g
MCAwIDBlbTsKLX0KLQotLnRyZWUgPiBsaTpsYXN0LWNoaWxkIHsKLSAgICBwYWRkaW5nLWJvdHRv
bTogMDsKLX0KLQotLnRyZWUtbGFiZWwgewotICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKLX0KLQotbGFiZWwudHJlZS1sYWJlbCB7Ci0gICAgY3Vyc29yOiBw
b2ludGVyOwotfQotCi0udHJlZSA+IGxpID4gbGFiZWwudHJlZS1sYWJlbDpiZWZvcmUgewotICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICB6LWluZGV4OiAxOwotICAgIGZsb2F0OiBsZWZ0Owot
ICAgIG1hcmdpbjogMCAwIDAgLTJlbTsKLSAgICB3aWR0aDogMWVtOwotICAgIGhlaWdodDogMWVt
OwotICAgIGNvbnRlbnQ6ICdcMjVCQSc7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGxp
bmUtaGVpZ2h0OiAyLjVlbTsKLSAgICBmb250LXNpemU6IC41ZW07Ci19Ci0KLS50cmVlID4gbGkg
PiA6Y2hlY2tlZCB+IGxhYmVsLnRyZWUtbGFiZWw6YmVmb3JlIHsKLSAgICBjb250ZW50OiAnXDI1
QkMnOwotfQotCi1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogNDE0cHgpIHsK
LSAgICAudHJlZSB7Ci0gICAgICAgIHBhZGRpbmctbGVmdDogMWVtOwotICAgIH0KLSAgICAudHJl
ZSA+IGxpID4gbGFiZWwudHJlZS1sYWJlbDpiZWZvcmUgewotICAgICAgICBmb250LXNpemU6IDFl
bTsKLSAgICAgICAgbWFyZ2luLWxlZnQ6IC0xLjc1ZW07Ci0gICAgICAgIGxpbmUtaGVpZ2h0OiAx
ZW07Ci0gICAgfQotfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZXN1bHRzIFRhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLXRhYmxlLnJlc3VsdHMtdGFibGUg
ewotICAgIHdpZHRoOiAxMDAlOwotICAgIGJvcmRlcjogMnB4IHNvbGlkIERhcmtDeWFuOwotICAg
IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ci19Ci0KLS5yZXN1bHRzLXRhYmxlIHRoLAotLnJl
c3VsdHMtdGFibGUgdGQgewotICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBwYWRkaW5nOiAzcHgg
NHB4IDJweCA0cHg7Ci19Ci0KLS5yZXN1bHRzLXRhYmxlIHRoIHsKLSAgICBiYWNrZ3JvdW5kOiBE
YXJrQ3lhbjsKLSAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIExpZ2h0Q3lhbjsKLSAgICBib3Jk
ZXItcmlnaHQ6IDFweCBzb2xpZCBMaWdodEN5YW47Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlk
IExpZ2h0Q3lhbjsKLX0KLQotLnJlc3VsdHMtdGFibGUgdGQgewotICAgIGJhY2tncm91bmQ6IHdo
aXRlOwotICAgIGJvcmRlci1ib3R0b206IG5vbmU7Ci0gICAgYm9yZGVyLWxlZnQ6IG5vbmU7Ci0g
ICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgRGFya0N5YW47Ci0gICAgYm9yZGVyLXRvcDogMXB4
IHNvbGlkIERhcmtDeWFuOwotICAgIGNvbG9yOiBibGFjazsKLX0KLQotLnJlc3VsdHMtdGFibGUg
dGQubm9pc3ktcmVzdWx0cyB7Ci0gICAgY29sb3I6IHJlZDsKLX0KLQotLnJlc3VsdHMtdGFibGUg
dGQuc3VpdGVzLXNlcGFyYXRvciB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OwotfQot
IAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVzdWx0cyBKU09OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAqLwotCi1kaXYucmVzdWx0cy1qc29uIHsKLSAgICB3aWR0aDogMTAw
JTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTI4LCAxMjgsIDEyOCk7Ci0gICAgY29sb3I6
IHJnYigyMzUsIDIzNSwgMjM1KTsKLSAgICB3aGl0ZS1zcGFjZTogcHJlOwotICAgIGZvbnQtc2l6
ZTogMTJweDsKLX0KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWFpbiBMYXlvdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1tYWluIHsKLSAgICB3aWR0aDogMTAw
JTsKLSAgICBoZWlnaHQ6IDEwMCU7Ci0gICAgZGlzcGxheTogLW1zLWZsZXhib3g7Ci0gICAgZGlz
cGxheTogLXdlYmtpdC1mbGV4OwotICAgIGRpc3BsYXk6IGZsZXg7Ci0KLSAgICAtbXMtZmxleC1h
bGlnbjogY2VudGVyOwotICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKLSAgICAtd2Vi
a2l0LWJveC1hbGlnbjogY2VudGVyOwotICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0KLSAgICAt
d2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKLSAgICAtbXMtZmxleC1wYWNrOiBm
bGV4LXN0YXJ0OwotICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKLQotICAgIC13ZWJr
aXQtZmxleC1mbG93OiBjb2x1bW47Ci0gICAgZmxleC1mbG93OiBjb2x1bW47Ci19Ci0KLS5zcGFj
ZXIgewotICAgIC13ZWJraXQtZmxleDogMSAwIDIwcHg7Ci0gICAgLW1zLWZsZXg6IDEgMCAyMHB4
OwotICAgIGZsZXg6IDEgMCAyMHB4OwotICAgIHdpZHRoOiAxMHB4OwotfQotCi1zZWN0aW9uIHsK
LSAgICB3aWR0aDogODAwcHg7Ci0gICAgaGVpZ2h0OiA2MDBweDsKLSAgICBkaXNwbGF5OiBub25l
OwotICAgIHBhZGRpbmc6IDEwcHg7Ci19Ci0KLSNob21lIHsKLSAgICBtaW4taGVpZ2h0OiA2MDBw
eDsKLSAgICBoZWlnaHQ6IGF1dG87Ci19Ci0KLS5kaXNwbGF5LXByb2dyZXNzLWJhciBzZWN0aW9u
LAotLmRpc3BsYXktc3RhdGlzdGljcy10YWJsZSBzZWN0aW9uIHsKLSAgICBib3JkZXI6IDZweCBz
b2xpZCByZ2IoMjM1LCAyMzUsIDIzNSk7Ci0gICAgYm9yZGVyLXJhZGl1czogMjBweDsKLX0KLQot
c2VjdGlvbi5zZWxlY3RlZCB7Ci0gICAgZGlzcGxheTogLW1zLWZsZXhib3g7Ci0gICAgZGlzcGxh
eTogLXdlYmtpdC1mbGV4OwotICAgIGRpc3BsYXk6IGZsZXg7Ci19Ci0KLXNlY3Rpb24gPiBoZWFk
ZXIsCi1zZWN0aW9uID4gZm9vdGVyIHsKLSAgICBtYXJnaW46IDEwcHg7Ci0gICAgcGFkZGluZzog
MTBweDsKLSAgICAtd2Via2l0LWZsZXg6IDAgMSAxMDAlOwotICAgIC1tcy1mbGV4OiAwIDEgMTAw
JTsKLSAgICBmbGV4OiAwIDEgMTAwJTsKLSAgICBtYXgtaGVpZ2h0OiAxNSU7Ci19Ci0KLXNlY3Rp
b24gPiBmb290ZXIgewotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBjbGVhcjogYm90aDsK
LSAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7Ci0g
ICAgZGlzcGxheTogZmxleDsKLSAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwotICAgIC13ZWJr
aXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKLSAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwot
ICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0gICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNl
bnRlcjsKLSAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7Ci0gICAganVzdGlmeS1jb250ZW50OiBj
ZW50ZXI7Ci19Ci0KLUBtZWRpYSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoOiAxODAwcHgp
IHsKLSAgICBzZWN0aW9uIHsKLSAgICAgICAgd2lkdGg6IDE2MDBweDsKLSAgICAgICAgaGVpZ2h0
OiA4MDBweDsKLSAgICB9Ci0KLSAgICAjaG9tZSB7Ci0gICAgICAgIG1pbi1oZWlnaHQ6IDgwMHB4
OwotICAgIH0KLX0KLQotQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDQxNHB4
KSB7Ci0gICAgLnNwYWNlciB7Ci0gICAgICAgIC13ZWJraXQtZmxleDogMCAwIDA7Ci0gICAgICAg
IC1tcy1mbGV4OiAwIDAgMDsKLSAgICAgICAgZmxleDogMCAwIDA7Ci0gICAgfQotCi0gICAgc2Vj
dGlvbiB7Ci0gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgICAgIHdpZHRoOiAx
MDAlOwotICAgICAgICBoZWlnaHQ6IDEwMCU7Ci0gICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7
Ci0gICAgICAgIHBhZGRpbmc6IDAgNXB4OwotICAgIH0KLQotICAgICNob21lIHsKLSAgICAgICAg
bWluLWhlaWdodDogMTAwJTsKLSAgICB9Ci0KLSAgICAuZGlzcGxheS1wcm9ncmVzcy1iYXIgc2Vj
dGlvbiwKLSAgICAuZGlzcGxheS1zdGF0aXN0aWNzLXRhYmxlIHNlY3Rpb24gewotICAgICAgICBi
b3JkZXI6IDA7Ci0gICAgfQotCi0gICAgc2VjdGlvbiA+IGZvb3RlciB7Ci0gICAgICAgIC13ZWJr
aXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKLSAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBj
b2x1bW47Ci0gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Ci0gICAgICAgIG1heC1oZWln
aHQ6IGluaXRpYWw7Ci0gICAgfQotfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb21lIFNlY3Rpb24gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNob21lIHsKLSAg
ICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3c7Ci0gICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBy
b3c7Ci0gICAgZmxleC1kaXJlY3Rpb246IHJvdzsKLSAgICAtd2Via2l0LWZsZXgtd3JhcDogd3Jh
cDsKLSAgICAtbXMtZmxleC13cmFwOiB3cmFwOwotICAgIGZsZXgtd3JhcDogd3JhcDsKLSAgICAt
d2Via2l0LWFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKLSAgICAtbXMtZmxleC1saW5lLXBhY2s6IGNl
bnRlcjsKLSAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwotfQotCi0jaG9tZSBoMiB7Ci0g
ICAgZm9udC1zaXplOiAxLjJlbTsKLX0KLQotI3N1aXRlcywKLSNvcHRpb25zIHsKLSAgICBwYWRk
aW5nOiAxMHB4OwotICAgIG1hcmdpbjogMTBweDsKLX0KLQotI3N1aXRlcyB7Ci0gICAgcGFkZGlu
Zy1sZWZ0OiA0MHB4OwotICAgIC13ZWJraXQtZmxleDogMCAxIDQwJTsKLSAgICAtbXMtZmxleDog
MCAxIDQwJTsKLSAgICBmbGV4OiAwIDEgNDAlOwotfQotCi0jb3B0aW9ucyB7Ci0gICAgLXdlYmtp
dC1mbGV4OiAxIDEgYXV0bzsKLSAgICAtbXMtZmxleDogMSAxIGF1dG87Ci0gICAgZmxleDogMSAx
IGF1dG87Ci19Ci0KLSNob21lID4gaGVhZGVyID4gaDEgewotICAgIG1hcmdpbjogMCBhdXRvOwot
ICAgIHdpZHRoOiA3MCU7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi0jaG9tZSBpbnB1
dFt0eXBlPSJudW1iZXIiXSB7Ci0gICAgd2lkdGg6IDUwcHg7Ci19Ci0gCi0jc3VpdGVzIGlucHV0
W3R5cGU9Im51bWJlciJdIHsKLSAgICBkaXNwbGF5OiBub25lOwotICAgIGZsb2F0OiByaWdodDsK
LX0KLQotI3N1aXRlcyBpbnB1dFt0eXBlPSJudW1iZXIiXS5zZWxlY3RlZCB7Ci0gICAgZGlzcGxh
eTogaW5saW5lOwotICAgIG1hcmdpbjogMDsKLX0KLQotI3N1aXRlcyB1bCB1bCB7Ci0gICAgZm9u
dC1zaXplOiAuOGVtOwotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwIDAgMCAxZW07Ci19
Ci0KLSNvcHRpb25zIHVsIHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBs
aXN0LXN0eWxlOiBub25lOwotfQotCi0jb3B0aW9ucyBoMyB7Ci0gICAgZm9udC1zaXplOiAxZW07
Ci0gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7Ci0gICAgbWFyZ2luOiAwIDAgLjNlbSAwOwotICAg
IHBhZGRpbmc6IDA7Ci19Ci0KLSNvcHRpb25zID4gZm9ybSA+IHVsID4gbGkgewotICAgIHBhZGRp
bmc6IDAgMCAxZW0gMDsKLX0KLQotI29wdGlvbnMgdWwgdWwgewotICAgIHBhZGRpbmc6IDA7Ci19
Ci0KLSNvcHRpb25zIGxpIHsKLSAgICBwYWRkaW5nOiAuMWVtIDA7Ci19Ci0KLUBtZWRpYSBzY3Jl
ZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0MTRweCkgewotICAgICNzdWl0ZXMsCi0gICAgI29w
dGlvbnMgewotICAgICAgICBwYWRkaW5nOiAwIDVweDsKLSAgICAgICAgbWFyZ2luOiAwOwotICAg
IH0KLSAgICAjc3VpdGVzIHsKLSAgICAgICAgLXdlYmtpdC1mbGV4OiAwIDEgMTAwJTsKLSAgICAg
ICAgLW1zLWZsZXg6IDAgMSAxMDAlOwotICAgICAgICBmbGV4OiAwIDEgMTAwJTsKLSAgICB9Ci19
Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJ1bm5pbmcgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI3J1bm5pbmcgewotICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKLSAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwotICAgIC13ZWJraXQtYWxpZ24taXRlbXM6
IGNlbnRlcjsKLSAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwotICAgIGFsaWduLWl0ZW1z
OiBjZW50ZXI7Ci0gICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKLSAgICAtbXMt
ZmxleC1wYWNrOiBjZW50ZXI7Ci0gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ci19Ci0KLSNy
dW5uaW5nLXRlc3QgewotICAgIHdpZHRoOiAxMDAlOwotICAgIGhlaWdodDogMTAwJTsKLX0KLQot
I3J1bm5pbmctdGVzdCA+IGlmcmFtZSB7Ci0gICAgd2lkdGg6IDgwMHB4OwotICAgIGhlaWdodDog
NjAwcHg7Ci0gICAgYm9yZGVyOiAwcHggbm9uZTsKLSAgICBvdmVyZmxvdzogaGlkZGVuOwotfQot
Ci0jcHJvZ3Jlc3MsICNyZWNvcmQgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS5kaXNwbGF5
LXByb2dyZXNzLWJhciAjcHJvZ3Jlc3MsCi0uZGlzcGxheS1zdGF0aXN0aWNzLXRhYmxlICNwcm9n
cmVzcyB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IGJvdHRvbTogLTZweDsKLSAgICBsZWZ0OiA2MHB4OwotICAgIHJpZ2h0OiA2MHB4OwotICAgIGhl
aWdodDogNnB4OwotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKLSAg
ICBib3JkZXItbGVmdDogNnB4IHNvbGlkIHJnYig0NiwgNTEsIDU1KTsKLSAgICBib3JkZXItcmln
aHQ6IDZweCBzb2xpZCByZ2IoNDYsIDUxLCA1NSk7Ci19Ci0KLS5kaXNwbGF5LXByb2dyZXNzLWJh
ciAjcHJvZ3Jlc3MtY29tcGxldGVkLAotLmRpc3BsYXktc3RhdGlzdGljcy10YWJsZSAjcHJvZ3Jl
c3MtY29tcGxldGVkIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAg
IGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiA2cHg7Ci0gICAgd2lkdGg6IDA7Ci0gICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOwotfQotCi0uZGlzcGxheS1wcm9ncmVzcy1iYXIg
I3JlY29yZCwKLS5kaXNwbGF5LXN0YXRpc3RpY3MtdGFibGUgI3JlY29yZCB7Ci0gICAgZGlzcGxh
eTogYmxvY2s7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTk1cHg7Ci0g
ICAgbGVmdDogMHB4OwotICAgIHJpZ2h0OiAwcHg7Ci0gICAgcGFkZGluZzogMTZweDsKLX0KLQot
QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6IDE4MDBweCkgewotICAgICNydW5u
aW5nLXRlc3QgPiBpZnJhbWUgewotICAgICAgICB3aWR0aDogMTYwMHB4OwotICAgICAgICBoZWln
aHQ6IDgwMHB4OwotICAgIH0KLX0KLQotQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lk
dGg6IDQxNHB4KSB7Ci0gICAgI3J1bm5pbmcgewotICAgICAgICBwYWRkaW5nOiAwOwotICAgIH0K
LQotICAgICNydW5uaW5nLXRlc3QgewotICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwotICAgIH0K
LQotICAgICNydW5uaW5nLXRlc3QgPiBpZnJhbWUgewotICAgICAgICB3aWR0aDogY2FsYygxMDAl
KTsKLSAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUpOwotICAgIH0KLX0KLS8qIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdHMgU2VjdGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
Ki8KLQotc2VjdGlvbiNyZXN1bHRzLAotc2VjdGlvbiNqc29uLAotc2VjdGlvbiN0ZXN0LWpzb24s
Ci1zZWN0aW9uI3Rlc3QtZ3JhcGggewotICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdzsK
LSAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKLSAgICBmbGV4LWRpcmVjdGlvbjogcm93Owot
ICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwOwotICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7Ci0g
ICAgZmxleC13cmFwOiB3cmFwOwotICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1i
ZXR3ZWVuOwotICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7Ci0gICAganVzdGlmeS1jb250ZW50
OiBzcGFjZS1iZXR3ZWVuOwotICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2Vl
bjsKLSAgICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnk7Ci0gICAgYWxpZ24tY29udGVudDog
c3BhY2UtYmV0d2VlbjsKLSAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwotICAg
IC1tcy1mbGV4LWFsaWduOiBzdGFydDsKLSAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKLX0K
LQotc2VjdGlvbiNyZXN1bHRzID4gZGF0YSwKLXNlY3Rpb24janNvbiA+IGRhdGEsCi1zZWN0aW9u
I3Rlc3QtanNvbiA+IGRhdGEsCi1zZWN0aW9uI3Rlc3QtZ3JhcGggPiBkYXRhIHsKLSAgICBvdmVy
Zmxvdy15OiBzY3JvbGw7Ci0gICAgaGVpZ2h0OiA3MCU7Ci0gICAgLXdlYmtpdC1mbGV4OiAwIDEg
MTAwJTsKLSAgICAtbXMtZmxleDogMCAxIDEwMCU7Ci0gICAgZmxleDogMCAxIDEwMCU7Ci0gICAg
LXdlYmtpdC1hbGlnbi1zZWxmOiBzdHJldGNoOwotICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0
cmV0Y2g7Ci0gICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKLX0KLQotLyogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGggU2VjdGlvbiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwot
Ci1zZWN0aW9uI3Rlc3QtZ3JhcGggPiBkYXRhIHsKLSAgICBmb250OiAxMHB4IHNhbnMtc2VyaWY7
Ci0gICAgY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKLX0KLQotc2VjdGlvbiN0ZXN0LWdyYXBo
ID4gZGF0YSA+IHN2ZyB7Ci0gICAgZmlsbDogbm9uZTsKLX0KLQotLmF4aXMgcGF0aCwKLS5heGlz
IGxpbmUgewotICAgIGZpbGw6IG5vbmU7Ci0gICAgc3Ryb2tlOiAjOTk5OTk5OwotICAgIHNoYXBl
LXJlbmRlcmluZzogY3Jpc3BFZGdlczsKLX0KLQotLmxlZnQtc2FtcGxlcyB7Ci0gICAgc3Ryb2tl
OiAjN0FERDQ5OwotICAgIHN0cm9rZS13aWR0aDogMS41cHg7Ci19Ci0KLS5yaWdodC1zYW1wbGVz
IHsKLSAgICBzdHJva2U6ICNGQTQ5MjU7Ci0gICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKLX0KLQot
LnNhbXBsZS10aW1lIHsKLSAgICBzdHJva2U6ICM1NDkzRDY7Ci19Ci0KLS5sZWZ0LW1lYW4gewot
ICAgIHN0cm9rZTogIzdBREQ0OTsKLSAgICBvcGFjaXR5OiAuODsKLX0KLQotLnJpZ2h0LW1lYW4g
ewotICAgIHN0cm9rZTogI0ZBNDkyNTsKLSAgICBvcGFjaXR5OiAuODsKLX0KLQotLyogLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTiBTZWN0aW9u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAqLwotCi1zZWN0aW9uI2pzb24gPiBkYXRhLAotc2VjdGlvbiN0ZXN0LWpzb24gPiBkYXRhIHsK
LSAgICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjM1LCAyMzUsIDIzNSk7Ci0gICAgYm94LXNpemlu
ZzogYm9yZGVyLWJveDsKLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxZGM0NTEwYTgwNzJjYTMwMTc2ZjU3MGIxZjIxZDRmYjdkM2Q4MDgwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMKKysrIC9kZXYvbnVs
bApAQCAtMSw0OTcgKzAsMCBAQAotd2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudCA9IHsKLSAg
ICBpdGVyYXRpb25Db3VudDogMSwKLSAgICB0ZXN0c0NvdW50OiBudWxsLAotICAgIHByb2dyZXNz
QmFyOiBudWxsLAotICAgIHJlY29yZFRhYmxlOiBudWxsLAotICAgIG9wdGlvbnM6IG51bGwsCi0g
ICAgc2NvcmU6IDAsCi0gICAgX3Jlc3VsdHNEYXNoYm9hcmQ6IG51bGwsCi0gICAgX3Jlc3VsdHNU
YWJsZTogbnVsbCwKLSAgICAKLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbihzdWl0ZXMsIG9wdGlv
bnMpCi0gICAgewotICAgICAgICB0aGlzLnRlc3RzQ291bnQgPSB0aGlzLml0ZXJhdGlvbkNvdW50
ICogc3VpdGVzLnJlZHVjZShmdW5jdGlvbiAoY291bnQsIHN1aXRlKSB7IHJldHVybiBjb3VudCAr
IHN1aXRlLnRlc3RzLmxlbmd0aDsgfSwgMCk7Ci0gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlv
bnM7Ci0gICAgfSwKLQotICAgIHdpbGxBZGRUZXN0RnJhbWU6IGZ1bmN0aW9uIChmcmFtZSkKLSAg
ICB7Ci0gICAgICAgIHZhciBtYWluID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigibWFpbiIpOwot
ICAgICAgICB2YXIgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG1haW4pOwotICAgICAgICBmcmFt
ZS5zdHlsZS5sZWZ0ID0gbWFpbi5vZmZzZXRMZWZ0ICsgcGFyc2VJbnQoc3R5bGUuYm9yZGVyTGVm
dFdpZHRoKSArIHBhcnNlSW50KHN0eWxlLnBhZGRpbmdMZWZ0KSArICJweCI7Ci0gICAgICAgIGZy
YW1lLnN0eWxlLnRvcCA9IG1haW4ub2Zmc2V0VG9wICsgcGFyc2VJbnQoc3R5bGUuYm9yZGVyVG9w
V2lkdGgpICsgcGFyc2VJbnQoc3R5bGUucGFkZGluZ1RvcCkgKyAicHgiOwotICAgIH0sCi0gICAg
Ci0gICAgZGlkUnVuVGVzdDogZnVuY3Rpb24gKCkKLSAgICB7Ci0gICAgICAgIHRoaXMucHJvZ3Jl
c3NCYXIuaW5jUmFuZ2UoKTsKLSAgICB9LAotICAgIAotICAgIHdpbGxTdGFydEZpcnN0SXRlcmF0
aW9uOiBmdW5jdGlvbiAoKQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVzdWx0c0Rhc2hib2FyZCA9
IG5ldyBSZXN1bHRzRGFzaGJvYXJkKCk7Ci0gICAgICAgIHRoaXMuX3Jlc3VsdHNUYWJsZSA9IG5l
dyBSZXN1bHRzVGFibGUoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2VjdGlvbiNyZXN1bHRzID4g
ZGF0YSA+IHRhYmxlIiksIEhlYWRlcnMpOwotICAgICAgICAKLSAgICAgICAgdGhpcy5wcm9ncmVz
c0JhciA9IG5ldyBQcm9ncmVzc0Jhcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvZ3Jlc3Mt
Y29tcGxldGVkIiksIHRoaXMudGVzdHNDb3VudCk7Ci0gICAgICAgIHRoaXMucmVjb3JkVGFibGUg
PSBuZXcgUmVzdWx0c1RhYmxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNlY3Rpb24jcnVubmlu
ZyAjcmVjb3JkID4gdGFibGUiKSwgSGVhZGVycyk7Ci0gICAgfSwKLSAgICAKLSAgICBkaWRSdW5T
dWl0ZXM6IGZ1bmN0aW9uIChzdWl0ZXNTYW1wbGVycykKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Jl
c3VsdHNEYXNoYm9hcmQucHVzaChzdWl0ZXNTYW1wbGVycyk7Ci0gICAgfSwKLSAgICAKLSAgICBk
aWRGaW5pc2hMYXN0SXRlcmF0aW9uOiBmdW5jdGlvbiAoKQotICAgIHsKLSAgICAgICAgdmFyIGpz
b24gPSB0aGlzLl9yZXN1bHRzRGFzaGJvYXJkLnRvSlNPTih0cnVlLCB0cnVlKTsKLSAgICAgICAg
dGhpcy5zY29yZSA9IGpzb25bU3RyaW5ncy5qc29uLnNjb3JlXTsKLSAgICAgICAgdGhpcy5fcmVz
dWx0c1RhYmxlLnNob3dJdGVyYXRpb25zKGpzb25bU3RyaW5ncy5qc29uLnJlc3VsdHMuaXRlcmF0
aW9uc10sIHRoaXMub3B0aW9ucyk7Ci0gICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93SlNPTigi
anNvbiIsIGpzb25bU3RyaW5ncy5qc29uLnJlc3VsdHMuaXRlcmF0aW9uc11bMF0pOwotICAgICAg
ICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZUxvY2FsU3RvcmFnZUZyb21KU09OKGpzb25bU3RyaW5ncy5q
c29uLnJlc3VsdHMuaXRlcmF0aW9uc11bMF0pOwotICAgICAgICBiZW5jaG1hcmtDb250cm9sbGVy
LnNob3dSZXN1bHRzKCk7Ci0gICAgfQotfQotCi13aW5kb3cuc2VjdGlvbnNNYW5hZ2VyID0KLXsK
LSAgICBfc2VjdGlvbkhlYWRlckgxRWxlbWVudDogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIp
Ci0gICAgewotICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiIyIgKyBzZWN0
aW9uSWRlbnRpZmllciArICIgPiBoZWFkZXIgPiBoMSIpOwotICAgIH0sCi0KLSAgICBfc2VjdGlv
bkRhdGFFbGVtZW50OiBmdW5jdGlvbihzZWN0aW9uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAg
IHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjIiArIHNlY3Rpb25JZGVudGlmaWVyICsg
IiA+IGRhdGEiKTsKLSAgICB9LAotICAgIAotICAgIF9zZWN0aW9uRGF0YURpdkVsZW1lbnQ6IGZ1
bmN0aW9uKHNlY3Rpb25JZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoIiMiICsgc2VjdGlvbklkZW50aWZpZXIgKyAiID4gIGRhdGEgPiBkaXYi
KTsKLSAgICB9LAotICAgIAotICAgIHNob3dTY29yZTogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZp
ZXIsIHRpdGxlKQotICAgIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9zZWN0aW9uSGVh
ZGVySDFFbGVtZW50KHNlY3Rpb25JZGVudGlmaWVyKTsKLSAgICAgICAgZWxlbWVudC50ZXh0Q29u
dGVudCA9IHRpdGxlICsgIjoiOwotCi0gICAgICAgIHZhciBzY29yZSA9IGJlbmNobWFya1J1bm5l
ckNsaWVudC5zY29yZS50b0ZpeGVkKDIpOwotICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ICs9
ICIgWyIgKyBTdHJpbmdzLnRleHQuc2NvcmUgKyAiID0gIiArIHNjb3JlICsgIl0iOwotICAgIH0s
Ci0gICAgCi0gICAgc2hvd1Rlc3ROYW1lOiBmdW5jdGlvbihzZWN0aW9uSWRlbnRpZmllciwgdGl0
bGUsIHRlc3ROYW1lKQotICAgIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9zZWN0aW9u
SGVhZGVySDFFbGVtZW50KHNlY3Rpb25JZGVudGlmaWVyKTsKLSAgICAgICAgZWxlbWVudC50ZXh0
Q29udGVudCA9IHRpdGxlICsgIjoiOwotCi0gICAgICAgIGlmICghdGVzdE5hbWUubGVuZ3RoKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgIGVsZW1lbnQudGV4dENv
bnRlbnQgKz0gIiBbIiArIFN0cmluZ3MudGV4dC50ZXN0TmFtZSArICIgPSAiICsgdGVzdE5hbWUg
KyAiXSI7Ci0gICAgfSwKLSAgICAKLSAgICBzaG93SlNPTjogZnVuY3Rpb24oc2VjdGlvbklkZW50
aWZpZXIsIGpzb24pCi0gICAgewotICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuX3NlY3Rpb25E
YXRhRGl2RWxlbWVudChzZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgICAgIGVsZW1lbnQudGV4dENv
bnRlbnQgPSBKU09OLnN0cmluZ2lmeShqc29uLCBmdW5jdGlvbihrZXksIHZhbHVlKSB7IAotICAg
ICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAibnVtYmVyIikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUudG9GaXhlZCgyKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAg
ICAgfSwgNCk7Ci0gICAgfSwKLSAgICAKLSAgICBzZWxlY3REYXRhOiBmdW5jdGlvbihzZWN0aW9u
SWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVB
bGxSYW5nZXMoKTsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9zZWN0aW9uRGF0YUVsZW1l
bnQoc2VjdGlvbklkZW50aWZpZXIpOwotICAgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOwotICAgICAgICByYW5nZS5zZWxlY3ROb2RlKGVsZW1lbnQpOwotICAgICAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOyAgCi0gICAgfSwKLSAgICAKLSAg
ICBzZWxlY3REYXRhQ29udGVudHM6IGZ1bmN0aW9uKHNlY3Rpb25JZGVudGlmaWVyKQotICAgIHsK
LSAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOwotICAgICAg
ICB2YXIgZWxlbWVudCA9IHRoaXMuX3NlY3Rpb25EYXRhRGl2RWxlbWVudChzZWN0aW9uSWRlbnRp
Zmllcik7Ci0gICAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Ci0gICAg
ICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlbGVtZW50KTsKLSAgICAgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKLSAgICB9LAotICAgICAgICAKLSAgICBzaG93
U2VjdGlvbjogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIsIHB1c2hTdGF0ZSkKLSAgICB7Ci0g
ICAgICAgIHZhciBjdXJyZW50U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCJzZWN0aW9uLnNlbGVjdGVkIik7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGN1cnJlbnRTZWN0
aW9uRWxlbWVudCk7Ci0KLSAgICAgICAgdmFyIG5ld1NlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkZW50aWZpZXIpOwotICAgICAgICBjb25zb2xlLmFzc2Vy
dChuZXdTZWN0aW9uRWxlbWVudCk7Ci0KLSAgICAgICAgY3VycmVudFNlY3Rpb25FbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIik7Ci0gICAgICAgIG5ld1NlY3Rpb25FbGVtZW50LmNs
YXNzTGlzdC5hZGQoInNlbGVjdGVkIik7Ci0KLSAgICAgICAgaWYgKHB1c2hTdGF0ZSkKLSAgICAg
ICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKHtzZWN0aW9uOiBzZWN0aW9uSWRlbnRpZmllcn0sIGRv
Y3VtZW50LnRpdGxlKTsKLSAgICB9LAotCi0gICAgc2V0dXBSdW5uaW5nU2VjdGlvblN0eWxlOiBm
dW5jdGlvbihvcHRpb25zKQotICAgIHsKLSAgICAgICAgaWYgKG9wdGlvbnNbImRpc3BsYXkiXSAh
PSAic3RhdGlzdGljcy10YWJsZSIpCi0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVjb3JkIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICB9Ci19Ci0KLXdpbmRvdy5v
cHRpb25zTWFuYWdlciA9Ci17Ci0gICAgdmFsdWVGb3JPcHRpb246IGZ1bmN0aW9uKG5hbWUpCi0g
ICAgewotICAgICAgICB2YXIgZm9ybUVsZW1lbnQgPSBkb2N1bWVudC5mb3Jtc1siYmVuY2htYXJr
LW9wdGlvbnMiXS5lbGVtZW50c1tuYW1lXTsKLSAgICAgICAgaWYgKGZvcm1FbGVtZW50LnR5cGUg
PT0gImNoZWNrYm94IikKLSAgICAgICAgICAgIHJldHVybiBmb3JtRWxlbWVudC5jaGVja2VkOwot
ICAgICAgICByZXR1cm4gZm9ybUVsZW1lbnQudmFsdWU7Ci0gICAgfSwKLSAgICAKLSAgICB1cGRh
dGVVSUZyb21Mb2NhbFN0b3JhZ2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBmb3Jt
RWxlbWVudHMgPSBkb2N1bWVudC5mb3Jtc1siYmVuY2htYXJrLW9wdGlvbnMiXS5lbGVtZW50czsK
LQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1FbGVtZW50cy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgdmFyIGZvcm1FbGVtZW50ID0gZm9ybUVsZW1lbnRzW2ldOwotICAgICAg
ICAgICAgdmFyIG5hbWUgPSBmb3JtRWxlbWVudC5pZCB8fCBmb3JtRWxlbWVudC5uYW1lOwotICAg
ICAgICAgICAgdmFyIHR5cGUgPSBmb3JtRWxlbWVudC50eXBlOwotCi0gICAgICAgICAgICB2YXIg
dmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKTsKLSAgICAgICAgICAgIGlmICh2YWx1
ZSA9PT0gbnVsbCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgaWYg
KHR5cGUgPT0gIm51bWJlciIpCi0gICAgICAgICAgICAgICAgZm9ybUVsZW1lbnRzW25hbWVdLnZh
bHVlID0gK3ZhbHVlOwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSAiY2hlY2tib3giKQot
ICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50c1tuYW1lXS5jaGVja2VkID0gdmFsdWUgPT0gInRy
dWUiOwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSAicmFkaW8iKQotICAgICAgICAgICAg
ICAgIGZvcm1FbGVtZW50c1tuYW1lXS52YWx1ZSA9IHZhbHVlOwotICAgICAgICB9Ci0gICAgfSwK
LQotICAgIHVwZGF0ZUxvY2FsU3RvcmFnZUZyb21VSTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgdmFyIGZvcm1FbGVtZW50cyA9IGRvY3VtZW50LmZvcm1zWyJiZW5jaG1hcmstb3B0aW9ucyJd
LmVsZW1lbnRzOwotICAgICAgICB2YXIgb3B0aW9ucyA9IHt9OyAgICAgICAgCi0KLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBmb3JtRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIHZhciBmb3JtRWxlbWVudCA9IGZvcm1FbGVtZW50c1tpXTsKLSAgICAgICAgICAgIHZhciBu
YW1lID0gZm9ybUVsZW1lbnQuaWQgfHwgZm9ybUVsZW1lbnQubmFtZTsKLSAgICAgICAgICAgIHZh
ciB0eXBlID0gZm9ybUVsZW1lbnQudHlwZTsKLQotICAgICAgICAgICAgaWYgKHR5cGUgPT0gIm51
bWJlciIpCi0gICAgICAgICAgICAgICAgb3B0aW9uc1tuYW1lXSA9IGZvcm1FbGVtZW50LnZhbHVl
OwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSAiY2hlY2tib3giKQotICAgICAgICAgICAg
ICAgIG9wdGlvbnNbbmFtZV0gPSBmb3JtRWxlbWVudC5jaGVja2VkOwotICAgICAgICAgICAgZWxz
ZSBpZiAodHlwZSA9PSAicmFkaW8iKQotICAgICAgICAgICAgICAgIG9wdGlvbnNbbmFtZV0gPSBm
b3JtRWxlbWVudHNbbmFtZV0udmFsdWU7Ci0gICAgCi0gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uu
c2V0SXRlbShuYW1lLCBvcHRpb25zW25hbWVdKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIG9wdGlvbnM7Ci0gICAgfQotfQotCi13aW5kb3cuc3VpdGVzTWFuYWdlciA9Ci17
Ci0gICAgX3RyZWVFbGVtZW50OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigiI3N1aXRlcyA+IC50cmVlIik7Ci0gICAgfSwKLSAgICAKLSAg
ICBfc3VpdGVzRWxlbWVudHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjc3VpdGVzID4gdWwgPiBsaSIpOwotICAgIH0sCi0gICAg
Ci0gICAgX2NoZWNrYm94RWxlbWVudDogZnVuY3Rpb24oZWxlbWVudCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoImlucHV0W3R5cGU9J2NoZWNrYm94J106bm90
KC5leHBhbmQtYnV0dG9uKSIpOwotICAgIH0sCi0KLSAgICBfZWRpdEVsZW1lbnQ6IGZ1bmN0aW9u
KGVsZW1lbnQpCi0gICAgewotICAgICAgICByZXR1cm4gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJp
bnB1dFt0eXBlPSdudW1iZXInXSIpOwotICAgIH0sCi0KLSAgICBfZWRpdHNFbGVtZW50czogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
IiNzdWl0ZXMgaW5wdXRbdHlwZT0nbnVtYmVyJ10iKTsKLSAgICB9LAotICAgICAgICAKLSAgICBf
bG9jYWxTdG9yYWdlTmFtZUZvclRlc3Q6IGZ1bmN0aW9uKHN1aXRlTmFtZSwgdGVzdE5hbWUpCi0g
ICAgewotICAgICAgICByZXR1cm4gc3VpdGVOYW1lICsgIi8iICsgdGVzdE5hbWU7Ci0gICAgfSwK
LQotICAgIF91cGRhdGVTdWl0ZUNoZWNrYm94U3RhdGU6IGZ1bmN0aW9uKHN1aXRlQ2hlY2tib3gp
Ci0gICAgewotICAgICAgICB2YXIgbnVtYmVyRW5hYmxlZFRlc3RzID0gMDsKLSAgICAgICAgc3Vp
dGVDaGVja2JveC50ZXN0c0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24odGVzdEVsZW1lbnQpIHsK
LSAgICAgICAgICAgIHZhciB0ZXN0Q2hlY2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQodGVz
dEVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKHRlc3RDaGVja2JveC5jaGVja2VkKQotICAgICAg
ICAgICAgICAgICsrbnVtYmVyRW5hYmxlZFRlc3RzOwotICAgICAgICB9LCB0aGlzKTsKLSAgICAg
ICAgc3VpdGVDaGVja2JveC5jaGVja2VkID0gbnVtYmVyRW5hYmxlZFRlc3RzID4gMDsKLSAgICAg
ICAgc3VpdGVDaGVja2JveC5pbmRldGVybWluYXRlID0gbnVtYmVyRW5hYmxlZFRlc3RzID4gMCAm
JiBudW1iZXJFbmFibGVkVGVzdHMgPCBzdWl0ZUNoZWNrYm94LnRlc3RzRWxlbWVudHMubGVuZ3Ro
OwotICAgIH0sCi0KLSAgICBfdXBkYXRlU3RhcnRCdXR0b25TdGF0ZTogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdmFyIHN1aXRlc0VsZW1lbnRzID0gdGhpcy5fc3VpdGVzRWxlbWVudHMoKTsK
LSAgICAgICAgdmFyIHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2hvbWUg
PiBmb290ZXIgPiBidXR0b24iKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc3VpdGVzRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBzdWl0ZUVs
ZW1lbnQgPSBzdWl0ZXNFbGVtZW50c1tpXTsKLSAgICAgICAgICAgIHZhciBzdWl0ZUNoZWNrYm94
ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHN1aXRlRWxlbWVudCk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChzdWl0ZUNoZWNrYm94LmNoZWNrZWQpIHsKLSAgICAgICAgICAgICAgICBz
dGFydEJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIAotICAgICAgICBzdGFydEJ1dHRvbi5kaXNhYmxl
ZCA9IHRydWU7Ci0gICAgfSwKLQotICAgIF9vbkNoYW5nZVN1aXRlQ2hlY2tib3g6IGZ1bmN0aW9u
KGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHNlbGVjdGVkID0gZXZlbnQudGFyZ2V0LmNoZWNr
ZWQ7Ci0gICAgICAgIGV2ZW50LnRhcmdldC50ZXN0c0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24o
dGVzdEVsZW1lbnQpIHsKLSAgICAgICAgICAgIHZhciB0ZXN0Q2hlY2tib3ggPSB0aGlzLl9jaGVj
a2JveEVsZW1lbnQodGVzdEVsZW1lbnQpOwotICAgICAgICAgICAgdGVzdENoZWNrYm94LmNoZWNr
ZWQgPSBzZWxlY3RlZDsgICAgICAgIAotICAgICAgICB9LCB0aGlzKTsKLSAgICAgICAgdGhpcy5f
dXBkYXRlU3RhcnRCdXR0b25TdGF0ZSgpOwotICAgIH0sCi0KLSAgICBfb25DaGFuZ2VUZXN0Q2hl
Y2tib3g6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHN1aXRlQ2hlY2tib3gg
PSBldmVudC50YXJnZXQuc3VpdGVDaGVja2JveDsKLSAgICAgICAgdGhpcy5fdXBkYXRlU3VpdGVD
aGVja2JveFN0YXRlKHN1aXRlQ2hlY2tib3gpOwotICAgICAgICB0aGlzLl91cGRhdGVTdGFydEJ1
dHRvblN0YXRlKCk7Ci0gICAgfSwKLQotICAgIF9jcmVhdGVTdWl0ZUVsZW1lbnQ6IGZ1bmN0aW9u
KHRyZWVFbGVtZW50LCBzdWl0ZSwgaWQpCi0gICAgewotICAgICAgICB2YXIgc3VpdGVFbGVtZW50
ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgibGkiLCB7fSwgdHJlZUVsZW1lbnQp
OwotICAgICAgICB2YXIgZXhwYW5kID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgi
aW5wdXQiLCB7IHR5cGU6ICJjaGVja2JveCIsICBjbGFzczogImV4cGFuZC1idXR0b24iLCBpZDog
aWQgfSwgc3VpdGVFbGVtZW50KTsKLSAgICAgICAgdmFyIGxhYmVsID0gRG9jdW1lbnRFeHRlbnNp
b24uY3JlYXRlRWxlbWVudCgibGFiZWwiLCB7IGNsYXNzOiAidHJlZS1sYWJlbCIsIGZvcjogaWQg
fSwgc3VpdGVFbGVtZW50KTsKLQotICAgICAgICB2YXIgc3VpdGVDaGVja2JveCA9IERvY3VtZW50
RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImlucHV0IiwgeyB0eXBlOiAiY2hlY2tib3giIH0sIGxh
YmVsKTsKLSAgICAgICAgc3VpdGVDaGVja2JveC5zdWl0ZSA9IHN1aXRlOwotICAgICAgICBzdWl0
ZUNoZWNrYm94Lm9uY2hhbmdlID0gdGhpcy5fb25DaGFuZ2VTdWl0ZUNoZWNrYm94LmJpbmQodGhp
cyk7Ci0gICAgICAgIHN1aXRlQ2hlY2tib3gudGVzdHNFbGVtZW50cyA9IFtdOwotCi0gICAgICAg
IGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIiArIHN1aXRlLm5h
bWUpKTsKLSAgICAgICAgcmV0dXJuIHN1aXRlRWxlbWVudDsKLSAgICB9LAotCi0gICAgX2NyZWF0
ZVRlc3RFbGVtZW50OiBmdW5jdGlvbihsaXN0RWxlbWVudCwgdGVzdCwgc3VpdGVDaGVja2JveCkK
LSAgICB7Ci0gICAgICAgIHZhciB0ZXN0RWxlbWVudCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0
ZUVsZW1lbnQoImxpIiwge30sIGxpc3RFbGVtZW50KTsKLSAgICAgICAgdmFyIHNwYW4gPSBEb2N1
bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJsYWJlbCIsIHsgY2xhc3M6ICJ0cmVlLWxhYmVs
IiB9LCB0ZXN0RWxlbWVudCk7Ci0KLSAgICAgICAgdmFyIHRlc3RDaGVja2JveCA9IERvY3VtZW50
RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImlucHV0IiwgeyB0eXBlOiAiY2hlY2tib3giIH0sIHNw
YW4pOwotICAgICAgICB0ZXN0Q2hlY2tib3gudGVzdCA9IHRlc3Q7Ci0gICAgICAgIHRlc3RDaGVj
a2JveC5vbmNoYW5nZSA9IHRoaXMuX29uQ2hhbmdlVGVzdENoZWNrYm94LmJpbmQodGhpcyk7Ci0g
ICAgICAgIHRlc3RDaGVja2JveC5zdWl0ZUNoZWNrYm94ID0gc3VpdGVDaGVja2JveDsKLQotICAg
ICAgICBzdWl0ZUNoZWNrYm94LnRlc3RzRWxlbWVudHMucHVzaCh0ZXN0RWxlbWVudCk7Ci0gICAg
ICAgIHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiICsgdGVzdC5u
YW1lKSk7Ci0gICAgICAgIERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImlucHV0Iiwg
eyB0eXBlOiAibnVtYmVyIiB9LCB0ZXN0RWxlbWVudCk7Ci0gICAgICAgIHJldHVybiB0ZXN0RWxl
bWVudDsKLSAgICB9LAotCi0gICAgY3JlYXRlRWxlbWVudHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX3RyZWVFbGVtZW50KCk7Ci0KLSAgICAgICAg
U3VpdGVzLmZvckVhY2goZnVuY3Rpb24oc3VpdGUsIGluZGV4KSB7Ci0gICAgICAgICAgICB2YXIg
c3VpdGVFbGVtZW50ID0gdGhpcy5fY3JlYXRlU3VpdGVFbGVtZW50KHRyZWVFbGVtZW50LCBzdWl0
ZSwgInN1aXRlLSIgKyBpbmRleCk7Ci0gICAgICAgICAgICB2YXIgbGlzdEVsZW1lbnQgPSBEb2N1
bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ1bCIsIHt9LCBzdWl0ZUVsZW1lbnQpOwotICAg
ICAgICAgICAgdmFyIHN1aXRlQ2hlY2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQoc3VpdGVF
bGVtZW50KTsKLQotICAgICAgICAgICAgc3VpdGUudGVzdHMuZm9yRWFjaChmdW5jdGlvbih0ZXN0
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRlc3RFbGVtZW50ID0gdGhpcy5fY3JlYXRlVGVzdEVs
ZW1lbnQobGlzdEVsZW1lbnQsIHRlc3QsIHN1aXRlQ2hlY2tib3gpOwotICAgICAgICAgICAgfSwg
dGhpcyk7Ci0gICAgICAgIH0sIHRoaXMpOwotICAgIH0sCi0gICAgCi0gICAgdXBkYXRlRWRpdHNF
bGVtZW50c1N0YXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgZWRpdHNFbGVtZW50
cyA9IHRoaXMuX2VkaXRzRWxlbWVudHMoKTsKLSAgICAgICAgdmFyIHNob3dDb21wbGV4aXR5SW5w
dXRzID0gb3B0aW9uc01hbmFnZXIudmFsdWVGb3JPcHRpb24oImFkanVzdG1lbnQiKSA9PSAiZml4
ZWQiOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRpdHNFbGVtZW50cy5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgdmFyIGVkaXRFbGVtZW50ID0gZWRpdHNFbGVtZW50c1tpXTsK
LSAgICAgICAgICAgIGlmIChzaG93Q29tcGxleGl0eUlucHV0cykKLSAgICAgICAgICAgICAgICBl
ZGl0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGVkaXRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIik7
Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgdXBkYXRlRGlzcGxheTogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAiZGlzcGxheS0iICsgb3B0aW9u
c01hbmFnZXIudmFsdWVGb3JPcHRpb24oImRpc3BsYXkiKTsKLSAgICB9LAotCi0gICAgdXBkYXRl
VUlGcm9tTG9jYWxTdG9yYWdlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgc3VpdGVz
RWxlbWVudHMgPSB0aGlzLl9zdWl0ZXNFbGVtZW50cygpOwotICAgICAgICAKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBzdWl0ZXNFbGVtZW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgdmFyIHN1aXRlRWxlbWVudCA9IHN1aXRlc0VsZW1lbnRzW2ldOwotICAgICAgICAgICAgdmFy
IHN1aXRlQ2hlY2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQoc3VpdGVFbGVtZW50KTsKLSAg
ICAgICAgICAgIHZhciBzdWl0ZSA9IHN1aXRlQ2hlY2tib3guc3VpdGU7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIHN1aXRlQ2hlY2tib3gudGVzdHNFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9u
KHRlc3RFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRlc3RDaGVja2JveCA9IHRoaXMu
X2NoZWNrYm94RWxlbWVudCh0ZXN0RWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgdmFyIHRlc3RF
ZGl0ID0gdGhpcy5fZWRpdEVsZW1lbnQodGVzdEVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHZh
ciB0ZXN0ID0gdGVzdENoZWNrYm94LnRlc3Q7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgdmFyIHN0ciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuX2xvY2FsU3RvcmFnZU5h
bWVGb3JUZXN0KHN1aXRlLm5hbWUsIHRlc3QubmFtZSkpOwotICAgICAgICAgICAgICAgIGlmIChz
dHIgPT09IG51bGwpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
ICAgIHZhciB2YWx1ZSA9IEpTT04ucGFyc2Uoc3RyKTsKLSAgICAgICAgICAgICAgICB0ZXN0Q2hl
Y2tib3guY2hlY2tlZCA9IHZhbHVlLmNoZWNrZWQ7Ci0gICAgICAgICAgICAgICAgdGVzdEVkaXQu
dmFsdWUgPSB2YWx1ZS5jb21wbGV4aXR5OwotICAgICAgICAgICAgfSwgdGhpcyk7Ci0KLSAgICAg
ICAgICAgIHRoaXMuX3VwZGF0ZVN1aXRlQ2hlY2tib3hTdGF0ZShzdWl0ZUNoZWNrYm94KTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhcnRCdXR0b25TdGF0ZSgp
OwotICAgIH0sCi0KLSAgICB1cGRhdGVMb2NhbFN0b3JhZ2VGcm9tVUk6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHZhciBzdWl0ZXNFbGVtZW50cyA9IHRoaXMuX3N1aXRlc0VsZW1lbnRzKCk7
Ci0gICAgICAgIHZhciBzdWl0ZXMgPSBbXTsKLSAgICAgICAgCi0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgc3VpdGVzRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBz
dWl0ZUVsZW1lbnQgPSBzdWl0ZXNFbGVtZW50c1tpXTsKLSAgICAgICAgICAgIHZhciBzdWl0ZUNo
ZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHN1aXRlRWxlbWVudCk7Ci0gICAgICAgICAg
ICB2YXIgc3VpdGUgPSBzdWl0ZUNoZWNrYm94LnN1aXRlOwotCi0gICAgICAgICAgICB2YXIgdGVz
dHMgPSBbXTsKLSAgICAgICAgICAgIHN1aXRlQ2hlY2tib3gudGVzdHNFbGVtZW50cy5mb3JFYWNo
KGZ1bmN0aW9uKHRlc3RFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRlc3RDaGVja2Jv
eCA9IHRoaXMuX2NoZWNrYm94RWxlbWVudCh0ZXN0RWxlbWVudCk7Ci0gICAgICAgICAgICAgICAg
dmFyIHRlc3RFZGl0ID0gdGhpcy5fZWRpdEVsZW1lbnQodGVzdEVsZW1lbnQpOwotICAgICAgICAg
ICAgICAgIHZhciB0ZXN0ID0gdGVzdENoZWNrYm94LnRlc3Q7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgaWYgKHRlc3RDaGVja2JveC5jaGVja2VkKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHRlc3QuY29tcGxleGl0eSA9IHRlc3RFZGl0LnZhbHVlOwotICAgICAgICAgICAgICAg
ICAgICB0ZXN0cy5wdXNoKHRlc3QpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIHZhciB2YWx1ZSA9IHsgY2hlY2tlZDogdGVzdENoZWNrYm94LmNoZWNrZWQsIGNvbXBsZXhp
dHk6IHRlc3RFZGl0LnZhbHVlIH07IAotICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJ
dGVtKHRoaXMuX2xvY2FsU3RvcmFnZU5hbWVGb3JUZXN0KHN1aXRlLm5hbWUsIHRlc3QubmFtZSks
IEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7Ci0gICAgICAgICAgICB9LCB0aGlzKTsKLQotICAgICAg
ICAgICAgaWYgKHRlc3RzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICBzdWl0ZXMucHVzaChuZXcg
U3VpdGUoc3VpdGVDaGVja2JveC5zdWl0ZS5uYW1lLCB0ZXN0cykpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIHN1aXRlczsKLSAgICB9LAotICAgIAotICAgIHVwZGF0ZUxvY2FsU3RvcmFn
ZUZyb21KU09OOiBmdW5jdGlvbihpdGVyYXRpb25SZXN1bHRzKQotICAgIHsKLSAgICAgICAgZm9y
ICh2YXIgc3VpdGVOYW1lIGluIGl0ZXJhdGlvblJlc3VsdHNbU3RyaW5ncy5qc29uLnJlc3VsdHMu
c3VpdGVzXSkgewotICAgICAgICAgICAgdmFyIHN1aXRlUmVzdWx0cyA9IGl0ZXJhdGlvblJlc3Vs
dHNbU3RyaW5ncy5qc29uLnJlc3VsdHMuc3VpdGVzXVtzdWl0ZU5hbWVdOwotCi0gICAgICAgICAg
ICBmb3IgKHZhciB0ZXN0TmFtZSBpbiBzdWl0ZVJlc3VsdHNbU3RyaW5ncy5qc29uLnJlc3VsdHMu
dGVzdHNdKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRlc3RSZXN1bHRzID0gc3VpdGVSZXN1bHRz
W1N0cmluZ3MuanNvbi5yZXN1bHRzLnRlc3RzXVt0ZXN0TmFtZV07Ci0gICAgICAgICAgICAgICAg
dmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0
eV07Ci0gICAgICAgICAgICAgICAgdmFyIGNvbXBsZXhpdHkgPSBNYXRoLnJvdW5kKGRhdGFbU3Ry
aW5ncy5qc29uLm1lYXN1cmVtZW50cy5hdmVyYWdlXSk7Ci0KLSAgICAgICAgICAgICAgICB2YXIg
dmFsdWUgPSB7IGNoZWNrZWQ6IHRydWUsIGNvbXBsZXhpdHk6IGNvbXBsZXhpdHkgfTsKLSAgICAg
ICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9sb2NhbFN0b3JhZ2VOYW1lRm9y
VGVzdChzdWl0ZU5hbWUsIHRlc3ROYW1lKSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotd2luZG93LmJlbmNobWFya0NvbnRyb2xs
ZXIgPQotewotICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGRvY3Vt
ZW50LmZvcm1zWyJiZW5jaG1hcmstb3B0aW9ucyJdLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIs
IGJlbmNobWFya0NvbnRyb2xsZXIub25Gb3JtQ2hhbmdlZCwgdHJ1ZSk7Ci0gICAgICAgIG9wdGlv
bnNNYW5hZ2VyLnVwZGF0ZVVJRnJvbUxvY2FsU3RvcmFnZSgpOwotICAgICAgICBzdWl0ZXNNYW5h
Z2VyLmNyZWF0ZUVsZW1lbnRzKCk7Ci0gICAgICAgIHN1aXRlc01hbmFnZXIudXBkYXRlVUlGcm9t
TG9jYWxTdG9yYWdlKCk7Ci0gICAgICAgIHN1aXRlc01hbmFnZXIudXBkYXRlRGlzcGxheSgpOwot
ICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZUVkaXRzRWxlbWVudHNTdGF0ZSgpOwotICAgIH0s
Ci0KLSAgICBvbkZvcm1DaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGlm
IChldmVudC50YXJnZXQubmFtZSA9PSAiYWRqdXN0bWVudCIpIHsKLSAgICAgICAgICAgIHN1aXRl
c01hbmFnZXIudXBkYXRlRWRpdHNFbGVtZW50c1N0YXRlKCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09ICJkaXNwbGF5Iikg
ewotICAgICAgICAgICAgc3VpdGVzTWFuYWdlci51cGRhdGVEaXNwbGF5KCk7Ci0gICAgICAgIH0K
LSAgICB9LAotICAgIAotICAgIF9ydW5CZW5jaG1hcms6IGZ1bmN0aW9uKHN1aXRlcywgb3B0aW9u
cykKLSAgICB7Ci0gICAgICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5pbml0aWFsaXplKHN1aXRl
cywgb3B0aW9ucyk7Ci0gICAgICAgIHZhciBmcmFtZUNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoIiNydW5uaW5nID4gI3J1bm5pbmctdGVzdCIpOwotICAgICAgICB2YXIgcnVubmVy
ID0gbmV3IEJlbmNobWFya1J1bm5lcihzdWl0ZXMsIGZyYW1lQ29udGFpbmVyIHx8IGRvY3VtZW50
LmJvZHksIGJlbmNobWFya1J1bm5lckNsaWVudCk7Ci0gICAgICAgIHJ1bm5lci5ydW5NdWx0aXBs
ZUl0ZXJhdGlvbnMoKTsKLSAgICB9LAotCi0gICAgc3RhcnRUZXN0OiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICB2YXIgb3B0aW9ucyA9IG9wdGlvbnNNYW5hZ2VyLnVwZGF0ZUxvY2FsU3RvcmFn
ZUZyb21VSSgpOwotICAgICAgICB2YXIgc3VpdGVzID0gc3VpdGVzTWFuYWdlci51cGRhdGVMb2Nh
bFN0b3JhZ2VGcm9tVUkoKTsKLSAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNldHVwUnVubmluZ1Nl
Y3Rpb25TdHlsZShvcHRpb25zKTsKLSAgICAgICAgdGhpcy5fcnVuQmVuY2htYXJrKHN1aXRlcywg
b3B0aW9ucyk7Ci0gICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93U2VjdGlvbigicnVubmluZyIp
OwotICAgIH0sCi0KLSAgICBzZWxlY3RSZXN1bHRzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICBzZWN0aW9uc01hbmFnZXIuc2VsZWN0RGF0YSgicmVzdWx0cyIpOwotICAgIH0sCi0gICAgCi0g
ICAgc2hvd1Jlc3VsdHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHNlY3Rpb25zTWFuYWdl
ci5zaG93U2NvcmUoInJlc3VsdHMiLCBTdHJpbmdzLnRleHQucmVzdWx0cy5yZXN1bHRzKTsKLSAg
ICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNob3dTZWN0aW9uKCJyZXN1bHRzIiwgdHJ1ZSk7Ci0gICAg
fSwKLSAgICAKLSAgICBzaG93SlNPTjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc2VjdGlv
bnNNYW5hZ2VyLnNob3dTY29yZSgianNvbiIsIFN0cmluZ3MudGV4dC5yZXN1bHRzLnJlc3VsdHMp
OwotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oImpzb24iLCB0cnVlKTsKLSAg
ICB9LAotCi0gICAgc2hvd1Rlc3RHcmFwaDogZnVuY3Rpb24odGVzdE5hbWUsIGF4ZXMsIHNhbXBs
ZXMsIHNhbXBsaW5nVGltZU9mZnNldCkKLSAgICB7Ci0gICAgICAgIHNlY3Rpb25zTWFuYWdlci5z
aG93VGVzdE5hbWUoInRlc3QtZ3JhcGgiLCBTdHJpbmdzLnRleHQucmVzdWx0cy5ncmFwaCwgdGVz
dE5hbWUpOwotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInRlc3QtZ3JhcGgi
LCB0cnVlKTsKLSAgICAgICAgZ3JhcGgoInNlY3Rpb24jdGVzdC1ncmFwaCA+IGRhdGEiLCBuZXcg
SW5zZXRzKDIwLCA1MCwgMjAsIDUwKSwgYXhlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0
KTsKLSAgICB9LAotCi0gICAgc2hvd1Rlc3RKU09OOiBmdW5jdGlvbih0ZXN0TmFtZSwganNvbikK
LSAgICB7Ci0gICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93VGVzdE5hbWUoInRlc3QtanNvbiIs
IFN0cmluZ3MudGV4dC5yZXN1bHRzLmdyYXBoLCB0ZXN0TmFtZSk7Ci0gICAgICAgIHNlY3Rpb25z
TWFuYWdlci5zaG93SlNPTigidGVzdC1qc29uIiwganNvbik7Ci0gICAgICAgIHNlY3Rpb25zTWFu
YWdlci5zaG93U2VjdGlvbigidGVzdC1qc29uIiwgdHJ1ZSk7Ci0gICAgfSwKLSAgICAKLSAgICBz
ZWxlY3RKU09OOiBmdW5jdGlvbihzZWN0aW9uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHNl
Y3Rpb25zTWFuYWdlci5zZWxlY3REYXRhQ29udGVudHMoc2VjdGlvbklkZW50aWZpZXIpOwotICAg
IH0sCi19Ci0KLXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYmVuY2htYXJrQ29udHJv
bGxlci5pbml0aWFsaXplKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9ydW5uZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjQ4MzQ1MjQzMzViNzU4MDc2ZGVhNDA2OGU2MTc4NjE5
NTc4MTNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5u
ZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotZnVuY3Rpb24gQmVuY2htYXJr
UnVubmVyU3RhdGUoc3VpdGVzKQotewotICAgIHRoaXMuX3N1aXRlcyA9IHN1aXRlczsKLSAgICB0
aGlzLl9zdWl0ZUluZGV4ID0gLTE7Ci0gICAgdGhpcy5fdGVzdEluZGV4ID0gMDsKLSAgICB0aGlz
Lm5leHQoKTsKLX0KLQotQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJlbnRTdWl0
ZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5k
ZXhdOwotfQotCi1CZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFRlc3QgPSBm
dW5jdGlvbigpCi17Ci0gICAgdmFyIHN1aXRlID0gdGhpcy5jdXJyZW50U3VpdGUoKTsKLSAgICBy
ZXR1cm4gc3VpdGUgPyBzdWl0ZS50ZXN0c1t0aGlzLl90ZXN0SW5kZXhdIDogbnVsbDsKLX0KLQot
QmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmlzRmlyc3RUZXN0ID0gZnVuY3Rpb24oKQot
ewotICAgIHJldHVybiAhdGhpcy5fdGVzdEluZGV4OwotfQotCi1CZW5jaG1hcmtSdW5uZXJTdGF0
ZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLl90ZXN0SW5kZXgrKzsK
LQotICAgIHZhciBzdWl0ZSA9IHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XTsKLSAgICBp
ZiAoc3VpdGUgJiYgdGhpcy5fdGVzdEluZGV4IDwgc3VpdGUudGVzdHMubGVuZ3RoKQotICAgICAg
ICByZXR1cm4gdGhpczsKLQotICAgIHRoaXMuX3Rlc3RJbmRleCA9IDA7Ci0gICAgZG8gewotICAg
ICAgICB0aGlzLl9zdWl0ZUluZGV4Kys7Ci0gICAgfSB3aGlsZSAodGhpcy5fc3VpdGVJbmRleCA8
IHRoaXMuX3N1aXRlcy5sZW5ndGggJiYgdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdLmRp
c2FibGVkKTsKLQotICAgIHJldHVybiB0aGlzOwotfQotCi1CZW5jaG1hcmtSdW5uZXJTdGF0ZS5w
cm90b3R5cGUucHJlcGFyZUN1cnJlbnRUZXN0ID0gZnVuY3Rpb24ocnVubmVyLCBmcmFtZSkKLXsK
LSAgICB2YXIgc3VpdGUgPSB0aGlzLmN1cnJlbnRTdWl0ZSgpOwotICAgIHZhciB0ZXN0ID0gdGhp
cy5jdXJyZW50VGVzdCgpOwotICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7Ci0g
ICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHN1aXRlLnByZXBhcmUocnVu
bmVyLCBmcmFtZS5jb250ZW50V2luZG93LCBmcmFtZS5jb250ZW50RG9jdW1lbnQpLnRoZW4oZnVu
Y3Rpb24ocmVzdWx0KSB7IHByb21pc2UucmVzb2x2ZShyZXN1bHQpOyB9KTsKLSAgICB9Ci0gICAg
ZnJhbWUuc3JjID0gIi4uL3Rlc3RzLyIgKyB0ZXN0LnVybDsKLSAgICByZXR1cm4gcHJvbWlzZTsK
LX0KLQotZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyKHN1aXRlcywgZnJhbWVDb250YWluZXIsIGNs
aWVudCkKLXsKLSAgICB0aGlzLl9zdWl0ZXMgPSBzdWl0ZXM7Ci0gICAgdGhpcy5fY2xpZW50ID0g
Y2xpZW50OwotICAgIHRoaXMuX2ZyYW1lQ29udGFpbmVyID0gZnJhbWVDb250YWluZXI7Ci19Ci0K
LUJlbmNobWFya1J1bm5lci5wcm90b3R5cGUud2FpdEZvckVsZW1lbnQgPSBmdW5jdGlvbihzZWxl
Y3RvcikKLXsKLSAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOwotICAgIHZhciBj
b250ZW50RG9jdW1lbnQgPSB0aGlzLl9mcmFtZS5jb250ZW50RG9jdW1lbnQ7Ci0KLSAgICBmdW5j
dGlvbiByZXNvbHZlSWZSZWFkeSgpIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSBjb250ZW50RG9j
dW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7Ci0gICAgICAgIGlmIChlbGVtZW50KQotICAg
ICAgICAgICAgcmV0dXJuIHByb21pc2UucmVzb2x2ZShlbGVtZW50KTsKLSAgICAgICAgc2V0VGlt
ZW91dChyZXNvbHZlSWZSZWFkeSwgNTApOwotICAgIH0KLQotICAgIHJlc29sdmVJZlJlYWR5KCk7
Ci0gICAgcmV0dXJuIHByb21pc2U7Ci19Ci0KLUJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2Fw
cGVuZEZyYW1lID0gZnVuY3Rpb24oKQotewotICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImlmcmFtZSIpOwotICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwg
Im5vIik7Ci0KLSAgICBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC53aWxsQWRkVGVz
dEZyYW1lKQotICAgICAgICB0aGlzLl9jbGllbnQud2lsbEFkZFRlc3RGcmFtZShmcmFtZSk7Ci0K
LSAgICB0aGlzLl9mcmFtZUNvbnRhaW5lci5pbnNlcnRCZWZvcmUoZnJhbWUsIHRoaXMuX2ZyYW1l
Q29udGFpbmVyLmZpcnN0Q2hpbGQpOwotICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7Ci0gICAgcmV0
dXJuIGZyYW1lOwotfQotCi1CZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9yZW1vdmVGcmFtZSA9
IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAodGhpcy5fZnJhbWUpIHsKLSAgICAgICAgdGhpcy5fZnJh
bWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9mcmFtZSk7Ci0gICAgICAgIHRoaXMuX2Zy
YW1lID0gbnVsbDsKLSAgICB9Ci19Ci0KLUJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRl
c3RBbmRSZWNvcmRSZXN1bHRzID0gZnVuY3Rpb24oc3RhdGUpCi17Ci0gICAgdmFyIHByb21pc2Ug
PSBuZXcgU2ltcGxlUHJvbWlzZTsKLSAgICB2YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50U3VpdGUo
KTsKLSAgICB2YXIgdGVzdCA9IHN0YXRlLmN1cnJlbnRUZXN0KCk7Ci0gICAgCi0gICAgaWYgKHRo
aXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3RUZXN0KQotICAgICAgICB0aGlz
Ll9jbGllbnQud2lsbFJ1blRlc3Qoc3VpdGUsIHRlc3QpOwotCi0gICAgdmFyIGNvbnRlbnRXaW5k
b3cgPSB0aGlzLl9mcmFtZS5jb250ZW50V2luZG93OwotICAgIHZhciBzZWxmID0gdGhpczsKLQot
ICAgIHN1aXRlLnJ1bihjb250ZW50V2luZG93LCB0ZXN0LCB0aGlzLl9jbGllbnQub3B0aW9ucywg
dGhpcy5fY2xpZW50LnJlY29yZFRhYmxlLCB0aGlzLl9jbGllbnQucHJvZ3Jlc3NCYXIpLnRoZW4o
ZnVuY3Rpb24oc2FtcGxlcikgewotICAgICAgICB2YXIgc2FtcGxlcnMgPSBzZWxmLl9zdWl0ZXNT
YW1wbGVyc1tzdWl0ZS5uYW1lXSB8fCBbXTsKLSAgICAgICAgCi0gICAgICAgIHNhbXBsZXJzW3Rl
c3QubmFtZV0gPSBzYW1wbGVyOwotICAgICAgICBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tzdWl0ZS5u
YW1lXSA9IHNhbXBsZXJzOwotCi0gICAgICAgIGlmIChzZWxmLl9jbGllbnQgJiYgc2VsZi5fY2xp
ZW50LmRpZFJ1blRlc3QpCi0gICAgICAgICAgICBzZWxmLl9jbGllbnQuZGlkUnVuVGVzdChzdWl0
ZSwgdGVzdCk7Ci0gICAgICAgIAotICAgICAgICBzdGF0ZS5uZXh0KCk7Ci0gICAgICAgIGlmIChz
dGF0ZS5jdXJyZW50U3VpdGUoKSAhPSBzdWl0ZSkKLSAgICAgICAgICAgIHNlbGYuX3JlbW92ZUZy
YW1lKCk7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShzdGF0ZSk7Ci0gICAgfSk7Ci0gICAgCi0g
ICAgcmV0dXJuIHByb21pc2U7Ci19Ci0KLUJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuc3RlcCA9
IGZ1bmN0aW9uKHN0YXRlKQotewotICAgIGlmICghc3RhdGUpIHsKLSAgICAgICAgc3RhdGUgPSBu
ZXcgQmVuY2htYXJrUnVubmVyU3RhdGUodGhpcy5fc3VpdGVzKTsKLSAgICAgICAgdGhpcy5fc3Vp
dGVzU2FtcGxlcnMgPSB7fTsKLSAgICB9Ci0KLSAgICB2YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50
U3VpdGUoKTsKLSAgICBpZiAoIXN1aXRlKSB7Ci0gICAgICAgIHRoaXMuX2ZpbmFsaXplKCk7Ci0g
ICAgICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7Ci0gICAgICAgIHByb21pc2Uu
cmVzb2x2ZSgpOwotICAgICAgICByZXR1cm4gcHJvbWlzZTsKLSAgICB9Ci0KLSAgICBpZiAoc3Rh
dGUuaXNGaXJzdFRlc3QoKSkgewotICAgICAgICB0aGlzLl9tYXN1cmVkVmFsdWVzRm9yQ3VycmVu
dFN1aXRlID0ge307Ci0gICAgICAgIHRoaXMuX2FwcGVuZEZyYW1lKCk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHN0YXRlLnByZXBhcmVDdXJyZW50VGVzdCh0aGlzLCB0aGlzLl9mcmFtZSkudGhlbihm
dW5jdGlvbihwcmVwYXJlUmV0dXJuVmFsdWUpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3J1blRl
c3RBbmRSZWNvcmRSZXN1bHRzKHN0YXRlKTsKLSAgICB9LmJpbmQodGhpcykpOwotfQotCi1CZW5j
aG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0ZXBzID0gZnVuY3Rpb24oc3RhcnRpbmdTdGF0
ZSkKLXsKLSAgICB2YXIgbmV4dENhbGxlZSA9IHRoaXMucnVuQWxsU3RlcHMuYmluZCh0aGlzKTsK
LSAgICB0aGlzLnN0ZXAoc3RhcnRpbmdTdGF0ZSkudGhlbihmdW5jdGlvbihuZXh0U3RhdGUpIHsK
LSAgICAgICAgaWYgKG5leHRTdGF0ZSkKLSAgICAgICAgICAgIG5leHRDYWxsZWUobmV4dFN0YXRl
KTsKLSAgICB9KTsKLX0KLQotQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5NdWx0aXBsZUl0
ZXJhdGlvbnMgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIHNlbGYgPSB0aGlzOwotICAgIHZhciBj
dXJyZW50SXRlcmF0aW9uID0gMDsKLQotICAgIHRoaXMuX3J1bk5leHRJdGVyYXRpb24gPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgY3VycmVudEl0ZXJhdGlvbisrOwotICAgICAgICBpZiAoY3VycmVu
dEl0ZXJhdGlvbiA8IHNlbGYuX2NsaWVudC5pdGVyYXRpb25Db3VudCkKLSAgICAgICAgICAgIHNl
bGYucnVuQWxsU3RlcHMoKTsKLSAgICAgICAgZWxzZSBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMu
X2NsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKQotICAgICAgICAgICAgc2VsZi5fY2xpZW50
LmRpZEZpbmlzaExhc3RJdGVyYXRpb24oKTsKLSAgICB9Ci0KLSAgICBpZiAoc2VsZi5fY2xpZW50
ICYmIHNlbGYuX2NsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbikKLSAgICAgICAgc2VsZi5f
Y2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKCk7Ci0KLSAgICBzZWxmLnJ1bkFsbFN0ZXBz
KCk7Ci19Ci0KLUJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2ZpbmFsaXplID0gZnVuY3Rpb24o
KQotewotICAgIHRoaXMuX3JlbW92ZUZyYW1lKCk7Ci0gICAgICAgIAotICAgIGlmICh0aGlzLl9j
bGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcykKLSAgICAgICAgdGhpcy5fY2xpZW50
LmRpZFJ1blN1aXRlcyh0aGlzLl9zdWl0ZXNTYW1wbGVycyk7Ci0KLSAgICBpZiAodGhpcy5fcnVu
TmV4dEl0ZXJhdGlvbikKLSAgICAgICAgdGhpcy5fcnVuTmV4dEl0ZXJhdGlvbigpOwotfQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvZDMu
bWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvZDMu
bWluLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTdhZTkwMzQyMzBlNzM2YmI2
MzZjMmI4MWEyNTdiNzZmYTcyOWRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2Vz
L2QzLm1pbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotIWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gbihuLHQpe3JldHVybiB0Pm4/LTE6bj50PzE6bj49dD8wOjAvMH1mdW5jdGlvbiB0KG4p
e3JldHVybiBudWxsIT1uJiYhaXNOYU4obil9ZnVuY3Rpb24gZShuKXtyZXR1cm57bGVmdDpmdW5j
dGlvbih0LGUscix1KXtmb3IoYXJndW1lbnRzLmxlbmd0aDwzJiYocj0wKSxhcmd1bWVudHMubGVu
Z3RoPDQmJih1PXQubGVuZ3RoKTt1PnI7KXt2YXIgaT1yK3U+Pj4xO24odFtpXSxlKTwwP3I9aSsx
OnU9aX1yZXR1cm4gcn0scmlnaHQ6ZnVuY3Rpb24odCxlLHIsdSl7Zm9yKGFyZ3VtZW50cy5sZW5n
dGg8MyYmKHI9MCksYXJndW1lbnRzLmxlbmd0aDw0JiYodT10Lmxlbmd0aCk7dT5yOyl7dmFyIGk9
cit1Pj4+MTtuKHRbaV0sZSk+MD91PWk6cj1pKzF9cmV0dXJuIHJ9fX1mdW5jdGlvbiByKG4pe3Jl
dHVybiBuLmxlbmd0aH1mdW5jdGlvbiB1KG4pe2Zvcih2YXIgdD0xO24qdCUxOyl0Kj0xMDtyZXR1
cm4gdH1mdW5jdGlvbiBpKG4sdCl7dHJ5e2Zvcih2YXIgZSBpbiB0KU9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShuLnByb3RvdHlwZSxlLHt2YWx1ZTp0W2VdLGVudW1lcmFibGU6ITF9KX1jYXRjaChyKXtu
LnByb3RvdHlwZT10fX1mdW5jdGlvbiBvKCl7fWZ1bmN0aW9uIGEobil7cmV0dXJuIGlhK24gaW4g
dGhpc31mdW5jdGlvbiBjKG4pe3JldHVybiBuPWlhK24sbiBpbiB0aGlzJiZkZWxldGUgdGhpc1tu
XX1mdW5jdGlvbiBzKCl7dmFyIG49W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0KXtu
LnB1c2godCl9KSxufWZ1bmN0aW9uIGwoKXt2YXIgbj0wO2Zvcih2YXIgdCBpbiB0aGlzKXQuY2hh
ckNvZGVBdCgwKT09PW9hJiYrK247cmV0dXJuIG59ZnVuY3Rpb24gZigpe2Zvcih2YXIgbiBpbiB0
aGlzKWlmKG4uY2hhckNvZGVBdCgwKT09PW9hKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGgo
KXt9ZnVuY3Rpb24gZyhuLHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9ZS5hcHBseSh0LGFy
Z3VtZW50cyk7cmV0dXJuIHI9PT10P246cn19ZnVuY3Rpb24gcChuLHQpe2lmKHQgaW4gbilyZXR1
cm4gdDt0PXQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHJpbmcoMSk7Zm9yKHZhciBl
PTAscj1hYS5sZW5ndGg7cj5lOysrZSl7dmFyIHU9YWFbZV0rdDtpZih1IGluIG4pcmV0dXJuIHV9
fWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24gZCgpe31mdW5jdGlvbiBtKG4pe2Z1bmN0aW9uIHQoKXtm
b3IodmFyIHQscj1lLHU9LTEsaT1yLmxlbmd0aDsrK3U8aTspKHQ9clt1XS5vbikmJnQuYXBwbHko
dGhpcyxhcmd1bWVudHMpO3JldHVybiBufXZhciBlPVtdLHI9bmV3IG87cmV0dXJuIHQub249ZnVu
Y3Rpb24odCx1KXt2YXIgaSxvPXIuZ2V0KHQpO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/byYm
by5vbjoobyYmKG8ub249bnVsbCxlPWUuc2xpY2UoMCxpPWUuaW5kZXhPZihvKSkuY29uY2F0KGUu
c2xpY2UoaSsxKSksci5yZW1vdmUodCkpLHUmJmUucHVzaChyLnNldCh0LHtvbjp1fSkpLG4pfSx0
fWZ1bmN0aW9uIHkoKXtaby5ldmVudC5wcmV2ZW50RGVmYXVsdCgpfWZ1bmN0aW9uIHgoKXtmb3Io
dmFyIG4sdD1aby5ldmVudDtuPXQuc291cmNlRXZlbnQ7KXQ9bjtyZXR1cm4gdH1mdW5jdGlvbiBN
KG4pe2Zvcih2YXIgdD1uZXcgZCxlPTAscj1hcmd1bWVudHMubGVuZ3RoOysrZTxyOyl0W2FyZ3Vt
ZW50c1tlXV09bSh0KTtyZXR1cm4gdC5vZj1mdW5jdGlvbihlLHIpe3JldHVybiBmdW5jdGlvbih1
KXt0cnl7dmFyIGk9dS5zb3VyY2VFdmVudD1aby5ldmVudDt1LnRhcmdldD1uLFpvLmV2ZW50PXUs
dFt1LnR5cGVdLmFwcGx5KGUscil9ZmluYWxseXtaby5ldmVudD1pfX19LHR9ZnVuY3Rpb24gXyhu
KXtyZXR1cm4gc2EobixwYSksbn1mdW5jdGlvbiBiKG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVv
ZiBuP246ZnVuY3Rpb24oKXtyZXR1cm4gbGEobix0aGlzKX19ZnVuY3Rpb24gdyhuKXtyZXR1cm4i
ZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmZ1bmN0aW9uKCl7cmV0dXJuIGZhKG4sdGhpcyl9fWZ1bmN0
aW9uIFMobix0KXtmdW5jdGlvbiBlKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUobil9ZnVuY3Rpb24g
cigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKX1mdW5jdGlvbiB1KCl7
dGhpcy5zZXRBdHRyaWJ1dGUobix0KX1mdW5jdGlvbiBpKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyhu
LnNwYWNlLG4ubG9jYWwsdCl9ZnVuY3Rpb24gbygpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVu
dHMpO251bGw9PWU/dGhpcy5yZW1vdmVBdHRyaWJ1dGUobik6dGhpcy5zZXRBdHRyaWJ1dGUobixl
KX1mdW5jdGlvbiBhKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09ZT90aGlz
LnJlbW92ZUF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyhu
LnNwYWNlLG4ubG9jYWwsZSl9cmV0dXJuIG49Wm8ubnMucXVhbGlmeShuKSxudWxsPT10P24ubG9j
YWw/cjplOiJmdW5jdGlvbiI9PXR5cGVvZiB0P24ubG9jYWw/YTpvOm4ubG9jYWw/aTp1fWZ1bmN0
aW9uIGsobil7cmV0dXJuIG4udHJpbSgpLnJlcGxhY2UoL1xzKy9nLCIgIil9ZnVuY3Rpb24gRShu
KXtyZXR1cm4gbmV3IFJlZ0V4cCgiKD86XnxcXHMrKSIrWm8ucmVxdW90ZShuKSsiKD86XFxzK3wk
KSIsImciKX1mdW5jdGlvbiBBKG4pe3JldHVybihuKyIiKS50cmltKCkuc3BsaXQoL158XHMrLyl9
ZnVuY3Rpb24gQyhuLHQpe2Z1bmN0aW9uIGUoKXtmb3IodmFyIGU9LTE7KytlPHU7KW5bZV0odGhp
cyx0KX1mdW5jdGlvbiByKCl7Zm9yKHZhciBlPS0xLHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7
KytlPHU7KW5bZV0odGhpcyxyKX1uPUEobikubWFwKE4pO3ZhciB1PW4ubGVuZ3RoO3JldHVybiJm
dW5jdGlvbiI9PXR5cGVvZiB0P3I6ZX1mdW5jdGlvbiBOKG4pe3ZhciB0PUUobik7cmV0dXJuIGZ1
bmN0aW9uKGUscil7aWYodT1lLmNsYXNzTGlzdClyZXR1cm4gcj91LmFkZChuKTp1LnJlbW92ZShu
KTt2YXIgdT1lLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiI7cj8odC5sYXN0SW5kZXg9MCx0LnRl
c3QodSl8fGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsayh1KyIgIituKSkpOmUuc2V0QXR0cmlidXRl
KCJjbGFzcyIsayh1LnJlcGxhY2UodCwiICIpKSl9fWZ1bmN0aW9uIHoobix0LGUpe2Z1bmN0aW9u
IHIoKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG4pfWZ1bmN0aW9uIHUoKXt0aGlzLnN0eWxl
LnNldFByb3BlcnR5KG4sdCxlKX1mdW5jdGlvbiBpKCl7dmFyIHI9dC5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyk7bnVsbD09cj90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG4pOnRoaXMuc3R5bGUuc2V0
UHJvcGVydHkobixyLGUpfXJldHVybiBudWxsPT10P3I6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/aTp1
fWZ1bmN0aW9uIEwobix0KXtmdW5jdGlvbiBlKCl7ZGVsZXRlIHRoaXNbbl19ZnVuY3Rpb24gcigp
e3RoaXNbbl09dH1mdW5jdGlvbiB1KCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVs
bD09ZT9kZWxldGUgdGhpc1tuXTp0aGlzW25dPWV9cmV0dXJuIG51bGw9PXQ/ZToiZnVuY3Rpb24i
PT10eXBlb2YgdD91OnJ9ZnVuY3Rpb24gVChuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9u
OihuPVpvLm5zLnF1YWxpZnkobikpLmxvY2FsP2Z1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJE
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMobi5zcGFjZSxuLmxvY2FsKX06ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0aGlzLm5hbWVzcGFjZVVSSSxu
KX19ZnVuY3Rpb24gcShuKXtyZXR1cm57X19kYXRhX186bn19ZnVuY3Rpb24gUihuKXtyZXR1cm4g
ZnVuY3Rpb24oKXtyZXR1cm4gZ2EodGhpcyxuKX19ZnVuY3Rpb24gRCh0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aHx8KHQ9biksZnVuY3Rpb24obixlKXtyZXR1cm4gbiYmZT90KG4uX19kYXRhX18s
ZS5fX2RhdGFfXyk6IW4tIWV9fWZ1bmN0aW9uIFAobix0KXtmb3IodmFyIGU9MCxyPW4ubGVuZ3Ro
O3I+ZTtlKyspZm9yKHZhciB1LGk9bltlXSxvPTAsYT1pLmxlbmd0aDthPm87bysrKSh1PWlbb10p
JiZ0KHUsbyxlKTtyZXR1cm4gbn1mdW5jdGlvbiBVKG4pe3JldHVybiBzYShuLGRhKSxufWZ1bmN0
aW9uIGoobil7dmFyIHQsZTtyZXR1cm4gZnVuY3Rpb24ocix1LGkpe3ZhciBvLGE9bltpXS51cGRh
dGUsYz1hLmxlbmd0aDtmb3IoaSE9ZSYmKGU9aSx0PTApLHU+PXQmJih0PXUrMSk7IShvPWFbdF0p
JiYrK3Q8YzspO3JldHVybiBvfX1mdW5jdGlvbiBIKCl7dmFyIG49dGhpcy5fX3RyYW5zaXRpb25f
XztuJiYrK24uYWN0aXZlfWZ1bmN0aW9uIEYobix0LGUpe2Z1bmN0aW9uIHIoKXt2YXIgdD10aGlz
W29dO3QmJih0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobix0LHQuJCksZGVsZXRlIHRoaXNbb10p
fWZ1bmN0aW9uIHUoKXt2YXIgdT1jKHQsWG8oYXJndW1lbnRzKSk7ci5jYWxsKHRoaXMpLHRoaXMu
YWRkRXZlbnRMaXN0ZW5lcihuLHRoaXNbb109dSx1LiQ9ZSksdS5fPXR9ZnVuY3Rpb24gaSgpe3Zh
ciB0LGU9bmV3IFJlZ0V4cCgiXl9fb24oW14uXSspIitaby5yZXF1b3RlKG4pKyIkIik7Zm9yKHZh
ciByIGluIHRoaXMpaWYodD1yLm1hdGNoKGUpKXt2YXIgdT10aGlzW3JdO3RoaXMucmVtb3ZlRXZl
bnRMaXN0ZW5lcih0WzFdLHUsdS4kKSxkZWxldGUgdGhpc1tyXX19dmFyIG89Il9fb24iK24sYT1u
LmluZGV4T2YoIi4iKSxjPU87YT4wJiYobj1uLnN1YnN0cmluZygwLGEpKTt2YXIgcz15YS5nZXQo
bik7cmV0dXJuIHMmJihuPXMsYz1ZKSxhP3Q/dTpyOnQ/djppfWZ1bmN0aW9uIE8obix0KXtyZXR1
cm4gZnVuY3Rpb24oZSl7dmFyIHI9Wm8uZXZlbnQ7Wm8uZXZlbnQ9ZSx0WzBdPXRoaXMuX19kYXRh
X187dHJ5e24uYXBwbHkodGhpcyx0KX1maW5hbGx5e1pvLmV2ZW50PXJ9fX1mdW5jdGlvbiBZKG4s
dCl7dmFyIGU9TyhuLHQpO3JldHVybiBmdW5jdGlvbihuKXt2YXIgdD10aGlzLHI9bi5yZWxhdGVk
VGFyZ2V0O3ImJihyPT09dHx8OCZyLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpKXx8ZS5jYWxs
KHQsbil9fWZ1bmN0aW9uIEkoKXt2YXIgbj0iLmRyYWdzdXBwcmVzcy0iKyArK01hLHQ9ImNsaWNr
IituLGU9Wm8uc2VsZWN0KFdvKS5vbigidG91Y2htb3ZlIituLHkpLm9uKCJkcmFnc3RhcnQiK24s
eSkub24oInNlbGVjdHN0YXJ0IituLHkpO2lmKHhhKXt2YXIgcj1Cby5zdHlsZSx1PXJbeGFdO3Jb
eGFdPSJub25lIn1yZXR1cm4gZnVuY3Rpb24oaSl7ZnVuY3Rpb24gbygpe2Uub24odCxudWxsKX1l
Lm9uKG4sbnVsbCkseGEmJihyW3hhXT11KSxpJiYoZS5vbih0LGZ1bmN0aW9uKCl7eSgpLG8oKX0s
ITApLHNldFRpbWVvdXQobywwKSl9fWZ1bmN0aW9uIFoobix0KXt0LmNoYW5nZWRUb3VjaGVzJiYo
dD10LmNoYW5nZWRUb3VjaGVzWzBdKTt2YXIgZT1uLm93bmVyU1ZHRWxlbWVudHx8bjtpZihlLmNy
ZWF0ZVNWR1BvaW50KXt2YXIgcj1lLmNyZWF0ZVNWR1BvaW50KCk7aWYoMD5fYSYmKFdvLnNjcm9s
bFh8fFdvLnNjcm9sbFkpKXtlPVpvLnNlbGVjdCgiYm9keSIpLmFwcGVuZCgic3ZnIikuc3R5bGUo
e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAsbGVmdDowLG1hcmdpbjowLHBhZGRpbmc6MCxib3Jk
ZXI6Im5vbmUifSwiaW1wb3J0YW50Iik7dmFyIHU9ZVswXVswXS5nZXRTY3JlZW5DVE0oKTtfYT0h
KHUuZnx8dS5lKSxlLnJlbW92ZSgpfXJldHVybiBfYT8oci54PXQucGFnZVgsci55PXQucGFnZVkp
OihyLng9dC5jbGllbnRYLHIueT10LmNsaWVudFkpLHI9ci5tYXRyaXhUcmFuc2Zvcm0obi5nZXRT
Y3JlZW5DVE0oKS5pbnZlcnNlKCkpLFtyLngsci55XX12YXIgaT1uLmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpO3JldHVyblt0LmNsaWVudFgtaS5sZWZ0LW4uY2xpZW50TGVmdCx0LmNsaWVudFktaS50
b3Atbi5jbGllbnRUb3BdfWZ1bmN0aW9uIFYoKXtyZXR1cm4gWm8uZXZlbnQuY2hhbmdlZFRvdWNo
ZXNbMF0uaWRlbnRpZmllcn1mdW5jdGlvbiBYKCl7cmV0dXJuIFpvLmV2ZW50LnRhcmdldH1mdW5j
dGlvbiAkKCl7cmV0dXJuIFdvfWZ1bmN0aW9uIEIobil7cmV0dXJuIG4+MD8xOjA+bj8tMTowfWZ1
bmN0aW9uIFcobix0LGUpe3JldHVybih0WzBdLW5bMF0pKihlWzFdLW5bMV0pLSh0WzFdLW5bMV0p
KihlWzBdLW5bMF0pfWZ1bmN0aW9uIEoobil7cmV0dXJuIG4+MT8wOi0xPm4/YmE6TWF0aC5hY29z
KG4pfWZ1bmN0aW9uIEcobil7cmV0dXJuIG4+MT9TYTotMT5uPy1TYTpNYXRoLmFzaW4obil9ZnVu
Y3Rpb24gSyhuKXtyZXR1cm4oKG49TWF0aC5leHAobikpLTEvbikvMn1mdW5jdGlvbiBRKG4pe3Jl
dHVybigobj1NYXRoLmV4cChuKSkrMS9uKS8yfWZ1bmN0aW9uIG50KG4pe3JldHVybigobj1NYXRo
LmV4cCgyKm4pKS0xKS8obisxKX1mdW5jdGlvbiB0dChuKXtyZXR1cm4obj1NYXRoLnNpbihuLzIp
KSpufWZ1bmN0aW9uIGV0KCl7fWZ1bmN0aW9uIHJ0KG4sdCxlKXtyZXR1cm4gdGhpcyBpbnN0YW5j
ZW9mIHJ0Pyh0aGlzLmg9K24sdGhpcy5zPSt0LHZvaWQodGhpcy5sPStlKSk6YXJndW1lbnRzLmxl
bmd0aDwyP24gaW5zdGFuY2VvZiBydD9uZXcgcnQobi5oLG4ucyxuLmwpOm10KCIiK24seXQscnQp
Om5ldyBydChuLHQsZSl9ZnVuY3Rpb24gdXQobix0LGUpe2Z1bmN0aW9uIHIobil7cmV0dXJuIG4+
MzYwP24tPTM2MDowPm4mJihuKz0zNjApLDYwPm4/aSsoby1pKSpuLzYwOjE4MD5uP286MjQwPm4/
aSsoby1pKSooMjQwLW4pLzYwOml9ZnVuY3Rpb24gdShuKXtyZXR1cm4gTWF0aC5yb3VuZCgyNTUq
cihuKSl9dmFyIGksbztyZXR1cm4gbj1pc05hTihuKT8wOihuJT0zNjApPDA/biszNjA6bix0PWlz
TmFOKHQpPzA6MD50PzA6dD4xPzE6dCxlPTA+ZT8wOmU+MT8xOmUsbz0uNT49ZT9lKigxK3QpOmUr
dC1lKnQsaT0yKmUtbyxuZXcgZ3QodShuKzEyMCksdShuKSx1KG4tMTIwKSl9ZnVuY3Rpb24gaXQo
bix0LGUpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaXQ/KHRoaXMuaD0rbix0aGlzLmM9K3Qsdm9p
ZCh0aGlzLmw9K2UpKTphcmd1bWVudHMubGVuZ3RoPDI/biBpbnN0YW5jZW9mIGl0P25ldyBpdChu
Lmgsbi5jLG4ubCk6biBpbnN0YW5jZW9mIGF0P3N0KG4ubCxuLmEsbi5iKTpzdCgobj14dCgobj1a
by5yZ2IobikpLnIsbi5nLG4uYikpLmwsbi5hLG4uYik6bmV3IGl0KG4sdCxlKX1mdW5jdGlvbiBv
dChuLHQsZSl7cmV0dXJuIGlzTmFOKG4pJiYobj0wKSxpc05hTih0KSYmKHQ9MCksbmV3IGF0KGUs
TWF0aC5jb3Mobio9QWEpKnQsTWF0aC5zaW4obikqdCl9ZnVuY3Rpb24gYXQobix0LGUpe3JldHVy
biB0aGlzIGluc3RhbmNlb2YgYXQ/KHRoaXMubD0rbix0aGlzLmE9K3Qsdm9pZCh0aGlzLmI9K2Up
KTphcmd1bWVudHMubGVuZ3RoPDI/biBpbnN0YW5jZW9mIGF0P25ldyBhdChuLmwsbi5hLG4uYik6
biBpbnN0YW5jZW9mIGl0P290KG4ubCxuLmMsbi5oKTp4dCgobj1ndChuKSkucixuLmcsbi5iKTpu
ZXcgYXQobix0LGUpfWZ1bmN0aW9uIGN0KG4sdCxlKXt2YXIgcj0obisxNikvMTE2LHU9cit0LzUw
MCxpPXItZS8yMDA7cmV0dXJuIHU9bHQodSkqamEscj1sdChyKSpIYSxpPWx0KGkpKkZhLG5ldyBn
dChodCgzLjI0MDQ1NDIqdS0xLjUzNzEzODUqci0uNDk4NTMxNCppKSxodCgtLjk2OTI2Nip1KzEu
ODc2MDEwOCpyKy4wNDE1NTYqaSksaHQoLjA1NTY0MzQqdS0uMjA0MDI1OSpyKzEuMDU3MjI1Mipp
KSl9ZnVuY3Rpb24gc3Qobix0LGUpe3JldHVybiBuPjA/bmV3IGl0KE1hdGguYXRhbjIoZSx0KSpD
YSxNYXRoLnNxcnQodCp0K2UqZSksbik6bmV3IGl0KDAvMCwwLzAsbil9ZnVuY3Rpb24gbHQobil7
cmV0dXJuIG4+LjIwNjg5MzAzND9uKm4qbjoobi00LzI5KS83Ljc4NzAzN31mdW5jdGlvbiBmdChu
KXtyZXR1cm4gbj4uMDA4ODU2P01hdGgucG93KG4sMS8zKTo3Ljc4NzAzNypuKzQvMjl9ZnVuY3Rp
b24gaHQobil7cmV0dXJuIE1hdGgucm91bmQoMjU1KiguMDAzMDQ+PW4/MTIuOTIqbjoxLjA1NSpN
YXRoLnBvdyhuLDEvMi40KS0uMDU1KSl9ZnVuY3Rpb24gZ3Qobix0LGUpe3JldHVybiB0aGlzIGlu
c3RhbmNlb2YgZ3Q/KHRoaXMucj1+fm4sdGhpcy5nPX5+dCx2b2lkKHRoaXMuYj1+fmUpKTphcmd1
bWVudHMubGVuZ3RoPDI/biBpbnN0YW5jZW9mIGd0P25ldyBndChuLnIsbi5nLG4uYik6bXQoIiIr
bixndCx1dCk6bmV3IGd0KG4sdCxlKX1mdW5jdGlvbiBwdChuKXtyZXR1cm4gbmV3IGd0KG4+PjE2
LDI1NSZuPj44LDI1NSZuKX1mdW5jdGlvbiB2dChuKXtyZXR1cm4gcHQobikrIiJ9ZnVuY3Rpb24g
ZHQobil7cmV0dXJuIDE2Pm4/IjAiK01hdGgubWF4KDAsbikudG9TdHJpbmcoMTYpOk1hdGgubWlu
KDI1NSxuKS50b1N0cmluZygxNil9ZnVuY3Rpb24gbXQobix0LGUpe3ZhciByLHUsaSxvPTAsYT0w
LGM9MDtpZihyPS8oW2Etel0rKVwoKC4qKVwpL2kuZXhlYyhuKSlzd2l0Y2godT1yWzJdLnNwbGl0
KCIsIiksclsxXSl7Y2FzZSJoc2wiOnJldHVybiBlKHBhcnNlRmxvYXQodVswXSkscGFyc2VGbG9h
dCh1WzFdKS8xMDAscGFyc2VGbG9hdCh1WzJdKS8xMDApO2Nhc2UicmdiIjpyZXR1cm4gdChfdCh1
WzBdKSxfdCh1WzFdKSxfdCh1WzJdKSl9cmV0dXJuKGk9SWEuZ2V0KG4pKT90KGkucixpLmcsaS5i
KToobnVsbD09bnx8IiMiIT09bi5jaGFyQXQoMCl8fGlzTmFOKGk9cGFyc2VJbnQobi5zdWJzdHJp
bmcoMSksMTYpKXx8KDQ9PT1uLmxlbmd0aD8obz0oMzg0MCZpKT4+NCxvPW8+PjR8byxhPTI0MCZp
LGE9YT4+NHxhLGM9MTUmaSxjPWM8PDR8Yyk6Nz09PW4ubGVuZ3RoJiYobz0oMTY3MTE2ODAmaSk+
PjE2LGE9KDY1MjgwJmkpPj44LGM9MjU1JmkpKSx0KG8sYSxjKSl9ZnVuY3Rpb24geXQobix0LGUp
e3ZhciByLHUsaT1NYXRoLm1pbihuLz0yNTUsdC89MjU1LGUvPTI1NSksbz1NYXRoLm1heChuLHQs
ZSksYT1vLWksYz0obytpKS8yO3JldHVybiBhPyh1PS41PmM/YS8obytpKTphLygyLW8taSkscj1u
PT1vPyh0LWUpL2ErKGU+dD82OjApOnQ9PW8/KGUtbikvYSsyOihuLXQpL2ErNCxyKj02MCk6KHI9
MC8wLHU9Yz4wJiYxPmM/MDpyKSxuZXcgcnQocix1LGMpfWZ1bmN0aW9uIHh0KG4sdCxlKXtuPU10
KG4pLHQ9TXQodCksZT1NdChlKTt2YXIgcj1mdCgoLjQxMjQ1NjQqbisuMzU3NTc2MSp0Ky4xODA0
Mzc1KmUpL2phKSx1PWZ0KCguMjEyNjcyOSpuKy43MTUxNTIyKnQrLjA3MjE3NSplKS9IYSksaT1m
dCgoLjAxOTMzMzkqbisuMTE5MTkyKnQrLjk1MDMwNDEqZSkvRmEpO3JldHVybiBhdCgxMTYqdS0x
Niw1MDAqKHItdSksMjAwKih1LWkpKX1mdW5jdGlvbiBNdChuKXtyZXR1cm4obi89MjU1KTw9LjA0
MDQ1P24vMTIuOTI6TWF0aC5wb3coKG4rLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBfdChuKXt2
YXIgdD1wYXJzZUZsb2F0KG4pO3JldHVybiIlIj09PW4uY2hhckF0KG4ubGVuZ3RoLTEpP01hdGgu
cm91bmQoMi41NSp0KTp0fWZ1bmN0aW9uIGJ0KG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBu
P246ZnVuY3Rpb24oKXtyZXR1cm4gbn19ZnVuY3Rpb24gd3Qobil7cmV0dXJuIG59ZnVuY3Rpb24g
U3Qobil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gMj09PWFyZ3VtZW50cy5sZW5ndGgm
JiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYocj1lLGU9bnVsbCksa3QodCxlLG4scil9fWZ1bmN0aW9u
IGt0KG4sdCxlLHIpe2Z1bmN0aW9uIHUoKXt2YXIgbix0PWMuc3RhdHVzO2lmKCF0JiZjLnJlc3Bv
bnNlVGV4dHx8dD49MjAwJiYzMDA+dHx8MzA0PT09dCl7dHJ5e249ZS5jYWxsKGksYyl9Y2F0Y2go
cil7cmV0dXJuIG8uZXJyb3IuY2FsbChpLHIpLHZvaWQgMH1vLmxvYWQuY2FsbChpLG4pfWVsc2Ug
by5lcnJvci5jYWxsKGksYyl9dmFyIGk9e30sbz1aby5kaXNwYXRjaCgiYmVmb3Jlc2VuZCIsInBy
b2dyZXNzIiwibG9hZCIsImVycm9yIiksYT17fSxjPW5ldyBYTUxIdHRwUmVxdWVzdCxzPW51bGw7
cmV0dXJuIVdvLlhEb21haW5SZXF1ZXN0fHwid2l0aENyZWRlbnRpYWxzImluIGN8fCEvXihodHRw
KHMpPzopP1wvXC8vLnRlc3Qobil8fChjPW5ldyBYRG9tYWluUmVxdWVzdCksIm9ubG9hZCJpbiBj
P2Mub25sb2FkPWMub25lcnJvcj11OmMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7Yy5y
ZWFkeVN0YXRlPjMmJnUoKX0sYy5vbnByb2dyZXNzPWZ1bmN0aW9uKG4pe3ZhciB0PVpvLmV2ZW50
O1pvLmV2ZW50PW47dHJ5e28ucHJvZ3Jlc3MuY2FsbChpLGMpfWZpbmFsbHl7Wm8uZXZlbnQ9dH19
LGkuaGVhZGVyPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49KG4rIiIpLnRvTG93ZXJDYXNlKCksYXJn
dW1lbnRzLmxlbmd0aDwyP2Fbbl06KG51bGw9PXQ/ZGVsZXRlIGFbbl06YVtuXT10KyIiLGkpfSxp
Lm1pbWVUeXBlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW51bGw9PW4/
bnVsbDpuKyIiLGkpOnR9LGkucmVzcG9uc2VUeXBlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhzPW4saSk6c30saS5yZXNwb25zZT1mdW5jdGlvbihuKXtyZXR1cm4gZT1uLGl9
LFsiZ2V0IiwicG9zdCJdLmZvckVhY2goZnVuY3Rpb24obil7aVtuXT1mdW5jdGlvbigpe3JldHVy
biBpLnNlbmQuYXBwbHkoaSxbbl0uY29uY2F0KFhvKGFyZ3VtZW50cykpKX19KSxpLnNlbmQ9ZnVu
Y3Rpb24oZSxyLHUpe2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2Yg
ciYmKHU9cixyPW51bGwpLGMub3BlbihlLG4sITApLG51bGw9PXR8fCJhY2NlcHQiaW4gYXx8KGEu
YWNjZXB0PXQrIiwqLyoiKSxjLnNldFJlcXVlc3RIZWFkZXIpZm9yKHZhciBsIGluIGEpYy5zZXRS
ZXF1ZXN0SGVhZGVyKGwsYVtsXSk7cmV0dXJuIG51bGwhPXQmJmMub3ZlcnJpZGVNaW1lVHlwZSYm
Yy5vdmVycmlkZU1pbWVUeXBlKHQpLG51bGwhPXMmJihjLnJlc3BvbnNlVHlwZT1zKSxudWxsIT11
JiZpLm9uKCJlcnJvciIsdSkub24oImxvYWQiLGZ1bmN0aW9uKG4pe3UobnVsbCxuKX0pLG8uYmVm
b3Jlc2VuZC5jYWxsKGksYyksYy5zZW5kKG51bGw9PXI/bnVsbDpyKSxpfSxpLmFib3J0PWZ1bmN0
aW9uKCl7cmV0dXJuIGMuYWJvcnQoKSxpfSxaby5yZWJpbmQoaSxvLCJvbiIpLG51bGw9PXI/aTpp
LmdldChFdChyKSl9ZnVuY3Rpb24gRXQobil7cmV0dXJuIDE9PT1uLmxlbmd0aD9mdW5jdGlvbih0
LGUpe24obnVsbD09dD9lOm51bGwpfTpufWZ1bmN0aW9uIEF0KCl7dmFyIG49Q3QoKSx0PU50KCkt
bjt0PjI0Pyhpc0Zpbml0ZSh0KSYmKGNsZWFyVGltZW91dCgkYSksJGE9c2V0VGltZW91dChBdCx0
KSksWGE9MCk6KFhhPTEsV2EoQXQpKX1mdW5jdGlvbiBDdCgpe3ZhciBuPURhdGUubm93KCk7Zm9y
KEJhPVphO0JhOyluPj1CYS50JiYoQmEuZj1CYS5jKG4tQmEudCkpLEJhPUJhLm47cmV0dXJuIG59
ZnVuY3Rpb24gTnQoKXtmb3IodmFyIG4sdD1aYSxlPTEvMDt0Oyl0LmY/dD1uP24ubj10Lm46WmE9
dC5uOih0LnQ8ZSYmKGU9dC50KSx0PShuPXQpLm4pO3JldHVybiBWYT1uLGV9ZnVuY3Rpb24genQo
bix0KXtyZXR1cm4gdC0obj9NYXRoLmNlaWwoTWF0aC5sb2cobikvTWF0aC5MTjEwKToxKX1mdW5j
dGlvbiBMdChuLHQpe3ZhciBlPU1hdGgucG93KDEwLDMqdWEoOC10KSk7cmV0dXJue3NjYWxlOnQ+
OD9mdW5jdGlvbihuKXtyZXR1cm4gbi9lfTpmdW5jdGlvbihuKXtyZXR1cm4gbiplfSxzeW1ib2w6
bn19ZnVuY3Rpb24gVHQobil7dmFyIHQ9bi5kZWNpbWFsLGU9bi50aG91c2FuZHMscj1uLmdyb3Vw
aW5nLHU9bi5jdXJyZW5jeSxpPXI/ZnVuY3Rpb24obil7Zm9yKHZhciB0PW4ubGVuZ3RoLHU9W10s
aT0wLG89clswXTt0PjAmJm8+MDspdS5wdXNoKG4uc3Vic3RyaW5nKHQtPW8sdCtvKSksbz1yW2k9
KGkrMSklci5sZW5ndGhdO3JldHVybiB1LnJldmVyc2UoKS5qb2luKGUpfTp3dDtyZXR1cm4gZnVu
Y3Rpb24obil7dmFyIGU9R2EuZXhlYyhuKSxyPWVbMV18fCIgIixvPWVbMl18fCI+IixhPWVbM118
fCIiLGM9ZVs0XXx8IiIscz1lWzVdLGw9K2VbNl0sZj1lWzddLGg9ZVs4XSxnPWVbOV0scD0xLHY9
IiIsZD0iIixtPSExO3N3aXRjaChoJiYoaD0raC5zdWJzdHJpbmcoMSkpLChzfHwiMCI9PT1yJiYi
PSI9PT1vKSYmKHM9cj0iMCIsbz0iPSIsZiYmKGwtPU1hdGguZmxvb3IoKGwtMSkvNCkpKSxnKXtj
YXNlIm4iOmY9ITAsZz0iZyI7YnJlYWs7Y2FzZSIlIjpwPTEwMCxkPSIlIixnPSJmIjticmVhaztj
YXNlInAiOnA9MTAwLGQ9IiUiLGc9InIiO2JyZWFrO2Nhc2UiYiI6Y2FzZSJvIjpjYXNlIngiOmNh
c2UiWCI6IiMiPT09YyYmKHY9IjAiK2cudG9Mb3dlckNhc2UoKSk7Y2FzZSJjIjpjYXNlImQiOm09
ITAsaD0wO2JyZWFrO2Nhc2UicyI6cD0tMSxnPSJyIn0iJCI9PT1jJiYodj11WzBdLGQ9dVsxXSks
InIiIT1nfHxofHwoZz0iZyIpLG51bGwhPWgmJigiZyI9PWc/aD1NYXRoLm1heCgxLE1hdGgubWlu
KDIxLGgpKTooImUiPT1nfHwiZiI9PWcpJiYoaD1NYXRoLm1heCgwLE1hdGgubWluKDIwLGgpKSkp
LGc9S2EuZ2V0KGcpfHxxdDt2YXIgeT1zJiZmO3JldHVybiBmdW5jdGlvbihuKXt2YXIgZT1kO2lm
KG0mJm4lMSlyZXR1cm4iIjt2YXIgdT0wPm58fDA9PT1uJiYwPjEvbj8obj0tbiwiLSIpOmE7aWYo
MD5wKXt2YXIgYz1aby5mb3JtYXRQcmVmaXgobixoKTtuPWMuc2NhbGUobiksZT1jLnN5bWJvbCtk
fWVsc2Ugbio9cDtuPWcobixoKTt2YXIgeD1uLmxhc3RJbmRleE9mKCIuIiksTT0wPng/bjpuLnN1
YnN0cmluZygwLHgpLF89MD54PyIiOnQrbi5zdWJzdHJpbmcoeCsxKTshcyYmZiYmKE09aShNKSk7
dmFyIGI9di5sZW5ndGgrTS5sZW5ndGgrXy5sZW5ndGgrKHk/MDp1Lmxlbmd0aCksdz1sPmI/bmV3
IEFycmF5KGI9bC1iKzEpLmpvaW4ocik6IiI7cmV0dXJuIHkmJihNPWkodytNKSksdSs9dixuPU0r
XywoIjwiPT09bz91K24rdzoiPiI9PT1vP3crdStuOiJeIj09PW8/dy5zdWJzdHJpbmcoMCxiPj49
MSkrdStuK3cuc3Vic3RyaW5nKGIpOnUrKHk/bjp3K24pKStlfX19ZnVuY3Rpb24gcXQobil7cmV0
dXJuIG4rIiJ9ZnVuY3Rpb24gUnQoKXt0aGlzLl89bmV3IERhdGUoYXJndW1lbnRzLmxlbmd0aD4x
P0RhdGUuVVRDLmFwcGx5KHRoaXMsYXJndW1lbnRzKTphcmd1bWVudHNbMF0pfWZ1bmN0aW9uIER0
KG4sdCxlKXtmdW5jdGlvbiByKHQpe3ZhciBlPW4odCkscj1pKGUsMSk7cmV0dXJuIHItdD50LWU/
ZTpyfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIHQoZT1uKG5ldyBuYyhlLTEpKSwxKSxlfWZ1bmN0aW9u
IGkobixlKXtyZXR1cm4gdChuPW5ldyBuYygrbiksZSksbn1mdW5jdGlvbiBvKG4scixpKXt2YXIg
bz11KG4pLGE9W107aWYoaT4xKWZvcig7cj5vOyllKG8pJWl8fGEucHVzaChuZXcgRGF0ZSgrbykp
LHQobywxKTtlbHNlIGZvcig7cj5vOylhLnB1c2gobmV3IERhdGUoK28pKSx0KG8sMSk7cmV0dXJu
IGF9ZnVuY3Rpb24gYShuLHQsZSl7dHJ5e25jPVJ0O3ZhciByPW5ldyBSdDtyZXR1cm4gci5fPW4s
byhyLHQsZSl9ZmluYWxseXtuYz1EYXRlfX1uLmZsb29yPW4sbi5yb3VuZD1yLG4uY2VpbD11LG4u
b2Zmc2V0PWksbi5yYW5nZT1vO3ZhciBjPW4udXRjPVB0KG4pO3JldHVybiBjLmZsb29yPWMsYy5y
b3VuZD1QdChyKSxjLmNlaWw9UHQodSksYy5vZmZzZXQ9UHQoaSksYy5yYW5nZT1hLG59ZnVuY3Rp
b24gUHQobil7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dHJ5e25jPVJ0O3ZhciByPW5ldyBSdDtyZXR1
cm4gci5fPXQsbihyLGUpLl99ZmluYWxseXtuYz1EYXRlfX19ZnVuY3Rpb24gVXQobil7ZnVuY3Rp
b24gdChuKXtmdW5jdGlvbiB0KHQpe2Zvcih2YXIgZSx1LGksbz1bXSxhPS0xLGM9MDsrK2E8cjsp
Mzc9PT1uLmNoYXJDb2RlQXQoYSkmJihvLnB1c2gobi5zdWJzdHJpbmcoYyxhKSksbnVsbCE9KHU9
ZWNbZT1uLmNoYXJBdCgrK2EpXSkmJihlPW4uY2hhckF0KCsrYSkpLChpPUNbZV0pJiYoZT1pKHQs
bnVsbD09dT8iZSI9PT1lPyIgIjoiMCI6dSkpLG8ucHVzaChlKSxjPWErMSk7cmV0dXJuIG8ucHVz
aChuLnN1YnN0cmluZyhjLGEpKSxvLmpvaW4oIiIpfXZhciByPW4ubGVuZ3RoO3JldHVybiB0LnBh
cnNlPWZ1bmN0aW9uKHQpe3ZhciByPXt5OjE5MDAsbTowLGQ6MSxIOjAsTTowLFM6MCxMOjAsWjpu
dWxsfSx1PWUocixuLHQsMCk7aWYodSE9dC5sZW5ndGgpcmV0dXJuIG51bGw7InAiaW4gciYmKHIu
SD1yLkglMTIrMTIqci5wKTt2YXIgaT1udWxsIT1yLlomJm5jIT09UnQsbz1uZXcoaT9SdDpuYyk7
cmV0dXJuImoiaW4gcj9vLnNldEZ1bGxZZWFyKHIueSwwLHIuaik6InciaW4gciYmKCJXImluIHJ8
fCJVImluIHIpPyhvLnNldEZ1bGxZZWFyKHIueSwwLDEpLG8uc2V0RnVsbFllYXIoci55LDAsIlci
aW4gcj8oci53KzYpJTcrNypyLlctKG8uZ2V0RGF5KCkrNSklNzpyLncrNypyLlUtKG8uZ2V0RGF5
KCkrNiklNykpOm8uc2V0RnVsbFllYXIoci55LHIubSxyLmQpLG8uc2V0SG91cnMoci5IK01hdGgu
Zmxvb3Ioci5aLzEwMCksci5NK3IuWiUxMDAsci5TLHIuTCksaT9vLl86b30sdC50b1N0cmluZz1m
dW5jdGlvbigpe3JldHVybiBufSx0fWZ1bmN0aW9uIGUobix0LGUscil7Zm9yKHZhciB1LGksbyxh
PTAsYz10Lmxlbmd0aCxzPWUubGVuZ3RoO2M+YTspe2lmKHI+PXMpcmV0dXJuLTE7aWYodT10LmNo
YXJDb2RlQXQoYSsrKSwzNz09PXUpe2lmKG89dC5jaGFyQXQoYSsrKSxpPU5bbyBpbiBlYz90LmNo
YXJBdChhKyspOm9dLCFpfHwocj1pKG4sZSxyKSk8MClyZXR1cm4tMX1lbHNlIGlmKHUhPWUuY2hh
ckNvZGVBdChyKyspKXJldHVybi0xfXJldHVybiByfWZ1bmN0aW9uIHIobix0LGUpe2IubGFzdElu
ZGV4PTA7dmFyIHI9Yi5leGVjKHQuc3Vic3RyaW5nKGUpKTtyZXR1cm4gcj8obi53PXcuZ2V0KHJb
MF0udG9Mb3dlckNhc2UoKSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdShuLHQsZSl7TS5s
YXN0SW5kZXg9MDt2YXIgcj1NLmV4ZWModC5zdWJzdHJpbmcoZSkpO3JldHVybiByPyhuLnc9Xy5n
ZXQoclswXS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBpKG4sdCxl
KXtFLmxhc3RJbmRleD0wO3ZhciByPUUuZXhlYyh0LnN1YnN0cmluZyhlKSk7cmV0dXJuIHI/KG4u
bT1BLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG8o
bix0LGUpe1MubGFzdEluZGV4PTA7dmFyIHI9Uy5leGVjKHQuc3Vic3RyaW5nKGUpKTtyZXR1cm4g
cj8obi5tPWsuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rp
b24gYShuLHQscil7cmV0dXJuIGUobixDLmMudG9TdHJpbmcoKSx0LHIpfWZ1bmN0aW9uIGMobix0
LHIpe3JldHVybiBlKG4sQy54LnRvU3RyaW5nKCksdCxyKX1mdW5jdGlvbiBzKG4sdCxyKXtyZXR1
cm4gZShuLEMuWC50b1N0cmluZygpLHQscil9ZnVuY3Rpb24gbChuLHQsZSl7dmFyIHI9eC5nZXQo
dC5zdWJzdHJpbmcoZSxlKz0yKS50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gbnVsbD09cj8tMToobi5w
PXIsZSl9dmFyIGY9bi5kYXRlVGltZSxoPW4uZGF0ZSxnPW4udGltZSxwPW4ucGVyaW9kcyx2PW4u
ZGF5cyxkPW4uc2hvcnREYXlzLG09bi5tb250aHMseT1uLnNob3J0TW9udGhzO3QudXRjPWZ1bmN0
aW9uKG4pe2Z1bmN0aW9uIGUobil7dHJ5e25jPVJ0O3ZhciB0PW5ldyBuYztyZXR1cm4gdC5fPW4s
cih0KX1maW5hbGx5e25jPURhdGV9fXZhciByPXQobik7cmV0dXJuIGUucGFyc2U9ZnVuY3Rpb24o
bil7dHJ5e25jPVJ0O3ZhciB0PXIucGFyc2Uobik7cmV0dXJuIHQmJnQuX31maW5hbGx5e25jPURh
dGV9fSxlLnRvU3RyaW5nPXIudG9TdHJpbmcsZX0sdC5tdWx0aT10LnV0Yy5tdWx0aT1yZTt2YXIg
eD1aby5tYXAoKSxNPUh0KHYpLF89RnQodiksYj1IdChkKSx3PUZ0KGQpLFM9SHQobSksaz1GdCht
KSxFPUh0KHkpLEE9RnQoeSk7cC5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7eC5zZXQobi50b0xvd2Vy
Q2FzZSgpLHQpfSk7dmFyIEM9e2E6ZnVuY3Rpb24obil7cmV0dXJuIGRbbi5nZXREYXkoKV19LEE6
ZnVuY3Rpb24obil7cmV0dXJuIHZbbi5nZXREYXkoKV19LGI6ZnVuY3Rpb24obil7cmV0dXJuIHlb
bi5nZXRNb250aCgpXX0sQjpmdW5jdGlvbihuKXtyZXR1cm4gbVtuLmdldE1vbnRoKCldfSxjOnQo
ZiksZDpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldERhdGUoKSx0LDIpfSxlOmZ1bmN0aW9u
KG4sdCl7cmV0dXJuIGp0KG4uZ2V0RGF0ZSgpLHQsMil9LEg6ZnVuY3Rpb24obix0KXtyZXR1cm4g
anQobi5nZXRIb3VycygpLHQsMil9LEk6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobi5nZXRIb3Vy
cygpJTEyfHwxMix0LDIpfSxqOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KDErUWEuZGF5T2ZZZWFy
KG4pLHQsMyl9LEw6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobi5nZXRNaWxsaXNlY29uZHMoKSx0
LDMpfSxtOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0TW9udGgoKSsxLHQsMil9LE06ZnVu
Y3Rpb24obix0KXtyZXR1cm4ganQobi5nZXRNaW51dGVzKCksdCwyKX0scDpmdW5jdGlvbihuKXty
ZXR1cm4gcFsrKG4uZ2V0SG91cnMoKT49MTIpXX0sUzpmdW5jdGlvbihuLHQpe3JldHVybiBqdChu
LmdldFNlY29uZHMoKSx0LDIpfSxVOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KFFhLnN1bmRheU9m
WWVhcihuKSx0LDIpfSx3OmZ1bmN0aW9uKG4pe3JldHVybiBuLmdldERheSgpfSxXOmZ1bmN0aW9u
KG4sdCl7cmV0dXJuIGp0KFFhLm1vbmRheU9mWWVhcihuKSx0LDIpfSx4OnQoaCksWDp0KGcpLHk6
ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobi5nZXRGdWxsWWVhcigpJTEwMCx0LDIpfSxZOmZ1bmN0
aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0RnVsbFllYXIoKSUxZTQsdCw0KX0sWjp0ZSwiJSI6ZnVu
Y3Rpb24oKXtyZXR1cm4iJSJ9fSxOPXthOnIsQTp1LGI6aSxCOm8sYzphLGQ6V3QsZTpXdCxIOkd0
LEk6R3QsajpKdCxMOm5lLG06QnQsTTpLdCxwOmwsUzpRdCxVOll0LHc6T3QsVzpJdCx4OmMsWDpz
LHk6VnQsWTpadCxaOlh0LCIlIjplZX07cmV0dXJuIHR9ZnVuY3Rpb24ganQobix0LGUpe3ZhciBy
PTA+bj8iLSI6IiIsdT0ocj8tbjpuKSsiIixpPXUubGVuZ3RoO3JldHVybiByKyhlPmk/bmV3IEFy
cmF5KGUtaSsxKS5qb2luKHQpK3U6dSl9ZnVuY3Rpb24gSHQobil7cmV0dXJuIG5ldyBSZWdFeHAo
Il4oPzoiK24ubWFwKFpvLnJlcXVvdGUpLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBGdChu
KXtmb3IodmFyIHQ9bmV3IG8sZT0tMSxyPW4ubGVuZ3RoOysrZTxyOyl0LnNldChuW2VdLnRvTG93
ZXJDYXNlKCksZSk7cmV0dXJuIHR9ZnVuY3Rpb24gT3Qobix0LGUpe3JjLmxhc3RJbmRleD0wO3Zh
ciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzEpKTtyZXR1cm4gcj8obi53PStyWzBdLGUrclsw
XS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFl0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5l
eGVjKHQuc3Vic3RyaW5nKGUpKTtyZXR1cm4gcj8obi5VPStyWzBdLGUrclswXS5sZW5ndGgpOi0x
fWZ1bmN0aW9uIEl0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3Ry
aW5nKGUpKTtyZXR1cm4gcj8obi5XPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFp0
KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSs0KSk7
cmV0dXJuIHI/KG4ueT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBWdChuLHQsZSl7
cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiBy
PyhuLnk9JHQoK3JbMF0pLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFh0KG4sdCxlKXtyZXR1
cm4vXlsrLV1cZHs0fSQvLnRlc3QodD10LnN1YnN0cmluZyhlLGUrNSkpPyhuLlo9LXQsZSs1KTot
MX1mdW5jdGlvbiAkdChuKXtyZXR1cm4gbisobj42OD8xOTAwOjJlMyl9ZnVuY3Rpb24gQnQobix0
LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzIpKTtyZXR1
cm4gcj8obi5tPXJbMF0tMSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBXdChuLHQsZSl7cmMu
bGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhu
LmQ9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSnQobix0LGUpe3JjLmxhc3RJbmRl
eD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzMpKTtyZXR1cm4gcj8obi5qPStyWzBd
LGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEd0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIg
cj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4uSD0rclswXSxlK3JbMF0u
bGVuZ3RoKTotMX1mdW5jdGlvbiBLdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhl
Yyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhuLk09K3JbMF0sZStyWzBdLmxlbmd0aCk6
LTF9ZnVuY3Rpb24gUXQobix0LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJz
dHJpbmcoZSxlKzIpKTtyZXR1cm4gcj8obi5TPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0
aW9uIG5lKG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3RyaW5nKGUs
ZSszKSk7cmV0dXJuIHI/KG4uTD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB0ZShu
KXt2YXIgdD1uLmdldFRpbWV6b25lT2Zmc2V0KCksZT10PjA/Ii0iOiIrIixyPX5+KHVhKHQpLzYw
KSx1PXVhKHQpJTYwO3JldHVybiBlK2p0KHIsIjAiLDIpK2p0KHUsIjAiLDIpfWZ1bmN0aW9uIGVl
KG4sdCxlKXt1Yy5sYXN0SW5kZXg9MDt2YXIgcj11Yy5leGVjKHQuc3Vic3RyaW5nKGUsZSsxKSk7
cmV0dXJuIHI/ZStyWzBdLmxlbmd0aDotMX1mdW5jdGlvbiByZShuKXtmb3IodmFyIHQ9bi5sZW5n
dGgsZT0tMTsrK2U8dDspbltlXVswXT10aGlzKG5bZV1bMF0pO3JldHVybiBmdW5jdGlvbih0KXtm
b3IodmFyIGU9MCxyPW5bZV07IXJbMV0odCk7KXI9blsrK2VdO3JldHVybiByWzBdKHQpfX1mdW5j
dGlvbiB1ZSgpe31mdW5jdGlvbiBpZShuLHQsZSl7dmFyIHI9ZS5zPW4rdCx1PXItbixpPXItdTtl
LnQ9bi1pKyh0LXUpfWZ1bmN0aW9uIG9lKG4sdCl7biYmY2MuaGFzT3duUHJvcGVydHkobi50eXBl
KSYmY2Nbbi50eXBlXShuLHQpfWZ1bmN0aW9uIGFlKG4sdCxlKXt2YXIgcix1PS0xLGk9bi5sZW5n
dGgtZTtmb3IodC5saW5lU3RhcnQoKTsrK3U8aTspcj1uW3VdLHQucG9pbnQoclswXSxyWzFdLHJb
Ml0pO3QubGluZUVuZCgpfWZ1bmN0aW9uIGNlKG4sdCl7dmFyIGU9LTEscj1uLmxlbmd0aDtmb3Io
dC5wb2x5Z29uU3RhcnQoKTsrK2U8cjspYWUobltlXSx0LDEpO3QucG9seWdvbkVuZCgpfWZ1bmN0
aW9uIHNlKCl7ZnVuY3Rpb24gbihuLHQpe24qPUFhLHQ9dCpBYS8yK2JhLzQ7dmFyIGU9bi1yLG89
ZT49MD8xOi0xLGE9byplLGM9TWF0aC5jb3ModCkscz1NYXRoLnNpbih0KSxsPWkqcyxmPXUqYyts
Kk1hdGguY29zKGEpLGg9bCpvKk1hdGguc2luKGEpO2xjLmFkZChNYXRoLmF0YW4yKGgsZikpLHI9
bix1PWMsaT1zfXZhciB0LGUscix1LGk7ZmMucG9pbnQ9ZnVuY3Rpb24obyxhKXtmYy5wb2ludD1u
LHI9KHQ9bykqQWEsdT1NYXRoLmNvcyhhPShlPWEpKkFhLzIrYmEvNCksaT1NYXRoLnNpbihhKX0s
ZmMubGluZUVuZD1mdW5jdGlvbigpe24odCxlKX19ZnVuY3Rpb24gbGUobil7dmFyIHQ9blswXSxl
PW5bMV0scj1NYXRoLmNvcyhlKTtyZXR1cm5bcipNYXRoLmNvcyh0KSxyKk1hdGguc2luKHQpLE1h
dGguc2luKGUpXX1mdW5jdGlvbiBmZShuLHQpe3JldHVybiBuWzBdKnRbMF0rblsxXSp0WzFdK25b
Ml0qdFsyXX1mdW5jdGlvbiBoZShuLHQpe3JldHVybltuWzFdKnRbMl0tblsyXSp0WzFdLG5bMl0q
dFswXS1uWzBdKnRbMl0sblswXSp0WzFdLW5bMV0qdFswXV19ZnVuY3Rpb24gZ2Uobix0KXtuWzBd
Kz10WzBdLG5bMV0rPXRbMV0sblsyXSs9dFsyXX1mdW5jdGlvbiBwZShuLHQpe3JldHVybltuWzBd
KnQsblsxXSp0LG5bMl0qdF19ZnVuY3Rpb24gdmUobil7dmFyIHQ9TWF0aC5zcXJ0KG5bMF0qblsw
XStuWzFdKm5bMV0rblsyXSpuWzJdKTtuWzBdLz10LG5bMV0vPXQsblsyXS89dH1mdW5jdGlvbiBk
ZShuKXtyZXR1cm5bTWF0aC5hdGFuMihuWzFdLG5bMF0pLEcoblsyXSldfWZ1bmN0aW9uIG1lKG4s
dCl7cmV0dXJuIHVhKG5bMF0tdFswXSk8a2EmJnVhKG5bMV0tdFsxXSk8a2F9ZnVuY3Rpb24geWUo
bix0KXtuKj1BYTt2YXIgZT1NYXRoLmNvcyh0Kj1BYSk7eGUoZSpNYXRoLmNvcyhuKSxlKk1hdGgu
c2luKG4pLE1hdGguc2luKHQpKX1mdW5jdGlvbiB4ZShuLHQsZSl7KytoYyxwYys9KG4tcGMpL2hj
LHZjKz0odC12YykvaGMsZGMrPShlLWRjKS9oY31mdW5jdGlvbiBNZSgpe2Z1bmN0aW9uIG4obix1
KXtuKj1BYTt2YXIgaT1NYXRoLmNvcyh1Kj1BYSksbz1pKk1hdGguY29zKG4pLGE9aSpNYXRoLnNp
bihuKSxjPU1hdGguc2luKHUpLHM9TWF0aC5hdGFuMihNYXRoLnNxcnQoKHM9ZSpjLXIqYSkqcyso
cz1yKm8tdCpjKSpzKyhzPXQqYS1lKm8pKnMpLHQqbytlKmErcipjKTtnYys9cyxtYys9cyoodCso
dD1vKSkseWMrPXMqKGUrKGU9YSkpLHhjKz1zKihyKyhyPWMpKSx4ZSh0LGUscil9dmFyIHQsZSxy
O3djLnBvaW50PWZ1bmN0aW9uKHUsaSl7dSo9QWE7dmFyIG89TWF0aC5jb3MoaSo9QWEpO3Q9bypN
YXRoLmNvcyh1KSxlPW8qTWF0aC5zaW4odSkscj1NYXRoLnNpbihpKSx3Yy5wb2ludD1uLHhlKHQs
ZSxyKX19ZnVuY3Rpb24gX2UoKXt3Yy5wb2ludD15ZX1mdW5jdGlvbiBiZSgpe2Z1bmN0aW9uIG4o
bix0KXtuKj1BYTt2YXIgZT1NYXRoLmNvcyh0Kj1BYSksbz1lKk1hdGguY29zKG4pLGE9ZSpNYXRo
LnNpbihuKSxjPU1hdGguc2luKHQpLHM9dSpjLWkqYSxsPWkqby1yKmMsZj1yKmEtdSpvLGg9TWF0
aC5zcXJ0KHMqcytsKmwrZipmKSxnPXIqbyt1KmEraSpjLHA9aCYmLUooZykvaCx2PU1hdGguYXRh
bjIoaCxnKTtNYys9cCpzLF9jKz1wKmwsYmMrPXAqZixnYys9dixtYys9dioocisocj1vKSkseWMr
PXYqKHUrKHU9YSkpLHhjKz12KihpKyhpPWMpKSx4ZShyLHUsaSl9dmFyIHQsZSxyLHUsaTt3Yy5w
b2ludD1mdW5jdGlvbihvLGEpe3Q9byxlPWEsd2MucG9pbnQ9bixvKj1BYTt2YXIgYz1NYXRoLmNv
cyhhKj1BYSk7cj1jKk1hdGguY29zKG8pLHU9YypNYXRoLnNpbihvKSxpPU1hdGguc2luKGEpLHhl
KHIsdSxpKX0sd2MubGluZUVuZD1mdW5jdGlvbigpe24odCxlKSx3Yy5saW5lRW5kPV9lLHdjLnBv
aW50PXllfX1mdW5jdGlvbiB3ZSgpe3JldHVybiEwfWZ1bmN0aW9uIFNlKG4sdCxlLHIsdSl7dmFy
IGk9W10sbz1bXTtpZihuLmZvckVhY2goZnVuY3Rpb24obil7aWYoISgodD1uLmxlbmd0aC0xKTw9
MCkpe3ZhciB0LGU9blswXSxyPW5bdF07aWYobWUoZSxyKSl7dS5saW5lU3RhcnQoKTtmb3IodmFy
IGE9MDt0PmE7KythKXUucG9pbnQoKGU9blthXSlbMF0sZVsxXSk7cmV0dXJuIHUubGluZUVuZCgp
LHZvaWQgMH12YXIgYz1uZXcgRWUoZSxuLG51bGwsITApLHM9bmV3IEVlKGUsbnVsbCxjLCExKTtj
Lm89cyxpLnB1c2goYyksby5wdXNoKHMpLGM9bmV3IEVlKHIsbixudWxsLCExKSxzPW5ldyBFZShy
LG51bGwsYywhMCksYy5vPXMsaS5wdXNoKGMpLG8ucHVzaChzKX19KSxvLnNvcnQodCksa2UoaSks
a2UobyksaS5sZW5ndGgpe2Zvcih2YXIgYT0wLGM9ZSxzPW8ubGVuZ3RoO3M+YTsrK2Epb1thXS5l
PWM9IWM7Zm9yKHZhciBsLGYsaD1pWzBdOzspe2Zvcih2YXIgZz1oLHA9ITA7Zy52OylpZigoZz1n
Lm4pPT09aClyZXR1cm47bD1nLnosdS5saW5lU3RhcnQoKTtkb3tpZihnLnY9Zy5vLnY9ITAsZy5l
KXtpZihwKWZvcih2YXIgYT0wLHM9bC5sZW5ndGg7cz5hOysrYSl1LnBvaW50KChmPWxbYV0pWzBd
LGZbMV0pO2Vsc2UgcihnLngsZy5uLngsMSx1KTtnPWcubn1lbHNle2lmKHApe2w9Zy5wLno7Zm9y
KHZhciBhPWwubGVuZ3RoLTE7YT49MDstLWEpdS5wb2ludCgoZj1sW2FdKVswXSxmWzFdKX1lbHNl
IHIoZy54LGcucC54LC0xLHUpO2c9Zy5wfWc9Zy5vLGw9Zy56LHA9IXB9d2hpbGUoIWcudik7dS5s
aW5lRW5kKCl9fX1mdW5jdGlvbiBrZShuKXtpZih0PW4ubGVuZ3RoKXtmb3IodmFyIHQsZSxyPTAs
dT1uWzBdOysrcjx0Oyl1Lm49ZT1uW3JdLGUucD11LHU9ZTt1Lm49ZT1uWzBdLGUucD11fX1mdW5j
dGlvbiBFZShuLHQsZSxyKXt0aGlzLng9bix0aGlzLno9dCx0aGlzLm89ZSx0aGlzLmU9cix0aGlz
LnY9ITEsdGhpcy5uPXRoaXMucD1udWxsfWZ1bmN0aW9uIEFlKG4sdCxlLHIpe3JldHVybiBmdW5j
dGlvbih1LGkpe2Z1bmN0aW9uIG8odCxlKXt2YXIgcj11KHQsZSk7bih0PXJbMF0sZT1yWzFdKSYm
aS5wb2ludCh0LGUpfWZ1bmN0aW9uIGEobix0KXt2YXIgZT11KG4sdCk7ZC5wb2ludChlWzBdLGVb
MV0pfWZ1bmN0aW9uIGMoKXt5LnBvaW50PWEsZC5saW5lU3RhcnQoKX1mdW5jdGlvbiBzKCl7eS5w
b2ludD1vLGQubGluZUVuZCgpfWZ1bmN0aW9uIGwobix0KXt2LnB1c2goW24sdF0pO3ZhciBlPXUo
bix0KTtNLnBvaW50KGVbMF0sZVsxXSl9ZnVuY3Rpb24gZigpe00ubGluZVN0YXJ0KCksdj1bXX1m
dW5jdGlvbiBoKCl7bCh2WzBdWzBdLHZbMF1bMV0pLE0ubGluZUVuZCgpO3ZhciBuLHQ9TS5jbGVh
bigpLGU9eC5idWZmZXIoKSxyPWUubGVuZ3RoO2lmKHYucG9wKCkscC5wdXNoKHYpLHY9bnVsbCxy
KWlmKDEmdCl7bj1lWzBdO3ZhciB1LHI9bi5sZW5ndGgtMSxvPS0xO2lmKHI+MCl7Zm9yKF98fChp
LnBvbHlnb25TdGFydCgpLF89ITApLGkubGluZVN0YXJ0KCk7KytvPHI7KWkucG9pbnQoKHU9bltv
XSlbMF0sdVsxXSk7aS5saW5lRW5kKCl9fWVsc2Ugcj4xJiYyJnQmJmUucHVzaChlLnBvcCgpLmNv
bmNhdChlLnNoaWZ0KCkpKSxnLnB1c2goZS5maWx0ZXIoQ2UpKX12YXIgZyxwLHYsZD10KGkpLG09
dS5pbnZlcnQoclswXSxyWzFdKSx5PXtwb2ludDpvLGxpbmVTdGFydDpjLGxpbmVFbmQ6cyxwb2x5
Z29uU3RhcnQ6ZnVuY3Rpb24oKXt5LnBvaW50PWwseS5saW5lU3RhcnQ9Zix5LmxpbmVFbmQ9aCxn
PVtdLHA9W119LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt5LnBvaW50PW8seS5saW5lU3RhcnQ9Yyx5
LmxpbmVFbmQ9cyxnPVpvLm1lcmdlKGcpO3ZhciBuPUxlKG0scCk7Zy5sZW5ndGg/KF98fChpLnBv
bHlnb25TdGFydCgpLF89ITApLFNlKGcsemUsbixlLGkpKTpuJiYoX3x8KGkucG9seWdvblN0YXJ0
KCksXz0hMCksaS5saW5lU3RhcnQoKSxlKG51bGwsbnVsbCwxLGkpLGkubGluZUVuZCgpKSxfJiYo
aS5wb2x5Z29uRW5kKCksXz0hMSksZz1wPW51bGx9LHNwaGVyZTpmdW5jdGlvbigpe2kucG9seWdv
blN0YXJ0KCksaS5saW5lU3RhcnQoKSxlKG51bGwsbnVsbCwxLGkpLGkubGluZUVuZCgpLGkucG9s
eWdvbkVuZCgpfX0seD1OZSgpLE09dCh4KSxfPSExO3JldHVybiB5fX1mdW5jdGlvbiBDZShuKXty
ZXR1cm4gbi5sZW5ndGg+MX1mdW5jdGlvbiBOZSgpe3ZhciBuLHQ9W107cmV0dXJue2xpbmVTdGFy
dDpmdW5jdGlvbigpe3QucHVzaChuPVtdKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtuLnB1c2goW3Qs
ZV0pfSxsaW5lRW5kOnYsYnVmZmVyOmZ1bmN0aW9uKCl7dmFyIGU9dDtyZXR1cm4gdD1bXSxuPW51
bGwsZX0scmVqb2luOmZ1bmN0aW9uKCl7dC5sZW5ndGg+MSYmdC5wdXNoKHQucG9wKCkuY29uY2F0
KHQuc2hpZnQoKSkpfX19ZnVuY3Rpb24gemUobix0KXtyZXR1cm4oKG49bi54KVswXTwwP25bMV0t
U2Eta2E6U2EtblsxXSktKCh0PXQueClbMF08MD90WzFdLVNhLWthOlNhLXRbMV0pfWZ1bmN0aW9u
IExlKG4sdCl7dmFyIGU9blswXSxyPW5bMV0sdT1bTWF0aC5zaW4oZSksLU1hdGguY29zKGUpLDBd
LGk9MCxvPTA7bGMucmVzZXQoKTtmb3IodmFyIGE9MCxjPXQubGVuZ3RoO2M+YTsrK2Epe3ZhciBz
PXRbYV0sbD1zLmxlbmd0aDtpZihsKWZvcih2YXIgZj1zWzBdLGg9ZlswXSxnPWZbMV0vMitiYS80
LHA9TWF0aC5zaW4oZyksdj1NYXRoLmNvcyhnKSxkPTE7Oyl7ZD09PWwmJihkPTApLG49c1tkXTt2
YXIgbT1uWzBdLHk9blsxXS8yK2JhLzQseD1NYXRoLnNpbih5KSxNPU1hdGguY29zKHkpLF89bS1o
LGI9Xz49MD8xOi0xLHc9YipfLFM9dz5iYSxrPXAqeDtpZihsYy5hZGQoTWF0aC5hdGFuMihrKmIq
TWF0aC5zaW4odyksdipNK2sqTWF0aC5jb3ModykpKSxpKz1TP18rYip3YTpfLFNeaD49ZV5tPj1l
KXt2YXIgRT1oZShsZShmKSxsZShuKSk7dmUoRSk7dmFyIEE9aGUodSxFKTt2ZShBKTt2YXIgQz0o
U15fPj0wPy0xOjEpKkcoQVsyXSk7KHI+Q3x8cj09PUMmJihFWzBdfHxFWzFdKSkmJihvKz1TXl8+
PTA/MTotMSl9aWYoIWQrKylicmVhaztoPW0scD14LHY9TSxmPW59fXJldHVybigta2E+aXx8a2E+
aSYmMD5sYyleMSZvfWZ1bmN0aW9uIFRlKG4pe3ZhciB0LGU9MC8wLHI9MC8wLHU9MC8wO3JldHVy
bntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtuLmxpbmVTdGFydCgpLHQ9MX0scG9pbnQ6ZnVuY3Rpb24o
aSxvKXt2YXIgYT1pPjA/YmE6LWJhLGM9dWEoaS1lKTt1YShjLWJhKTxrYT8obi5wb2ludChlLHI9
KHIrbykvMj4wP1NhOi1TYSksbi5wb2ludCh1LHIpLG4ubGluZUVuZCgpLG4ubGluZVN0YXJ0KCks
bi5wb2ludChhLHIpLG4ucG9pbnQoaSxyKSx0PTApOnUhPT1hJiZjPj1iYSYmKHVhKGUtdSk8a2Em
JihlLT11KmthKSx1YShpLWEpPGthJiYoaS09YSprYSkscj1xZShlLHIsaSxvKSxuLnBvaW50KHUs
ciksbi5saW5lRW5kKCksbi5saW5lU3RhcnQoKSxuLnBvaW50KGEsciksdD0wKSxuLnBvaW50KGU9
aSxyPW8pLHU9YX0sbGluZUVuZDpmdW5jdGlvbigpe24ubGluZUVuZCgpLGU9cj0wLzB9LGNsZWFu
OmZ1bmN0aW9uKCl7cmV0dXJuIDItdH19fWZ1bmN0aW9uIHFlKG4sdCxlLHIpe3ZhciB1LGksbz1N
YXRoLnNpbihuLWUpO3JldHVybiB1YShvKT5rYT9NYXRoLmF0YW4oKE1hdGguc2luKHQpKihpPU1h
dGguY29zKHIpKSpNYXRoLnNpbihlKS1NYXRoLnNpbihyKSoodT1NYXRoLmNvcyh0KSkqTWF0aC5z
aW4obikpLyh1KmkqbykpOih0K3IpLzJ9ZnVuY3Rpb24gUmUobix0LGUscil7dmFyIHU7aWYobnVs
bD09bil1PWUqU2Esci5wb2ludCgtYmEsdSksci5wb2ludCgwLHUpLHIucG9pbnQoYmEsdSksci5w
b2ludChiYSwwKSxyLnBvaW50KGJhLC11KSxyLnBvaW50KDAsLXUpLHIucG9pbnQoLWJhLC11KSxy
LnBvaW50KC1iYSwwKSxyLnBvaW50KC1iYSx1KTtlbHNlIGlmKHVhKG5bMF0tdFswXSk+a2Epe3Zh
ciBpPW5bMF08dFswXT9iYTotYmE7dT1lKmkvMixyLnBvaW50KC1pLHUpLHIucG9pbnQoMCx1KSxy
LnBvaW50KGksdSl9ZWxzZSByLnBvaW50KHRbMF0sdFsxXSl9ZnVuY3Rpb24gRGUobil7ZnVuY3Rp
b24gdChuLHQpe3JldHVybiBNYXRoLmNvcyhuKSpNYXRoLmNvcyh0KT5pfWZ1bmN0aW9uIGUobil7
dmFyIGUsaSxjLHMsbDtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7cz1jPSExLGw9MX0scG9p
bnQ6ZnVuY3Rpb24oZixoKXt2YXIgZyxwPVtmLGhdLHY9dChmLGgpLGQ9bz92PzA6dShmLGgpOnY/
dShmKygwPmY/YmE6LWJhKSxoKTowO2lmKCFlJiYocz1jPXYpJiZuLmxpbmVTdGFydCgpLHYhPT1j
JiYoZz1yKGUscCksKG1lKGUsZyl8fG1lKHAsZykpJiYocFswXSs9a2EscFsxXSs9a2Esdj10KHBb
MF0scFsxXSkpKSx2IT09YylsPTAsdj8obi5saW5lU3RhcnQoKSxnPXIocCxlKSxuLnBvaW50KGdb
MF0sZ1sxXSkpOihnPXIoZSxwKSxuLnBvaW50KGdbMF0sZ1sxXSksbi5saW5lRW5kKCkpLGU9Zztl
bHNlIGlmKGEmJmUmJm9edil7dmFyIG07ZCZpfHwhKG09cihwLGUsITApKXx8KGw9MCxvPyhuLmxp
bmVTdGFydCgpLG4ucG9pbnQobVswXVswXSxtWzBdWzFdKSxuLnBvaW50KG1bMV1bMF0sbVsxXVsx
XSksbi5saW5lRW5kKCkpOihuLnBvaW50KG1bMV1bMF0sbVsxXVsxXSksbi5saW5lRW5kKCksbi5s
aW5lU3RhcnQoKSxuLnBvaW50KG1bMF1bMF0sbVswXVsxXSkpKX0hdnx8ZSYmbWUoZSxwKXx8bi5w
b2ludChwWzBdLHBbMV0pLGU9cCxjPXYsaT1kfSxsaW5lRW5kOmZ1bmN0aW9uKCl7YyYmbi5saW5l
RW5kKCksZT1udWxsfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiBsfChzJiZjKTw8MX19fWZ1bmN0
aW9uIHIobix0LGUpe3ZhciByPWxlKG4pLHU9bGUodCksbz1bMSwwLDBdLGE9aGUocix1KSxjPWZl
KGEsYSkscz1hWzBdLGw9Yy1zKnM7aWYoIWwpcmV0dXJuIWUmJm47dmFyIGY9aSpjL2wsaD0taSpz
L2wsZz1oZShvLGEpLHA9cGUobyxmKSx2PXBlKGEsaCk7Z2UocCx2KTt2YXIgZD1nLG09ZmUocCxk
KSx5PWZlKGQsZCkseD1tKm0teSooZmUocCxwKS0xKTtpZighKDA+eCkpe3ZhciBNPU1hdGguc3Fy
dCh4KSxfPXBlKGQsKC1tLU0pL3kpO2lmKGdlKF8scCksXz1kZShfKSwhZSlyZXR1cm4gXzt2YXIg
Yix3PW5bMF0sUz10WzBdLGs9blsxXSxFPXRbMV07dz5TJiYoYj13LHc9UyxTPWIpO3ZhciBBPVMt
dyxDPXVhKEEtYmEpPGthLE49Q3x8a2E+QTtpZighQyYmaz5FJiYoYj1rLGs9RSxFPWIpLE4/Qz9r
K0U+MF5fWzFdPCh1YShfWzBdLXcpPGthP2s6RSk6azw9X1sxXSYmX1sxXTw9RTpBPmJhXih3PD1f
WzBdJiZfWzBdPD1TKSl7dmFyIHo9cGUoZCwoLW0rTSkveSk7cmV0dXJuIGdlKHoscCksW18sZGUo
eildfX19ZnVuY3Rpb24gdSh0LGUpe3ZhciByPW8/bjpiYS1uLHU9MDtyZXR1cm4tcj50P3V8PTE6
dD5yJiYodXw9MiksLXI+ZT91fD00OmU+ciYmKHV8PTgpLHV9dmFyIGk9TWF0aC5jb3Mobiksbz1p
PjAsYT11YShpKT5rYSxjPXNyKG4sNipBYSk7cmV0dXJuIEFlKHQsZSxjLG8/WzAsLW5dOlstYmEs
bi1iYV0pfWZ1bmN0aW9uIFBlKG4sdCxlLHIpe3JldHVybiBmdW5jdGlvbih1KXt2YXIgaSxvPXUu
YSxhPXUuYixjPW8ueCxzPW8ueSxsPWEueCxmPWEueSxoPTAsZz0xLHA9bC1jLHY9Zi1zO2lmKGk9
bi1jLHB8fCEoaT4wKSl7aWYoaS89cCwwPnApe2lmKGg+aSlyZXR1cm47Zz5pJiYoZz1pKX1lbHNl
IGlmKHA+MCl7aWYoaT5nKXJldHVybjtpPmgmJihoPWkpfWlmKGk9ZS1jLHB8fCEoMD5pKSl7aWYo
aS89cCwwPnApe2lmKGk+ZylyZXR1cm47aT5oJiYoaD1pKX1lbHNlIGlmKHA+MCl7aWYoaD5pKXJl
dHVybjtnPmkmJihnPWkpfWlmKGk9dC1zLHZ8fCEoaT4wKSl7aWYoaS89diwwPnYpe2lmKGg+aSly
ZXR1cm47Zz5pJiYoZz1pKX1lbHNlIGlmKHY+MCl7aWYoaT5nKXJldHVybjtpPmgmJihoPWkpfWlm
KGk9ci1zLHZ8fCEoMD5pKSl7aWYoaS89diwwPnYpe2lmKGk+ZylyZXR1cm47aT5oJiYoaD1pKX1l
bHNlIGlmKHY+MCl7aWYoaD5pKXJldHVybjtnPmkmJihnPWkpfXJldHVybiBoPjAmJih1LmE9e3g6
YytoKnAseTpzK2gqdn0pLDE+ZyYmKHUuYj17eDpjK2cqcCx5OnMrZyp2fSksdX19fX19fWZ1bmN0
aW9uIFVlKG4sdCxlLHIpe2Z1bmN0aW9uIHUocix1KXtyZXR1cm4gdWEoclswXS1uKTxrYT91PjA/
MDozOnVhKHJbMF0tZSk8a2E/dT4wPzI6MTp1YShyWzFdLXQpPGthP3U+MD8xOjA6dT4wPzM6Mn1m
dW5jdGlvbiBpKG4sdCl7cmV0dXJuIG8obi54LHQueCl9ZnVuY3Rpb24gbyhuLHQpe3ZhciBlPXUo
biwxKSxyPXUodCwxKTtyZXR1cm4gZSE9PXI/ZS1yOjA9PT1lP3RbMV0tblsxXToxPT09ZT9uWzBd
LXRbMF06Mj09PWU/blsxXS10WzFdOnRbMF0tblswXX1yZXR1cm4gZnVuY3Rpb24oYSl7ZnVuY3Rp
b24gYyhuKXtmb3IodmFyIHQ9MCxlPWQubGVuZ3RoLHI9blsxXSx1PTA7ZT51OysrdSlmb3IodmFy
IGksbz0xLGE9ZFt1XSxjPWEubGVuZ3RoLHM9YVswXTtjPm87KytvKWk9YVtvXSxzWzFdPD1yP2lb
MV0+ciYmVyhzLGksbik+MCYmKyt0OmlbMV08PXImJlcocyxpLG4pPDAmJi0tdCxzPWk7cmV0dXJu
IDAhPT10fWZ1bmN0aW9uIHMoaSxhLGMscyl7dmFyIGw9MCxmPTA7aWYobnVsbD09aXx8KGw9dShp
LGMpKSE9PShmPXUoYSxjKSl8fG8oaSxhKTwwXmM+MCl7ZG8gcy5wb2ludCgwPT09bHx8Mz09PWw/
bjplLGw+MT9yOnQpO3doaWxlKChsPShsK2MrNCklNCkhPT1mKX1lbHNlIHMucG9pbnQoYVswXSxh
WzFdKX1mdW5jdGlvbiBsKHUsaSl7cmV0dXJuIHU+PW4mJmU+PXUmJmk+PXQmJnI+PWl9ZnVuY3Rp
b24gZihuLHQpe2wobix0KSYmYS5wb2ludChuLHQpfWZ1bmN0aW9uIGgoKXtOLnBvaW50PXAsZCYm
ZC5wdXNoKG09W10pLFM9ITAsdz0hMSxfPWI9MC8wfWZ1bmN0aW9uIGcoKXt2JiYocCh5LHgpLE0m
JncmJkEucmVqb2luKCksdi5wdXNoKEEuYnVmZmVyKCkpKSxOLnBvaW50PWYsdyYmYS5saW5lRW5k
KCl9ZnVuY3Rpb24gcChuLHQpe249TWF0aC5tYXgoLWtjLE1hdGgubWluKGtjLG4pKSx0PU1hdGgu
bWF4KC1rYyxNYXRoLm1pbihrYyx0KSk7dmFyIGU9bChuLHQpO2lmKGQmJm0ucHVzaChbbix0XSks
Uyl5PW4seD10LE09ZSxTPSExLGUmJihhLmxpbmVTdGFydCgpLGEucG9pbnQobix0KSk7ZWxzZSBp
ZihlJiZ3KWEucG9pbnQobix0KTtlbHNle3ZhciByPXthOnt4Ol8seTpifSxiOnt4Om4seTp0fX07
QyhyKT8od3x8KGEubGluZVN0YXJ0KCksYS5wb2ludChyLmEueCxyLmEueSkpLGEucG9pbnQoci5i
Lngsci5iLnkpLGV8fGEubGluZUVuZCgpLGs9ITEpOmUmJihhLmxpbmVTdGFydCgpLGEucG9pbnQo
bix0KSxrPSExKX1fPW4sYj10LHc9ZX12YXIgdixkLG0seSx4LE0sXyxiLHcsUyxrLEU9YSxBPU5l
KCksQz1QZShuLHQsZSxyKSxOPXtwb2ludDpmLGxpbmVTdGFydDpoLGxpbmVFbmQ6Zyxwb2x5Z29u
U3RhcnQ6ZnVuY3Rpb24oKXthPUEsdj1bXSxkPVtdLGs9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24o
KXthPUUsdj1aby5tZXJnZSh2KTt2YXIgdD1jKFtuLHJdKSxlPWsmJnQsdT12Lmxlbmd0aDsoZXx8
dSkmJihhLnBvbHlnb25TdGFydCgpLGUmJihhLmxpbmVTdGFydCgpLHMobnVsbCxudWxsLDEsYSks
YS5saW5lRW5kKCkpLHUmJlNlKHYsaSx0LHMsYSksYS5wb2x5Z29uRW5kKCkpLHY9ZD1tPW51bGx9
fTtyZXR1cm4gTn19ZnVuY3Rpb24gamUobix0KXtmdW5jdGlvbiBlKGUscil7cmV0dXJuIGU9bihl
LHIpLHQoZVswXSxlWzFdKX1yZXR1cm4gbi5pbnZlcnQmJnQuaW52ZXJ0JiYoZS5pbnZlcnQ9ZnVu
Y3Rpb24oZSxyKXtyZXR1cm4gZT10LmludmVydChlLHIpLGUmJm4uaW52ZXJ0KGVbMF0sZVsxXSl9
KSxlfWZ1bmN0aW9uIEhlKG4pe3ZhciB0PTAsZT1iYS8zLHI9dHIobiksdT1yKHQsZSk7cmV0dXJu
IHUucGFyYWxsZWxzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3IodD1uWzBd
KmJhLzE4MCxlPW5bMV0qYmEvMTgwKTpbMTgwKih0L2JhKSwxODAqKGUvYmEpXX0sdX1mdW5jdGlv
biBGZShuLHQpe2Z1bmN0aW9uIGUobix0KXt2YXIgZT1NYXRoLnNxcnQoaS0yKnUqTWF0aC5zaW4o
dCkpL3U7cmV0dXJuW2UqTWF0aC5zaW4obio9dSksby1lKk1hdGguY29zKG4pXX12YXIgcj1NYXRo
LnNpbihuKSx1PShyK01hdGguc2luKHQpKS8yLGk9MStyKigyKnUtciksbz1NYXRoLnNxcnQoaSkv
dTtyZXR1cm4gZS5pbnZlcnQ9ZnVuY3Rpb24obix0KXt2YXIgZT1vLXQ7cmV0dXJuW01hdGguYXRh
bjIobixlKS91LEcoKGktKG4qbitlKmUpKnUqdSkvKDIqdSkpXX0sZX1mdW5jdGlvbiBPZSgpe2Z1
bmN0aW9uIG4obix0KXtBYys9dSpuLXIqdCxyPW4sdT10fXZhciB0LGUscix1O1RjLnBvaW50PWZ1
bmN0aW9uKGksbyl7VGMucG9pbnQ9bix0PXI9aSxlPXU9b30sVGMubGluZUVuZD1mdW5jdGlvbigp
e24odCxlKX19ZnVuY3Rpb24gWWUobix0KXtDYz5uJiYoQ2M9biksbj56YyYmKHpjPW4pLE5jPnQm
JihOYz10KSx0PkxjJiYoTGM9dCl9ZnVuY3Rpb24gSWUoKXtmdW5jdGlvbiBuKG4sdCl7by5wdXNo
KCJNIixuLCIsIix0LGkpfWZ1bmN0aW9uIHQobix0KXtvLnB1c2goIk0iLG4sIiwiLHQpLGEucG9p
bnQ9ZX1mdW5jdGlvbiBlKG4sdCl7by5wdXNoKCJMIixuLCIsIix0KX1mdW5jdGlvbiByKCl7YS5w
b2ludD1ufWZ1bmN0aW9uIHUoKXtvLnB1c2goIloiKX12YXIgaT1aZSg0LjUpLG89W10sYT17cG9p
bnQ6bixsaW5lU3RhcnQ6ZnVuY3Rpb24oKXthLnBvaW50PXR9LGxpbmVFbmQ6cixwb2x5Z29uU3Rh
cnQ6ZnVuY3Rpb24oKXthLmxpbmVFbmQ9dX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2EubGluZUVu
ZD1yLGEucG9pbnQ9bn0scG9pbnRSYWRpdXM6ZnVuY3Rpb24obil7cmV0dXJuIGk9WmUobiksYX0s
cmVzdWx0OmZ1bmN0aW9uKCl7aWYoby5sZW5ndGgpe3ZhciBuPW8uam9pbigiIik7cmV0dXJuIG89
W10sbn19fTtyZXR1cm4gYX1mdW5jdGlvbiBaZShuKXtyZXR1cm4ibTAsIituKyJhIituKyIsIitu
KyIgMCAxLDEgMCwiKy0yKm4rImEiK24rIiwiK24rIiAwIDEsMSAwLCIrMipuKyJ6In1mdW5jdGlv
biBWZShuLHQpe3BjKz1uLHZjKz10LCsrZGN9ZnVuY3Rpb24gWGUoKXtmdW5jdGlvbiBuKG4scil7
dmFyIHU9bi10LGk9ci1lLG89TWF0aC5zcXJ0KHUqdStpKmkpO21jKz1vKih0K24pLzIseWMrPW8q
KGUrcikvMix4Yys9byxWZSh0PW4sZT1yKX12YXIgdCxlO1JjLnBvaW50PWZ1bmN0aW9uKHIsdSl7
UmMucG9pbnQ9bixWZSh0PXIsZT11KX19ZnVuY3Rpb24gJGUoKXtSYy5wb2ludD1WZX1mdW5jdGlv
biBCZSgpe2Z1bmN0aW9uIG4obix0KXt2YXIgZT1uLXIsaT10LXUsbz1NYXRoLnNxcnQoZSplK2kq
aSk7bWMrPW8qKHIrbikvMix5Yys9byoodSt0KS8yLHhjKz1vLG89dSpuLXIqdCxNYys9byoocitu
KSxfYys9byoodSt0KSxiYys9MypvLFZlKHI9bix1PXQpfXZhciB0LGUscix1O1JjLnBvaW50PWZ1
bmN0aW9uKGksbyl7UmMucG9pbnQ9bixWZSh0PXI9aSxlPXU9byl9LFJjLmxpbmVFbmQ9ZnVuY3Rp
b24oKXtuKHQsZSl9fWZ1bmN0aW9uIFdlKG4pe2Z1bmN0aW9uIHQodCxlKXtuLm1vdmVUbyh0LGUp
LG4uYXJjKHQsZSxvLDAsd2EpfWZ1bmN0aW9uIGUodCxlKXtuLm1vdmVUbyh0LGUpLGEucG9pbnQ9
cn1mdW5jdGlvbiByKHQsZSl7bi5saW5lVG8odCxlKX1mdW5jdGlvbiB1KCl7YS5wb2ludD10fWZ1
bmN0aW9uIGkoKXtuLmNsb3NlUGF0aCgpfXZhciBvPTQuNSxhPXtwb2ludDp0LGxpbmVTdGFydDpm
dW5jdGlvbigpe2EucG9pbnQ9ZX0sbGluZUVuZDp1LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2Eu
bGluZUVuZD1pfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7YS5saW5lRW5kPXUsYS5wb2ludD10fSxw
b2ludFJhZGl1czpmdW5jdGlvbihuKXtyZXR1cm4gbz1uLGF9LHJlc3VsdDp2fTtyZXR1cm4gYX1m
dW5jdGlvbiBKZShuKXtmdW5jdGlvbiB0KG4pe3JldHVybihhP3I6ZSkobil9ZnVuY3Rpb24gZSh0
KXtyZXR1cm4gUWUodCxmdW5jdGlvbihlLHIpe2U9bihlLHIpLHQucG9pbnQoZVswXSxlWzFdKX0p
fWZ1bmN0aW9uIHIodCl7ZnVuY3Rpb24gZShlLHIpe2U9bihlLHIpLHQucG9pbnQoZVswXSxlWzFd
KX1mdW5jdGlvbiByKCl7eD0wLzAsUy5wb2ludD1pLHQubGluZVN0YXJ0KCl9ZnVuY3Rpb24gaShl
LHIpe3ZhciBpPWxlKFtlLHJdKSxvPW4oZSxyKTt1KHgsTSx5LF8sYix3LHg9b1swXSxNPW9bMV0s
eT1lLF89aVswXSxiPWlbMV0sdz1pWzJdLGEsdCksdC5wb2ludCh4LE0pfWZ1bmN0aW9uIG8oKXtT
LnBvaW50PWUsdC5saW5lRW5kKCl9ZnVuY3Rpb24gYygpe3IoKSxTLnBvaW50PXMsUy5saW5lRW5k
PWx9ZnVuY3Rpb24gcyhuLHQpe2koZj1uLGg9dCksZz14LHA9TSx2PV8sZD1iLG09dyxTLnBvaW50
PWl9ZnVuY3Rpb24gbCgpe3UoeCxNLHksXyxiLHcsZyxwLGYsdixkLG0sYSx0KSxTLmxpbmVFbmQ9
byxvKCl9dmFyIGYsaCxnLHAsdixkLG0seSx4LE0sXyxiLHcsUz17cG9pbnQ6ZSxsaW5lU3RhcnQ6
cixsaW5lRW5kOm8scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dC5wb2x5Z29uU3RhcnQoKSxTLmxp
bmVTdGFydD1jfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dC5wb2x5Z29uRW5kKCksUy5saW5lU3Rh
cnQ9cn19O3JldHVybiBTfWZ1bmN0aW9uIHUodCxlLHIsYSxjLHMsbCxmLGgsZyxwLHYsZCxtKXt2
YXIgeT1sLXQseD1mLWUsTT15KnkreCp4O2lmKE0+NCppJiZkLS0pe3ZhciBfPWErZyxiPWMrcCx3
PXMrdixTPU1hdGguc3FydChfKl8rYipiK3cqdyksaz1NYXRoLmFzaW4ody89UyksRT11YSh1YSh3
KS0xKTxrYXx8dWEoci1oKTxrYT8ocitoKS8yOk1hdGguYXRhbjIoYixfKSxBPW4oRSxrKSxDPUFb
MF0sTj1BWzFdLHo9Qy10LEw9Ti1lLFQ9eCp6LXkqTDsoVCpUL00+aXx8dWEoKHkqeit4KkwpL00t
LjUpPi4zfHxvPmEqZytjKnArcyp2KSYmKHUodCxlLHIsYSxjLHMsQyxOLEUsXy89UyxiLz1TLHcs
ZCxtKSxtLnBvaW50KEMsTiksdShDLE4sRSxfLGIsdyxsLGYsaCxnLHAsdixkLG0pKX19dmFyIGk9
LjUsbz1NYXRoLmNvcygzMCpBYSksYT0xNjsKLXJldHVybiB0LnByZWNpc2lvbj1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0oaT1uKm4pPjAmJjE2LHQpOk1hdGguc3FydChp
KX0sdH1mdW5jdGlvbiBHZShuKXt2YXIgdD1KZShmdW5jdGlvbih0LGUpe3JldHVybiBuKFt0KkNh
LGUqQ2FdKX0pO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZXIodChuKSl9fWZ1bmN0aW9uIEtl
KG4pe3RoaXMuc3RyZWFtPW59ZnVuY3Rpb24gUWUobix0KXtyZXR1cm57cG9pbnQ6dCxzcGhlcmU6
ZnVuY3Rpb24oKXtuLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtuLmxpbmVTdGFydCgp
fSxsaW5lRW5kOmZ1bmN0aW9uKCl7bi5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigp
e24ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtuLnBvbHlnb25FbmQoKX19
fWZ1bmN0aW9uIG5yKG4pe3JldHVybiB0cihmdW5jdGlvbigpe3JldHVybiBufSkoKX1mdW5jdGlv
biB0cihuKXtmdW5jdGlvbiB0KG4pe3JldHVybiBuPWEoblswXSpBYSxuWzFdKkFhKSxbblswXSpo
K2Mscy1uWzFdKmhdfWZ1bmN0aW9uIGUobil7cmV0dXJuIG49YS5pbnZlcnQoKG5bMF0tYykvaCwo
cy1uWzFdKS9oKSxuJiZbblswXSpDYSxuWzFdKkNhXX1mdW5jdGlvbiByKCl7YT1qZShvPWlyKG0s
eSx4KSxpKTt2YXIgbj1pKHYsZCk7cmV0dXJuIGM9Zy1uWzBdKmgscz1wK25bMV0qaCx1KCl9ZnVu
Y3Rpb24gdSgpe3JldHVybiBsJiYobC52YWxpZD0hMSxsPW51bGwpLHR9dmFyIGksbyxhLGMscyxs
LGY9SmUoZnVuY3Rpb24obix0KXtyZXR1cm4gbj1pKG4sdCksW25bMF0qaCtjLHMtblsxXSpoXX0p
LGg9MTUwLGc9NDgwLHA9MjUwLHY9MCxkPTAsbT0wLHk9MCx4PTAsTT1TYyxfPXd0LGI9bnVsbCx3
PW51bGw7cmV0dXJuIHQuc3RyZWFtPWZ1bmN0aW9uKG4pe3JldHVybiBsJiYobC52YWxpZD0hMSks
bD1lcihNKG8sZihfKG4pKSkpLGwudmFsaWQ9ITAsbH0sdC5jbGlwQW5nbGU9ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE09bnVsbD09bj8oYj1uLFNjKTpEZSgoYj0rbikqQWEp
LHUoKSk6Yn0sdC5jbGlwRXh0ZW50PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh3PW4sXz1uP1VlKG5bMF1bMF0sblswXVsxXSxuWzFdWzBdLG5bMV1bMV0pOnd0LHUoKSk6d30s
dC5zY2FsZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0rbixyKCkpOmh9
LHQudHJhbnNsYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPStuWzBd
LHA9K25bMV0scigpKTpbZyxwXX0sdC5jZW50ZXI9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHY9blswXSUzNjAqQWEsZD1uWzFdJTM2MCpBYSxyKCkpOlt2KkNhLGQqQ2FdfSx0
LnJvdGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT1uWzBdJTM2MCpB
YSx5PW5bMV0lMzYwKkFhLHg9bi5sZW5ndGg+Mj9uWzJdJTM2MCpBYTowLHIoKSk6W20qQ2EseSpD
YSx4KkNhXX0sWm8ucmViaW5kKHQsZiwicHJlY2lzaW9uIiksZnVuY3Rpb24oKXtyZXR1cm4gaT1u
LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LmludmVydD1pLmludmVydCYmZSxyKCl9fWZ1bmN0aW9u
IGVyKG4pe3JldHVybiBRZShuLGZ1bmN0aW9uKHQsZSl7bi5wb2ludCh0KkFhLGUqQWEpfSl9ZnVu
Y3Rpb24gcnIobix0KXtyZXR1cm5bbix0XX1mdW5jdGlvbiB1cihuLHQpe3JldHVybltuPmJhP24t
d2E6LWJhPm4/bit3YTpuLHRdfWZ1bmN0aW9uIGlyKG4sdCxlKXtyZXR1cm4gbj90fHxlP2plKGFy
KG4pLGNyKHQsZSkpOmFyKG4pOnR8fGU/Y3IodCxlKTp1cn1mdW5jdGlvbiBvcihuKXtyZXR1cm4g
ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCs9bixbdD5iYT90LXdhOi1iYT50P3Qrd2E6dCxlXX19ZnVu
Y3Rpb24gYXIobil7dmFyIHQ9b3Iobik7cmV0dXJuIHQuaW52ZXJ0PW9yKC1uKSx0fWZ1bmN0aW9u
IGNyKG4sdCl7ZnVuY3Rpb24gZShuLHQpe3ZhciBlPU1hdGguY29zKHQpLGE9TWF0aC5jb3Mobikq
ZSxjPU1hdGguc2luKG4pKmUscz1NYXRoLnNpbih0KSxsPXMqcithKnU7cmV0dXJuW01hdGguYXRh
bjIoYyppLWwqbyxhKnItcyp1KSxHKGwqaStjKm8pXX12YXIgcj1NYXRoLmNvcyhuKSx1PU1hdGgu
c2luKG4pLGk9TWF0aC5jb3ModCksbz1NYXRoLnNpbih0KTtyZXR1cm4gZS5pbnZlcnQ9ZnVuY3Rp
b24obix0KXt2YXIgZT1NYXRoLmNvcyh0KSxhPU1hdGguY29zKG4pKmUsYz1NYXRoLnNpbihuKSpl
LHM9TWF0aC5zaW4odCksbD1zKmktYypvO3JldHVybltNYXRoLmF0YW4yKGMqaStzKm8sYSpyK2wq
dSksRyhsKnItYSp1KV19LGV9ZnVuY3Rpb24gc3Iobix0KXt2YXIgZT1NYXRoLmNvcyhuKSxyPU1h
dGguc2luKG4pO3JldHVybiBmdW5jdGlvbih1LGksbyxhKXt2YXIgYz1vKnQ7bnVsbCE9dT8odT1s
cihlLHUpLGk9bHIoZSxpKSwobz4wP2k+dTp1PmkpJiYodSs9byp3YSkpOih1PW4rbyp3YSxpPW4t
LjUqYyk7Zm9yKHZhciBzLGw9dTtvPjA/bD5pOmk+bDtsLT1jKWEucG9pbnQoKHM9ZGUoW2UsLXIq
TWF0aC5jb3MobCksLXIqTWF0aC5zaW4obCldKSlbMF0sc1sxXSl9fWZ1bmN0aW9uIGxyKG4sdCl7
dmFyIGU9bGUodCk7ZVswXS09bix2ZShlKTt2YXIgcj1KKC1lWzFdKTtyZXR1cm4oKC1lWzJdPDA/
LXI6cikrMipNYXRoLlBJLWthKSUoMipNYXRoLlBJKX1mdW5jdGlvbiBmcihuLHQsZSl7dmFyIHI9
Wm8ucmFuZ2Uobix0LWthLGUpLmNvbmNhdCh0KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHIu
bWFwKGZ1bmN0aW9uKHQpe3JldHVybltuLHRdfSl9fWZ1bmN0aW9uIGhyKG4sdCxlKXt2YXIgcj1a
by5yYW5nZShuLHQta2EsZSkuY29uY2F0KHQpO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gci5t
YXAoZnVuY3Rpb24odCl7cmV0dXJuW3Qsbl19KX19ZnVuY3Rpb24gZ3Iobil7cmV0dXJuIG4uc291
cmNlfWZ1bmN0aW9uIHByKG4pe3JldHVybiBuLnRhcmdldH1mdW5jdGlvbiB2cihuLHQsZSxyKXt2
YXIgdT1NYXRoLmNvcyh0KSxpPU1hdGguc2luKHQpLG89TWF0aC5jb3MociksYT1NYXRoLnNpbihy
KSxjPXUqTWF0aC5jb3Mobikscz11Kk1hdGguc2luKG4pLGw9bypNYXRoLmNvcyhlKSxmPW8qTWF0
aC5zaW4oZSksaD0yKk1hdGguYXNpbihNYXRoLnNxcnQodHQoci10KSt1Km8qdHQoZS1uKSkpLGc9
MS9NYXRoLnNpbihoKSxwPWg/ZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5zaW4obio9aCkqZyxlPU1h
dGguc2luKGgtbikqZyxyPWUqYyt0KmwsdT1lKnMrdCpmLG89ZSppK3QqYTtyZXR1cm5bTWF0aC5h
dGFuMih1LHIpKkNhLE1hdGguYXRhbjIobyxNYXRoLnNxcnQocipyK3UqdSkpKkNhXX06ZnVuY3Rp
b24oKXtyZXR1cm5bbipDYSx0KkNhXX07cmV0dXJuIHAuZGlzdGFuY2U9aCxwfWZ1bmN0aW9uIGRy
KCl7ZnVuY3Rpb24gbihuLHUpe3ZhciBpPU1hdGguc2luKHUqPUFhKSxvPU1hdGguY29zKHUpLGE9
dWEoKG4qPUFhKS10KSxjPU1hdGguY29zKGEpO0RjKz1NYXRoLmF0YW4yKE1hdGguc3FydCgoYT1v
Kk1hdGguc2luKGEpKSphKyhhPXIqaS1lKm8qYykqYSksZSppK3IqbypjKSx0PW4sZT1pLHI9b312
YXIgdCxlLHI7UGMucG9pbnQ9ZnVuY3Rpb24odSxpKXt0PXUqQWEsZT1NYXRoLnNpbihpKj1BYSks
cj1NYXRoLmNvcyhpKSxQYy5wb2ludD1ufSxQYy5saW5lRW5kPWZ1bmN0aW9uKCl7UGMucG9pbnQ9
UGMubGluZUVuZD12fX1mdW5jdGlvbiBtcihuLHQpe2Z1bmN0aW9uIGUodCxlKXt2YXIgcj1NYXRo
LmNvcyh0KSx1PU1hdGguY29zKGUpLGk9bihyKnUpO3JldHVybltpKnUqTWF0aC5zaW4odCksaSpN
YXRoLnNpbihlKV19cmV0dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKG4sZSl7dmFyIHI9TWF0aC5zcXJ0
KG4qbitlKmUpLHU9dChyKSxpPU1hdGguc2luKHUpLG89TWF0aC5jb3ModSk7cmV0dXJuW01hdGgu
YXRhbjIobippLHIqbyksTWF0aC5hc2luKHImJmUqaS9yKV19LGV9ZnVuY3Rpb24geXIobix0KXtm
dW5jdGlvbiBlKG4sdCl7bz4wPy1TYStrYT50JiYodD0tU2Era2EpOnQ+U2Eta2EmJih0PVNhLWth
KTt2YXIgZT1vL01hdGgucG93KHUodCksaSk7cmV0dXJuW2UqTWF0aC5zaW4oaSpuKSxvLWUqTWF0
aC5jb3MoaSpuKV19dmFyIHI9TWF0aC5jb3MobiksdT1mdW5jdGlvbihuKXtyZXR1cm4gTWF0aC50
YW4oYmEvNCtuLzIpfSxpPW49PT10P01hdGguc2luKG4pOk1hdGgubG9nKHIvTWF0aC5jb3ModCkp
L01hdGgubG9nKHUodCkvdShuKSksbz1yKk1hdGgucG93KHUobiksaSkvaTtyZXR1cm4gaT8oZS5p
bnZlcnQ9ZnVuY3Rpb24obix0KXt2YXIgZT1vLXQscj1CKGkpKk1hdGguc3FydChuKm4rZSplKTty
ZXR1cm5bTWF0aC5hdGFuMihuLGUpL2ksMipNYXRoLmF0YW4oTWF0aC5wb3coby9yLDEvaSkpLVNh
XX0sZSk6TXJ9ZnVuY3Rpb24geHIobix0KXtmdW5jdGlvbiBlKG4sdCl7dmFyIGU9aS10O3JldHVy
bltlKk1hdGguc2luKHUqbiksaS1lKk1hdGguY29zKHUqbildfXZhciByPU1hdGguY29zKG4pLHU9
bj09PXQ/TWF0aC5zaW4obik6KHItTWF0aC5jb3ModCkpLyh0LW4pLGk9ci91K247cmV0dXJuIHVh
KHUpPGthP3JyOihlLmludmVydD1mdW5jdGlvbihuLHQpe3ZhciBlPWktdDtyZXR1cm5bTWF0aC5h
dGFuMihuLGUpL3UsaS1CKHUpKk1hdGguc3FydChuKm4rZSplKV19LGUpfWZ1bmN0aW9uIE1yKG4s
dCl7cmV0dXJuW24sTWF0aC5sb2coTWF0aC50YW4oYmEvNCt0LzIpKV19ZnVuY3Rpb24gX3Iobil7
dmFyIHQsZT1ucihuKSxyPWUuc2NhbGUsdT1lLnRyYW5zbGF0ZSxpPWUuY2xpcEV4dGVudDtyZXR1
cm4gZS5zY2FsZT1mdW5jdGlvbigpe3ZhciBuPXIuYXBwbHkoZSxhcmd1bWVudHMpO3JldHVybiBu
PT09ZT90P2UuY2xpcEV4dGVudChudWxsKTplOm59LGUudHJhbnNsYXRlPWZ1bmN0aW9uKCl7dmFy
IG49dS5hcHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIG49PT1lP3Q/ZS5jbGlwRXh0ZW50KG51bGwp
OmU6bn0sZS5jbGlwRXh0ZW50PWZ1bmN0aW9uKG4pe3ZhciBvPWkuYXBwbHkoZSxhcmd1bWVudHMp
O2lmKG89PT1lKXtpZih0PW51bGw9PW4pe3ZhciBhPWJhKnIoKSxjPXUoKTtpKFtbY1swXS1hLGNb
MV0tYV0sW2NbMF0rYSxjWzFdK2FdXSl9fWVsc2UgdCYmKG89bnVsbCk7cmV0dXJuIG99LGUuY2xp
cEV4dGVudChudWxsKX1mdW5jdGlvbiBicihuLHQpe3JldHVybltNYXRoLmxvZyhNYXRoLnRhbihi
YS80K3QvMikpLC1uXX1mdW5jdGlvbiB3cihuKXtyZXR1cm4gblswXX1mdW5jdGlvbiBTcihuKXty
ZXR1cm4gblsxXX1mdW5jdGlvbiBrcihuKXtmb3IodmFyIHQ9bi5sZW5ndGgsZT1bMCwxXSxyPTIs
dT0yO3Q+dTt1Kyspe2Zvcig7cj4xJiZXKG5bZVtyLTJdXSxuW2Vbci0xXV0sblt1XSk8PTA7KS0t
cjtlW3IrK109dX1yZXR1cm4gZS5zbGljZSgwLHIpfWZ1bmN0aW9uIEVyKG4sdCl7cmV0dXJuIG5b
MF0tdFswXXx8blsxXS10WzFdfWZ1bmN0aW9uIEFyKG4sdCxlKXtyZXR1cm4oZVswXS10WzBdKSoo
blsxXS10WzFdKTwoZVsxXS10WzFdKSooblswXS10WzBdKX1mdW5jdGlvbiBDcihuLHQsZSxyKXt2
YXIgdT1uWzBdLGk9ZVswXSxvPXRbMF0tdSxhPXJbMF0taSxjPW5bMV0scz1lWzFdLGw9dFsxXS1j
LGY9clsxXS1zLGg9KGEqKGMtcyktZioodS1pKSkvKGYqby1hKmwpO3JldHVyblt1K2gqbyxjK2gq
bF19ZnVuY3Rpb24gTnIobil7dmFyIHQ9blswXSxlPW5bbi5sZW5ndGgtMV07cmV0dXJuISh0WzBd
LWVbMF18fHRbMV0tZVsxXSl9ZnVuY3Rpb24genIoKXtHcih0aGlzKSx0aGlzLmVkZ2U9dGhpcy5z
aXRlPXRoaXMuY2lyY2xlPW51bGx9ZnVuY3Rpb24gTHIobil7dmFyIHQ9QmMucG9wKCl8fG5ldyB6
cjtyZXR1cm4gdC5zaXRlPW4sdH1mdW5jdGlvbiBUcihuKXtZcihuKSxWYy5yZW1vdmUobiksQmMu
cHVzaChuKSxHcihuKX1mdW5jdGlvbiBxcihuKXt2YXIgdD1uLmNpcmNsZSxlPXQueCxyPXQuY3ks
dT17eDplLHk6cn0saT1uLlAsbz1uLk4sYT1bbl07VHIobik7Zm9yKHZhciBjPWk7Yy5jaXJjbGUm
JnVhKGUtYy5jaXJjbGUueCk8a2EmJnVhKHItYy5jaXJjbGUuY3kpPGthOylpPWMuUCxhLnVuc2hp
ZnQoYyksVHIoYyksYz1pO2EudW5zaGlmdChjKSxZcihjKTtmb3IodmFyIHM9bztzLmNpcmNsZSYm
dWEoZS1zLmNpcmNsZS54KTxrYSYmdWEoci1zLmNpcmNsZS5jeSk8a2E7KW89cy5OLGEucHVzaChz
KSxUcihzKSxzPW87YS5wdXNoKHMpLFlyKHMpO3ZhciBsLGY9YS5sZW5ndGg7Zm9yKGw9MTtmPmw7
KytsKXM9YVtsXSxjPWFbbC0xXSxCcihzLmVkZ2UsYy5zaXRlLHMuc2l0ZSx1KTtjPWFbMF0scz1h
W2YtMV0scy5lZGdlPVhyKGMuc2l0ZSxzLnNpdGUsbnVsbCx1KSxPcihjKSxPcihzKX1mdW5jdGlv
biBScihuKXtmb3IodmFyIHQsZSxyLHUsaT1uLngsbz1uLnksYT1WYy5fO2E7KWlmKHI9RHIoYSxv
KS1pLHI+a2EpYT1hLkw7ZWxzZXtpZih1PWktUHIoYSxvKSwhKHU+a2EpKXtyPi1rYT8odD1hLlAs
ZT1hKTp1Pi1rYT8odD1hLGU9YS5OKTp0PWU9YTticmVha31pZighYS5SKXt0PWE7YnJlYWt9YT1h
LlJ9dmFyIGM9THIobik7aWYoVmMuaW5zZXJ0KHQsYyksdHx8ZSl7aWYodD09PWUpcmV0dXJuIFly
KHQpLGU9THIodC5zaXRlKSxWYy5pbnNlcnQoYyxlKSxjLmVkZ2U9ZS5lZGdlPVhyKHQuc2l0ZSxj
LnNpdGUpLE9yKHQpLE9yKGUpLHZvaWQgMDtpZighZSlyZXR1cm4gYy5lZGdlPVhyKHQuc2l0ZSxj
LnNpdGUpLHZvaWQgMDtZcih0KSxZcihlKTt2YXIgcz10LnNpdGUsbD1zLngsZj1zLnksaD1uLngt
bCxnPW4ueS1mLHA9ZS5zaXRlLHY9cC54LWwsZD1wLnktZixtPTIqKGgqZC1nKnYpLHk9aCpoK2cq
Zyx4PXYqditkKmQsTT17eDooZCp5LWcqeCkvbStsLHk6KGgqeC12KnkpL20rZn07QnIoZS5lZGdl
LHMscCxNKSxjLmVkZ2U9WHIocyxuLG51bGwsTSksZS5lZGdlPVhyKG4scCxudWxsLE0pLE9yKHQp
LE9yKGUpfX1mdW5jdGlvbiBEcihuLHQpe3ZhciBlPW4uc2l0ZSxyPWUueCx1PWUueSxpPXUtdDtp
ZighaSlyZXR1cm4gcjt2YXIgbz1uLlA7aWYoIW8pcmV0dXJuLTEvMDtlPW8uc2l0ZTt2YXIgYT1l
LngsYz1lLnkscz1jLXQ7aWYoIXMpcmV0dXJuIGE7dmFyIGw9YS1yLGY9MS9pLTEvcyxoPWwvczty
ZXR1cm4gZj8oLWgrTWF0aC5zcXJ0KGgqaC0yKmYqKGwqbC8oLTIqcyktYytzLzIrdS1pLzIpKSkv
ZityOihyK2EpLzJ9ZnVuY3Rpb24gUHIobix0KXt2YXIgZT1uLk47aWYoZSlyZXR1cm4gRHIoZSx0
KTt2YXIgcj1uLnNpdGU7cmV0dXJuIHIueT09PXQ/ci54OjEvMH1mdW5jdGlvbiBVcihuKXt0aGlz
LnNpdGU9bix0aGlzLmVkZ2VzPVtdfWZ1bmN0aW9uIGpyKG4pe2Zvcih2YXIgdCxlLHIsdSxpLG8s
YSxjLHMsbCxmPW5bMF1bMF0saD1uWzFdWzBdLGc9blswXVsxXSxwPW5bMV1bMV0sdj1aYyxkPXYu
bGVuZ3RoO2QtLTspaWYoaT12W2RdLGkmJmkucHJlcGFyZSgpKWZvcihhPWkuZWRnZXMsYz1hLmxl
bmd0aCxvPTA7Yz5vOylsPWFbb10uZW5kKCkscj1sLngsdT1sLnkscz1hWysrbyVjXS5zdGFydCgp
LHQ9cy54LGU9cy55LCh1YShyLXQpPmthfHx1YSh1LWUpPmthKSYmKGEuc3BsaWNlKG8sMCxuZXcg
V3IoJHIoaS5zaXRlLGwsdWEoci1mKTxrYSYmcC11PmthP3t4OmYseTp1YSh0LWYpPGthP2U6cH06
dWEodS1wKTxrYSYmaC1yPmthP3t4OnVhKGUtcCk8a2E/dDpoLHk6cH06dWEoci1oKTxrYSYmdS1n
PmthP3t4OmgseTp1YSh0LWgpPGthP2U6Z306dWEodS1nKTxrYSYmci1mPmthP3t4OnVhKGUtZyk8
a2E/dDpmLHk6Z306bnVsbCksaS5zaXRlLG51bGwpKSwrK2MpfWZ1bmN0aW9uIEhyKG4sdCl7cmV0
dXJuIHQuYW5nbGUtbi5hbmdsZX1mdW5jdGlvbiBGcigpe0dyKHRoaXMpLHRoaXMueD10aGlzLnk9
dGhpcy5hcmM9dGhpcy5zaXRlPXRoaXMuY3k9bnVsbH1mdW5jdGlvbiBPcihuKXt2YXIgdD1uLlAs
ZT1uLk47aWYodCYmZSl7dmFyIHI9dC5zaXRlLHU9bi5zaXRlLGk9ZS5zaXRlO2lmKHIhPT1pKXt2
YXIgbz11LngsYT11LnksYz1yLngtbyxzPXIueS1hLGw9aS54LW8sZj1pLnktYSxoPTIqKGMqZi1z
KmwpO2lmKCEoaD49LUVhKSl7dmFyIGc9YypjK3MqcyxwPWwqbCtmKmYsdj0oZipnLXMqcCkvaCxk
PShjKnAtbCpnKS9oLGY9ZCthLG09V2MucG9wKCl8fG5ldyBGcjttLmFyYz1uLG0uc2l0ZT11LG0u
eD12K28sbS55PWYrTWF0aC5zcXJ0KHYqditkKmQpLG0uY3k9ZixuLmNpcmNsZT1tO2Zvcih2YXIg
eT1udWxsLHg9JGMuXzt4OylpZihtLnk8eC55fHxtLnk9PT14LnkmJm0ueDw9eC54KXtpZigheC5M
KXt5PXguUDticmVha314PXguTH1lbHNle2lmKCF4LlIpe3k9eDticmVha314PXguUn0kYy5pbnNl
cnQoeSxtKSx5fHwoWGM9bSl9fX19ZnVuY3Rpb24gWXIobil7dmFyIHQ9bi5jaXJjbGU7dCYmKHQu
UHx8KFhjPXQuTiksJGMucmVtb3ZlKHQpLFdjLnB1c2godCksR3IodCksbi5jaXJjbGU9bnVsbCl9
ZnVuY3Rpb24gSXIobil7Zm9yKHZhciB0LGU9SWMscj1QZShuWzBdWzBdLG5bMF1bMV0sblsxXVsw
XSxuWzFdWzFdKSx1PWUubGVuZ3RoO3UtLTspdD1lW3VdLCghWnIodCxuKXx8IXIodCl8fHVhKHQu
YS54LXQuYi54KTxrYSYmdWEodC5hLnktdC5iLnkpPGthKSYmKHQuYT10LmI9bnVsbCxlLnNwbGlj
ZSh1LDEpKX1mdW5jdGlvbiBacihuLHQpe3ZhciBlPW4uYjtpZihlKXJldHVybiEwO3ZhciByLHUs
aT1uLmEsbz10WzBdWzBdLGE9dFsxXVswXSxjPXRbMF1bMV0scz10WzFdWzFdLGw9bi5sLGY9bi5y
LGg9bC54LGc9bC55LHA9Zi54LHY9Zi55LGQ9KGgrcCkvMixtPShnK3YpLzI7aWYodj09PWcpe2lm
KG8+ZHx8ZD49YSlyZXR1cm47aWYoaD5wKXtpZihpKXtpZihpLnk+PXMpcmV0dXJufWVsc2UgaT17
eDpkLHk6Y307ZT17eDpkLHk6c319ZWxzZXtpZihpKXtpZihpLnk8YylyZXR1cm59ZWxzZSBpPXt4
OmQseTpzfTtlPXt4OmQseTpjfX19ZWxzZSBpZihyPShoLXApLyh2LWcpLHU9bS1yKmQsLTE+cnx8
cj4xKWlmKGg+cCl7aWYoaSl7aWYoaS55Pj1zKXJldHVybn1lbHNlIGk9e3g6KGMtdSkvcix5OmN9
O2U9e3g6KHMtdSkvcix5OnN9fWVsc2V7aWYoaSl7aWYoaS55PGMpcmV0dXJufWVsc2UgaT17eDoo
cy11KS9yLHk6c307ZT17eDooYy11KS9yLHk6Y319ZWxzZSBpZih2Pmcpe2lmKGkpe2lmKGkueD49
YSlyZXR1cm59ZWxzZSBpPXt4Om8seTpyKm8rdX07ZT17eDphLHk6ciphK3V9fWVsc2V7aWYoaSl7
aWYoaS54PG8pcmV0dXJufWVsc2UgaT17eDphLHk6ciphK3V9O2U9e3g6byx5OnIqbyt1fX1yZXR1
cm4gbi5hPWksbi5iPWUsITB9ZnVuY3Rpb24gVnIobix0KXt0aGlzLmw9bix0aGlzLnI9dCx0aGlz
LmE9dGhpcy5iPW51bGx9ZnVuY3Rpb24gWHIobix0LGUscil7dmFyIHU9bmV3IFZyKG4sdCk7cmV0
dXJuIEljLnB1c2godSksZSYmQnIodSxuLHQsZSksciYmQnIodSx0LG4sciksWmNbbi5pXS5lZGdl
cy5wdXNoKG5ldyBXcih1LG4sdCkpLFpjW3QuaV0uZWRnZXMucHVzaChuZXcgV3IodSx0LG4pKSx1
fWZ1bmN0aW9uICRyKG4sdCxlKXt2YXIgcj1uZXcgVnIobixudWxsKTtyZXR1cm4gci5hPXQsci5i
PWUsSWMucHVzaChyKSxyfWZ1bmN0aW9uIEJyKG4sdCxlLHIpe24uYXx8bi5iP24ubD09PWU/bi5i
PXI6bi5hPXI6KG4uYT1yLG4ubD10LG4ucj1lKX1mdW5jdGlvbiBXcihuLHQsZSl7dmFyIHI9bi5h
LHU9bi5iO3RoaXMuZWRnZT1uLHRoaXMuc2l0ZT10LHRoaXMuYW5nbGU9ZT9NYXRoLmF0YW4yKGUu
eS10LnksZS54LXQueCk6bi5sPT09dD9NYXRoLmF0YW4yKHUueC1yLngsci55LXUueSk6TWF0aC5h
dGFuMihyLngtdS54LHUueS1yLnkpfWZ1bmN0aW9uIEpyKCl7dGhpcy5fPW51bGx9ZnVuY3Rpb24g
R3Iobil7bi5VPW4uQz1uLkw9bi5SPW4uUD1uLk49bnVsbH1mdW5jdGlvbiBLcihuLHQpe3ZhciBl
PXQscj10LlIsdT1lLlU7dT91Lkw9PT1lP3UuTD1yOnUuUj1yOm4uXz1yLHIuVT11LGUuVT1yLGUu
Uj1yLkwsZS5SJiYoZS5SLlU9ZSksci5MPWV9ZnVuY3Rpb24gUXIobix0KXt2YXIgZT10LHI9dC5M
LHU9ZS5VO3U/dS5MPT09ZT91Lkw9cjp1LlI9cjpuLl89cixyLlU9dSxlLlU9cixlLkw9ci5SLGUu
TCYmKGUuTC5VPWUpLHIuUj1lfWZ1bmN0aW9uIG51KG4pe2Zvcig7bi5MOyluPW4uTDtyZXR1cm4g
bn1mdW5jdGlvbiB0dShuLHQpe3ZhciBlLHIsdSxpPW4uc29ydChldSkucG9wKCk7Zm9yKEljPVtd
LFpjPW5ldyBBcnJheShuLmxlbmd0aCksVmM9bmV3IEpyLCRjPW5ldyBKcjs7KWlmKHU9WGMsaSYm
KCF1fHxpLnk8dS55fHxpLnk9PT11LnkmJmkueDx1LngpKShpLnghPT1lfHxpLnkhPT1yKSYmKFpj
W2kuaV09bmV3IFVyKGkpLFJyKGkpLGU9aS54LHI9aS55KSxpPW4ucG9wKCk7ZWxzZXtpZighdSli
cmVhaztxcih1LmFyYyl9dCYmKElyKHQpLGpyKHQpKTt2YXIgbz17Y2VsbHM6WmMsZWRnZXM6SWN9
O3JldHVybiBWYz0kYz1JYz1aYz1udWxsLG99ZnVuY3Rpb24gZXUobix0KXtyZXR1cm4gdC55LW4u
eXx8dC54LW4ueH1mdW5jdGlvbiBydShuLHQsZSl7cmV0dXJuKG4ueC1lLngpKih0Lnktbi55KS0o
bi54LXQueCkqKGUueS1uLnkpfWZ1bmN0aW9uIHV1KG4pe3JldHVybiBuLnh9ZnVuY3Rpb24gaXUo
bil7cmV0dXJuIG4ueX1mdW5jdGlvbiBvdSgpe3JldHVybntsZWFmOiEwLG5vZGVzOltdLHBvaW50
Om51bGwseDpudWxsLHk6bnVsbH19ZnVuY3Rpb24gYXUobix0LGUscix1LGkpe2lmKCFuKHQsZSxy
LHUsaSkpe3ZhciBvPS41KihlK3UpLGE9LjUqKHIraSksYz10Lm5vZGVzO2NbMF0mJmF1KG4sY1sw
XSxlLHIsbyxhKSxjWzFdJiZhdShuLGNbMV0sbyxyLHUsYSksY1syXSYmYXUobixjWzJdLGUsYSxv
LGkpLGNbM10mJmF1KG4sY1szXSxvLGEsdSxpKX19ZnVuY3Rpb24gY3Uobix0KXtuPVpvLnJnYihu
KSx0PVpvLnJnYih0KTt2YXIgZT1uLnIscj1uLmcsdT1uLmIsaT10LnItZSxvPXQuZy1yLGE9dC5i
LXU7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiIjIitkdChNYXRoLnJvdW5kKGUraSpuKSkrZHQo
TWF0aC5yb3VuZChyK28qbikpK2R0KE1hdGgucm91bmQodSthKm4pKX19ZnVuY3Rpb24gc3Uobix0
KXt2YXIgZSxyPXt9LHU9e307Zm9yKGUgaW4gbillIGluIHQ/cltlXT1odShuW2VdLHRbZV0pOnVb
ZV09bltlXTtmb3IoZSBpbiB0KWUgaW4gbnx8KHVbZV09dFtlXSk7cmV0dXJuIGZ1bmN0aW9uKG4p
e2ZvcihlIGluIHIpdVtlXT1yW2VdKG4pO3JldHVybiB1fX1mdW5jdGlvbiBsdShuLHQpe3JldHVy
biB0LT1uPStuLGZ1bmN0aW9uKGUpe3JldHVybiBuK3QqZX19ZnVuY3Rpb24gZnUobix0KXt2YXIg
ZSxyLHUsaT1HYy5sYXN0SW5kZXg9S2MubGFzdEluZGV4PTAsbz0tMSxhPVtdLGM9W107Zm9yKG4r
PSIiLHQrPSIiOyhlPUdjLmV4ZWMobikpJiYocj1LYy5leGVjKHQpKTspKHU9ci5pbmRleCk+aSYm
KHU9dC5zdWJzdHJpbmcoaSx1KSxhW29dP2Fbb10rPXU6YVsrK29dPXUpLChlPWVbMF0pPT09KHI9
clswXSk/YVtvXT9hW29dKz1yOmFbKytvXT1yOihhWysrb109bnVsbCxjLnB1c2goe2k6byx4Omx1
KGUscil9KSksaT1LYy5sYXN0SW5kZXg7cmV0dXJuIGk8dC5sZW5ndGgmJih1PXQuc3Vic3RyaW5n
KGkpLGFbb10/YVtvXSs9dTphWysrb109dSksYS5sZW5ndGg8Mj9jWzBdPyh0PWNbMF0ueCxmdW5j
dGlvbihuKXtyZXR1cm4gdChuKSsiIn0pOmZ1bmN0aW9uKCl7cmV0dXJuIHR9Oih0PWMubGVuZ3Ro
LGZ1bmN0aW9uKG4pe2Zvcih2YXIgZSxyPTA7dD5yOysrcilhWyhlPWNbcl0pLmldPWUueChuKTty
ZXR1cm4gYS5qb2luKCIiKX0pfWZ1bmN0aW9uIGh1KG4sdCl7Zm9yKHZhciBlLHI9Wm8uaW50ZXJw
b2xhdG9ycy5sZW5ndGg7LS1yPj0wJiYhKGU9Wm8uaW50ZXJwb2xhdG9yc1tyXShuLHQpKTspO3Jl
dHVybiBlfWZ1bmN0aW9uIGd1KG4sdCl7dmFyIGUscj1bXSx1PVtdLGk9bi5sZW5ndGgsbz10Lmxl
bmd0aCxhPU1hdGgubWluKG4ubGVuZ3RoLHQubGVuZ3RoKTtmb3IoZT0wO2E+ZTsrK2Upci5wdXNo
KGh1KG5bZV0sdFtlXSkpO2Zvcig7aT5lOysrZSl1W2VdPW5bZV07Zm9yKDtvPmU7KytlKXVbZV09
dFtlXTtyZXR1cm4gZnVuY3Rpb24obil7Zm9yKGU9MDthPmU7KytlKXVbZV09cltlXShuKTtyZXR1
cm4gdX19ZnVuY3Rpb24gcHUobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAwPj10PzA6dD49
MT8xOm4odCl9fWZ1bmN0aW9uIHZ1KG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gMS1uKDEt
dCl9fWZ1bmN0aW9uIGR1KG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4uNSooLjU+dD9uKDIq
dCk6Mi1uKDItMip0KSl9fWZ1bmN0aW9uIG11KG4pe3JldHVybiBuKm59ZnVuY3Rpb24geXUobil7
cmV0dXJuIG4qbipufWZ1bmN0aW9uIHh1KG4pe2lmKDA+PW4pcmV0dXJuIDA7aWYobj49MSlyZXR1
cm4gMTt2YXIgdD1uKm4sZT10Km47cmV0dXJuIDQqKC41Pm4/ZTozKihuLXQpK2UtLjc1KX1mdW5j
dGlvbiBNdShuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KHQsbil9fWZ1bmN0
aW9uIF91KG4pe3JldHVybiAxLU1hdGguY29zKG4qU2EpfWZ1bmN0aW9uIGJ1KG4pe3JldHVybiBN
YXRoLnBvdygyLDEwKihuLTEpKX1mdW5jdGlvbiB3dShuKXtyZXR1cm4gMS1NYXRoLnNxcnQoMS1u
Km4pfWZ1bmN0aW9uIFN1KG4sdCl7dmFyIGU7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9
LjQ1KSxhcmd1bWVudHMubGVuZ3RoP2U9dC93YSpNYXRoLmFzaW4oMS9uKToobj0xLGU9dC80KSxm
dW5jdGlvbihyKXtyZXR1cm4gMStuKk1hdGgucG93KDIsLTEwKnIpKk1hdGguc2luKChyLWUpKndh
L3QpfX1mdW5jdGlvbiBrdShuKXtyZXR1cm4gbnx8KG49MS43MDE1OCksZnVuY3Rpb24odCl7cmV0
dXJuIHQqdCooKG4rMSkqdC1uKX19ZnVuY3Rpb24gRXUobil7cmV0dXJuIDEvMi43NT5uPzcuNTYy
NSpuKm46Mi8yLjc1Pm4/Ny41NjI1KihuLT0xLjUvMi43NSkqbisuNzU6Mi41LzIuNzU+bj83LjU2
MjUqKG4tPTIuMjUvMi43NSkqbisuOTM3NTo3LjU2MjUqKG4tPTIuNjI1LzIuNzUpKm4rLjk4NDM3
NX1mdW5jdGlvbiBBdShuLHQpe249Wm8uaGNsKG4pLHQ9Wm8uaGNsKHQpO3ZhciBlPW4uaCxyPW4u
Yyx1PW4ubCxpPXQuaC1lLG89dC5jLXIsYT10LmwtdTtyZXR1cm4gaXNOYU4obykmJihvPTAscj1p
c05hTihyKT90LmM6ciksaXNOYU4oaSk/KGk9MCxlPWlzTmFOKGUpP3QuaDplKTppPjE4MD9pLT0z
NjA6LTE4MD5pJiYoaSs9MzYwKSxmdW5jdGlvbihuKXtyZXR1cm4gb3QoZStpKm4scitvKm4sdSth
Km4pKyIifX1mdW5jdGlvbiBDdShuLHQpe249Wm8uaHNsKG4pLHQ9Wm8uaHNsKHQpO3ZhciBlPW4u
aCxyPW4ucyx1PW4ubCxpPXQuaC1lLG89dC5zLXIsYT10LmwtdTtyZXR1cm4gaXNOYU4obykmJihv
PTAscj1pc05hTihyKT90LnM6ciksaXNOYU4oaSk/KGk9MCxlPWlzTmFOKGUpP3QuaDplKTppPjE4
MD9pLT0zNjA6LTE4MD5pJiYoaSs9MzYwKSxmdW5jdGlvbihuKXtyZXR1cm4gdXQoZStpKm4scitv
Km4sdSthKm4pKyIifX1mdW5jdGlvbiBOdShuLHQpe249Wm8ubGFiKG4pLHQ9Wm8ubGFiKHQpO3Zh
ciBlPW4ubCxyPW4uYSx1PW4uYixpPXQubC1lLG89dC5hLXIsYT10LmItdTtyZXR1cm4gZnVuY3Rp
b24obil7cmV0dXJuIGN0KGUraSpuLHIrbypuLHUrYSpuKSsiIn19ZnVuY3Rpb24genUobix0KXty
ZXR1cm4gdC09bixmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChuK3QqZSl9fWZ1bmN0aW9u
IEx1KG4pe3ZhciB0PVtuLmEsbi5iXSxlPVtuLmMsbi5kXSxyPXF1KHQpLHU9VHUodCxlKSxpPXF1
KFJ1KGUsdCwtdSkpfHwwO3RbMF0qZVsxXTxlWzBdKnRbMV0mJih0WzBdKj0tMSx0WzFdKj0tMSxy
Kj0tMSx1Kj0tMSksdGhpcy5yb3RhdGU9KHI/TWF0aC5hdGFuMih0WzFdLHRbMF0pOk1hdGguYXRh
bjIoLWVbMF0sZVsxXSkpKkNhLHRoaXMudHJhbnNsYXRlPVtuLmUsbi5mXSx0aGlzLnNjYWxlPVty
LGldLHRoaXMuc2tldz1pP01hdGguYXRhbjIodSxpKSpDYTowfWZ1bmN0aW9uIFR1KG4sdCl7cmV0
dXJuIG5bMF0qdFswXStuWzFdKnRbMV19ZnVuY3Rpb24gcXUobil7dmFyIHQ9TWF0aC5zcXJ0KFR1
KG4sbikpO3JldHVybiB0JiYoblswXS89dCxuWzFdLz10KSx0fWZ1bmN0aW9uIFJ1KG4sdCxlKXty
ZXR1cm4gblswXSs9ZSp0WzBdLG5bMV0rPWUqdFsxXSxufWZ1bmN0aW9uIER1KG4sdCl7dmFyIGUs
cj1bXSx1PVtdLGk9Wm8udHJhbnNmb3JtKG4pLG89Wm8udHJhbnNmb3JtKHQpLGE9aS50cmFuc2xh
dGUsYz1vLnRyYW5zbGF0ZSxzPWkucm90YXRlLGw9by5yb3RhdGUsZj1pLnNrZXcsaD1vLnNrZXcs
Zz1pLnNjYWxlLHA9by5zY2FsZTtyZXR1cm4gYVswXSE9Y1swXXx8YVsxXSE9Y1sxXT8oci5wdXNo
KCJ0cmFuc2xhdGUoIixudWxsLCIsIixudWxsLCIpIiksdS5wdXNoKHtpOjEseDpsdShhWzBdLGNb
MF0pfSx7aTozLHg6bHUoYVsxXSxjWzFdKX0pKTpjWzBdfHxjWzFdP3IucHVzaCgidHJhbnNsYXRl
KCIrYysiKSIpOnIucHVzaCgiIikscyE9bD8ocy1sPjE4MD9sKz0zNjA6bC1zPjE4MCYmKHMrPTM2
MCksdS5wdXNoKHtpOnIucHVzaChyLnBvcCgpKyJyb3RhdGUoIixudWxsLCIpIiktMix4Omx1KHMs
bCl9KSk6bCYmci5wdXNoKHIucG9wKCkrInJvdGF0ZSgiK2wrIikiKSxmIT1oP3UucHVzaCh7aTpy
LnB1c2goci5wb3AoKSsic2tld1goIixudWxsLCIpIiktMix4Omx1KGYsaCl9KTpoJiZyLnB1c2go
ci5wb3AoKSsic2tld1goIitoKyIpIiksZ1swXSE9cFswXXx8Z1sxXSE9cFsxXT8oZT1yLnB1c2go
ci5wb3AoKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIiksdS5wdXNoKHtpOmUtNCx4Omx1KGdb
MF0scFswXSl9LHtpOmUtMix4Omx1KGdbMV0scFsxXSl9KSk6KDEhPXBbMF18fDEhPXBbMV0pJiZy
LnB1c2goci5wb3AoKSsic2NhbGUoIitwKyIpIiksZT11Lmxlbmd0aCxmdW5jdGlvbihuKXtmb3Io
dmFyIHQsaT0tMTsrK2k8ZTspclsodD11W2ldKS5pXT10Lngobik7cmV0dXJuIHIuam9pbigiIil9
fWZ1bmN0aW9uIFB1KG4sdCl7cmV0dXJuIHQ9dC0obj0rbik/MS8odC1uKTowLGZ1bmN0aW9uKGUp
e3JldHVybihlLW4pKnR9fWZ1bmN0aW9uIFV1KG4sdCl7cmV0dXJuIHQ9dC0obj0rbik/MS8odC1u
KTowLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDEsKGUtbikqdCkpfX1m
dW5jdGlvbiBqdShuKXtmb3IodmFyIHQ9bi5zb3VyY2UsZT1uLnRhcmdldCxyPUZ1KHQsZSksdT1b
dF07dCE9PXI7KXQ9dC5wYXJlbnQsdS5wdXNoKHQpO2Zvcih2YXIgaT11Lmxlbmd0aDtlIT09cjsp
dS5zcGxpY2UoaSwwLGUpLGU9ZS5wYXJlbnQ7cmV0dXJuIHV9ZnVuY3Rpb24gSHUobil7Zm9yKHZh
ciB0PVtdLGU9bi5wYXJlbnQ7bnVsbCE9ZTspdC5wdXNoKG4pLG49ZSxlPWUucGFyZW50O3JldHVy
biB0LnB1c2gobiksdH1mdW5jdGlvbiBGdShuLHQpe2lmKG49PT10KXJldHVybiBuO2Zvcih2YXIg
ZT1IdShuKSxyPUh1KHQpLHU9ZS5wb3AoKSxpPXIucG9wKCksbz1udWxsO3U9PT1pOylvPXUsdT1l
LnBvcCgpLGk9ci5wb3AoKTtyZXR1cm4gb31mdW5jdGlvbiBPdShuKXtuLmZpeGVkfD0yfWZ1bmN0
aW9uIFl1KG4pe24uZml4ZWQmPS03fWZ1bmN0aW9uIEl1KG4pe24uZml4ZWR8PTQsbi5weD1uLngs
bi5weT1uLnl9ZnVuY3Rpb24gWnUobil7bi5maXhlZCY9LTV9ZnVuY3Rpb24gVnUobix0LGUpe3Zh
ciByPTAsdT0wO2lmKG4uY2hhcmdlPTAsIW4ubGVhZilmb3IodmFyIGksbz1uLm5vZGVzLGE9by5s
ZW5ndGgsYz0tMTsrK2M8YTspaT1vW2NdLG51bGwhPWkmJihWdShpLHQsZSksbi5jaGFyZ2UrPWku
Y2hhcmdlLHIrPWkuY2hhcmdlKmkuY3gsdSs9aS5jaGFyZ2UqaS5jeSk7aWYobi5wb2ludCl7bi5s
ZWFmfHwobi5wb2ludC54Kz1NYXRoLnJhbmRvbSgpLS41LG4ucG9pbnQueSs9TWF0aC5yYW5kb20o
KS0uNSk7dmFyIHM9dCplW24ucG9pbnQuaW5kZXhdO24uY2hhcmdlKz1uLnBvaW50Q2hhcmdlPXMs
cis9cypuLnBvaW50LngsdSs9cypuLnBvaW50Lnl9bi5jeD1yL24uY2hhcmdlLG4uY3k9dS9uLmNo
YXJnZX1mdW5jdGlvbiBYdShuLHQpe3JldHVybiBaby5yZWJpbmQobix0LCJzb3J0IiwiY2hpbGRy
ZW4iLCJ2YWx1ZSIpLG4ubm9kZXM9bixuLmxpbmtzPUt1LG59ZnVuY3Rpb24gJHUobix0KXtmb3Io
dmFyIGU9W25dO251bGwhPShuPWUucG9wKCkpOylpZih0KG4pLCh1PW4uY2hpbGRyZW4pJiYocj11
Lmxlbmd0aCkpZm9yKHZhciByLHU7LS1yPj0wOyllLnB1c2godVtyXSl9ZnVuY3Rpb24gQnUobix0
KXtmb3IodmFyIGU9W25dLHI9W107bnVsbCE9KG49ZS5wb3AoKSk7KWlmKHIucHVzaChuKSwoaT1u
LmNoaWxkcmVuKSYmKHU9aS5sZW5ndGgpKWZvcih2YXIgdSxpLG89LTE7KytvPHU7KWUucHVzaChp
W29dKTtmb3IoO251bGwhPShuPXIucG9wKCkpOyl0KG4pfWZ1bmN0aW9uIFd1KG4pe3JldHVybiBu
LmNoaWxkcmVufWZ1bmN0aW9uIEp1KG4pe3JldHVybiBuLnZhbHVlfWZ1bmN0aW9uIEd1KG4sdCl7
cmV0dXJuIHQudmFsdWUtbi52YWx1ZX1mdW5jdGlvbiBLdShuKXtyZXR1cm4gWm8ubWVyZ2Uobi5t
YXAoZnVuY3Rpb24obil7cmV0dXJuKG4uY2hpbGRyZW58fFtdKS5tYXAoZnVuY3Rpb24odCl7cmV0
dXJue3NvdXJjZTpuLHRhcmdldDp0fX0pfSkpfWZ1bmN0aW9uIFF1KG4pe3JldHVybiBuLnh9ZnVu
Y3Rpb24gbmkobil7cmV0dXJuIG4ueX1mdW5jdGlvbiB0aShuLHQsZSl7bi55MD10LG4ueT1lfWZ1
bmN0aW9uIGVpKG4pe3JldHVybiBaby5yYW5nZShuLmxlbmd0aCl9ZnVuY3Rpb24gcmkobil7Zm9y
KHZhciB0PS0xLGU9blswXS5sZW5ndGgscj1bXTsrK3Q8ZTspclt0XT0wO3JldHVybiByfWZ1bmN0
aW9uIHVpKG4pe2Zvcih2YXIgdCxlPTEscj0wLHU9blswXVsxXSxpPW4ubGVuZ3RoO2k+ZTsrK2Up
KHQ9bltlXVsxXSk+dSYmKHI9ZSx1PXQpO3JldHVybiByfWZ1bmN0aW9uIGlpKG4pe3JldHVybiBu
LnJlZHVjZShvaSwwKX1mdW5jdGlvbiBvaShuLHQpe3JldHVybiBuK3RbMV19ZnVuY3Rpb24gYWko
bix0KXtyZXR1cm4gY2kobixNYXRoLmNlaWwoTWF0aC5sb2codC5sZW5ndGgpL01hdGguTE4yKzEp
KX1mdW5jdGlvbiBjaShuLHQpe2Zvcih2YXIgZT0tMSxyPStuWzBdLHU9KG5bMV0tcikvdCxpPVtd
OysrZTw9dDspaVtlXT11KmUrcjtyZXR1cm4gaX1mdW5jdGlvbiBzaShuKXtyZXR1cm5bWm8ubWlu
KG4pLFpvLm1heChuKV19ZnVuY3Rpb24gbGkobix0KXtyZXR1cm4gbi52YWx1ZS10LnZhbHVlfWZ1
bmN0aW9uIGZpKG4sdCl7dmFyIGU9bi5fcGFja19uZXh0O24uX3BhY2tfbmV4dD10LHQuX3BhY2tf
cHJldj1uLHQuX3BhY2tfbmV4dD1lLGUuX3BhY2tfcHJldj10fWZ1bmN0aW9uIGhpKG4sdCl7bi5f
cGFja19uZXh0PXQsdC5fcGFja19wcmV2PW59ZnVuY3Rpb24gZ2kobix0KXt2YXIgZT10Lngtbi54
LHI9dC55LW4ueSx1PW4ucit0LnI7cmV0dXJuLjk5OSp1KnU+ZSplK3Iqcn1mdW5jdGlvbiBwaShu
KXtmdW5jdGlvbiB0KG4pe2w9TWF0aC5taW4obi54LW4ucixsKSxmPU1hdGgubWF4KG4ueCtuLnIs
ZiksaD1NYXRoLm1pbihuLnktbi5yLGgpLGc9TWF0aC5tYXgobi55K24ucixnKX1pZigoZT1uLmNo
aWxkcmVuKSYmKHM9ZS5sZW5ndGgpKXt2YXIgZSxyLHUsaSxvLGEsYyxzLGw9MS8wLGY9LTEvMCxo
PTEvMCxnPS0xLzA7aWYoZS5mb3JFYWNoKHZpKSxyPWVbMF0sci54PS1yLnIsci55PTAsdChyKSxz
PjEmJih1PWVbMV0sdS54PXUucix1Lnk9MCx0KHUpLHM+MikpZm9yKGk9ZVsyXSx5aShyLHUsaSks
dChpKSxmaShyLGkpLHIuX3BhY2tfcHJldj1pLGZpKGksdSksdT1yLl9wYWNrX25leHQsbz0zO3M+
bztvKyspe3lpKHIsdSxpPWVbb10pO3ZhciBwPTAsdj0xLGQ9MTtmb3IoYT11Ll9wYWNrX25leHQ7
YSE9PXU7YT1hLl9wYWNrX25leHQsdisrKWlmKGdpKGEsaSkpe3A9MTticmVha31pZigxPT1wKWZv
cihjPXIuX3BhY2tfcHJldjtjIT09YS5fcGFja19wcmV2JiYhZ2koYyxpKTtjPWMuX3BhY2tfcHJl
dixkKyspO3A/KGQ+dnx8dj09ZCYmdS5yPHIucj9oaShyLHU9YSk6aGkocj1jLHUpLG8tLSk6KGZp
KHIsaSksdT1pLHQoaSkpfXZhciBtPShsK2YpLzIseT0oaCtnKS8yLHg9MDtmb3Iobz0wO3M+bztv
KyspaT1lW29dLGkueC09bSxpLnktPXkseD1NYXRoLm1heCh4LGkucitNYXRoLnNxcnQoaS54Kmku
eCtpLnkqaS55KSk7bi5yPXgsZS5mb3JFYWNoKGRpKX19ZnVuY3Rpb24gdmkobil7bi5fcGFja19u
ZXh0PW4uX3BhY2tfcHJldj1ufWZ1bmN0aW9uIGRpKG4pe2RlbGV0ZSBuLl9wYWNrX25leHQsZGVs
ZXRlIG4uX3BhY2tfcHJldn1mdW5jdGlvbiBtaShuLHQsZSxyKXt2YXIgdT1uLmNoaWxkcmVuO2lm
KG4ueD10Kz1yKm4ueCxuLnk9ZSs9cipuLnksbi5yKj1yLHUpZm9yKHZhciBpPS0xLG89dS5sZW5n
dGg7KytpPG87KW1pKHVbaV0sdCxlLHIpfWZ1bmN0aW9uIHlpKG4sdCxlKXt2YXIgcj1uLnIrZS5y
LHU9dC54LW4ueCxpPXQueS1uLnk7aWYociYmKHV8fGkpKXt2YXIgbz10LnIrZS5yLGE9dSp1K2kq
aTtvKj1vLHIqPXI7dmFyIGM9LjUrKHItbykvKDIqYSkscz1NYXRoLnNxcnQoTWF0aC5tYXgoMCwy
Km8qKHIrYSktKHItPWEpKnItbypvKSkvKDIqYSk7ZS54PW4ueCtjKnUrcyppLGUueT1uLnkrYypp
LXMqdX1lbHNlIGUueD1uLngrcixlLnk9bi55fWZ1bmN0aW9uIHhpKG4sdCl7cmV0dXJuIG4ucGFy
ZW50PT10LnBhcmVudD8xOjJ9ZnVuY3Rpb24gTWkobil7dmFyIHQ9bi5jaGlsZHJlbjtyZXR1cm4g
dC5sZW5ndGg/dFswXTpuLnR9ZnVuY3Rpb24gX2kobil7dmFyIHQsZT1uLmNoaWxkcmVuO3JldHVy
bih0PWUubGVuZ3RoKT9lW3QtMV06bi50fWZ1bmN0aW9uIGJpKG4sdCxlKXt2YXIgcj1lLyh0Lmkt
bi5pKTt0LmMtPXIsdC5zKz1lLG4uYys9cix0LnorPWUsdC5tKz1lfWZ1bmN0aW9uIHdpKG4pe2Zv
cih2YXIgdCxlPTAscj0wLHU9bi5jaGlsZHJlbixpPXUubGVuZ3RoOy0taT49MDspdD11W2ldLHQu
eis9ZSx0Lm0rPWUsZSs9dC5zKyhyKz10LmMpfWZ1bmN0aW9uIFNpKG4sdCxlKXtyZXR1cm4gbi5h
LnBhcmVudD09PXQucGFyZW50P24uYTplfWZ1bmN0aW9uIGtpKG4pe3JldHVybiAxK1pvLm1heChu
LGZ1bmN0aW9uKG4pe3JldHVybiBuLnl9KX1mdW5jdGlvbiBFaShuKXtyZXR1cm4gbi5yZWR1Y2Uo
ZnVuY3Rpb24obix0KXtyZXR1cm4gbit0Lnh9LDApL24ubGVuZ3RofWZ1bmN0aW9uIEFpKG4pe3Zh
ciB0PW4uY2hpbGRyZW47cmV0dXJuIHQmJnQubGVuZ3RoP0FpKHRbMF0pOm59ZnVuY3Rpb24gQ2ko
bil7dmFyIHQsZT1uLmNoaWxkcmVuO3JldHVybiBlJiYodD1lLmxlbmd0aCk/Q2koZVt0LTFdKTpu
fWZ1bmN0aW9uIE5pKG4pe3JldHVybnt4Om4ueCx5Om4ueSxkeDpuLmR4LGR5Om4uZHl9fWZ1bmN0
aW9uIHppKG4sdCl7dmFyIGU9bi54K3RbM10scj1uLnkrdFswXSx1PW4uZHgtdFsxXS10WzNdLGk9
bi5keS10WzBdLXRbMl07cmV0dXJuIDA+dSYmKGUrPXUvMix1PTApLDA+aSYmKHIrPWkvMixpPTAp
LHt4OmUseTpyLGR4OnUsZHk6aX19ZnVuY3Rpb24gTGkobil7dmFyIHQ9blswXSxlPW5bbi5sZW5n
dGgtMV07cmV0dXJuIGU+dD9bdCxlXTpbZSx0XX1mdW5jdGlvbiBUaShuKXtyZXR1cm4gbi5yYW5n
ZUV4dGVudD9uLnJhbmdlRXh0ZW50KCk6TGkobi5yYW5nZSgpKX1mdW5jdGlvbiBxaShuLHQsZSxy
KXt2YXIgdT1lKG5bMF0sblsxXSksaT1yKHRbMF0sdFsxXSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3Jl
dHVybiBpKHUobikpfX1mdW5jdGlvbiBSaShuLHQpe3ZhciBlLHI9MCx1PW4ubGVuZ3RoLTEsaT1u
W3JdLG89blt1XTtyZXR1cm4gaT5vJiYoZT1yLHI9dSx1PWUsZT1pLGk9byxvPWUpLG5bcl09dC5m
bG9vcihpKSxuW3VdPXQuY2VpbChvKSxufWZ1bmN0aW9uIERpKG4pe3JldHVybiBuP3tmbG9vcjpm
dW5jdGlvbih0KXtyZXR1cm4gTWF0aC5mbG9vcih0L24pKm59LGNlaWw6ZnVuY3Rpb24odCl7cmV0
dXJuIE1hdGguY2VpbCh0L24pKm59fTpzc31mdW5jdGlvbiBQaShuLHQsZSxyKXt2YXIgdT1bXSxp
PVtdLG89MCxhPU1hdGgubWluKG4ubGVuZ3RoLHQubGVuZ3RoKS0xO2ZvcihuW2FdPG5bMF0mJihu
PW4uc2xpY2UoKS5yZXZlcnNlKCksdD10LnNsaWNlKCkucmV2ZXJzZSgpKTsrK288PWE7KXUucHVz
aChlKG5bby0xXSxuW29dKSksaS5wdXNoKHIodFtvLTFdLHRbb10pKTtyZXR1cm4gZnVuY3Rpb24o
dCl7dmFyIGU9Wm8uYmlzZWN0KG4sdCwxLGEpLTE7cmV0dXJuIGlbZV0odVtlXSh0KSl9fWZ1bmN0
aW9uIFVpKG4sdCxlLHIpe2Z1bmN0aW9uIHUoKXt2YXIgdT1NYXRoLm1pbihuLmxlbmd0aCx0Lmxl
bmd0aCk+Mj9QaTpxaSxjPXI/VXU6UHU7cmV0dXJuIG89dShuLHQsYyxlKSxhPXUodCxuLGMsaHUp
LGl9ZnVuY3Rpb24gaShuKXtyZXR1cm4gbyhuKX12YXIgbyxhO3JldHVybiBpLmludmVydD1mdW5j
dGlvbihuKXtyZXR1cm4gYShuKX0saS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG49dC5tYXAoTnVtYmVyKSx1KCkpOm59LGkucmFuZ2U9ZnVuY3Rpb24obil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bix1KCkpOnR9LGkucmFuZ2VSb3VuZD1mdW5jdGlvbihu
KXtyZXR1cm4gaS5yYW5nZShuKS5pbnRlcnBvbGF0ZSh6dSl9LGkuY2xhbXA9ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bix1KCkpOnJ9LGkuaW50ZXJwb2xhdGU9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bix1KCkpOmV9LGkudGlja3M9ZnVuY3Rp
b24odCl7cmV0dXJuIE9pKG4sdCl9LGkudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBZ
aShuLHQsZSl9LGkubmljZT1mdW5jdGlvbih0KXtyZXR1cm4gSGkobix0KSx1KCl9LGkuY29weT1m
dW5jdGlvbigpe3JldHVybiBVaShuLHQsZSxyKX0sdSgpfWZ1bmN0aW9uIGppKG4sdCl7cmV0dXJu
IFpvLnJlYmluZChuLHQsInJhbmdlIiwicmFuZ2VSb3VuZCIsImludGVycG9sYXRlIiwiY2xhbXAi
KX1mdW5jdGlvbiBIaShuLHQpe3JldHVybiBSaShuLERpKEZpKG4sdClbMl0pKX1mdW5jdGlvbiBG
aShuLHQpe251bGw9PXQmJih0PTEwKTt2YXIgZT1MaShuKSxyPWVbMV0tZVswXSx1PU1hdGgucG93
KDEwLE1hdGguZmxvb3IoTWF0aC5sb2coci90KS9NYXRoLkxOMTApKSxpPXQvcip1O3JldHVybi4x
NT49aT91Kj0xMDouMzU+PWk/dSo9NTouNzU+PWkmJih1Kj0yKSxlWzBdPU1hdGguY2VpbChlWzBd
L3UpKnUsZVsxXT1NYXRoLmZsb29yKGVbMV0vdSkqdSsuNSp1LGVbMl09dSxlfWZ1bmN0aW9uIE9p
KG4sdCl7cmV0dXJuIFpvLnJhbmdlLmFwcGx5KFpvLEZpKG4sdCkpfWZ1bmN0aW9uIFlpKG4sdCxl
KXt2YXIgcj1GaShuLHQpO2lmKGUpe3ZhciB1PUdhLmV4ZWMoZSk7aWYodS5zaGlmdCgpLCJzIj09
PXVbOF0pe3ZhciBpPVpvLmZvcm1hdFByZWZpeChNYXRoLm1heCh1YShyWzBdKSx1YShyWzFdKSkp
O3JldHVybiB1WzddfHwodVs3XT0iLiIrSWkoaS5zY2FsZShyWzJdKSkpLHVbOF09ImYiLGU9Wm8u
Zm9ybWF0KHUuam9pbigiIikpLGZ1bmN0aW9uKG4pe3JldHVybiBlKGkuc2NhbGUobikpK2kuc3lt
Ym9sfX11WzddfHwodVs3XT0iLiIrWmkodVs4XSxyKSksZT11LmpvaW4oIiIpfWVsc2UgZT0iLC4i
K0lpKHJbMl0pKyJmIjtyZXR1cm4gWm8uZm9ybWF0KGUpfWZ1bmN0aW9uIElpKG4pe3JldHVybi1N
YXRoLmZsb29yKE1hdGgubG9nKG4pL01hdGguTE4xMCsuMDEpfWZ1bmN0aW9uIFppKG4sdCl7dmFy
IGU9SWkodFsyXSk7cmV0dXJuIG4gaW4gbHM/TWF0aC5hYnMoZS1JaShNYXRoLm1heCh1YSh0WzBd
KSx1YSh0WzFdKSkpKSsgKygiZSIhPT1uKTplLTIqKCIlIj09PW4pfWZ1bmN0aW9uIFZpKG4sdCxl
LHIpe2Z1bmN0aW9uIHUobil7cmV0dXJuKGU/TWF0aC5sb2coMD5uPzA6bik6LU1hdGgubG9nKG4+
MD8wOi1uKSkvTWF0aC5sb2codCl9ZnVuY3Rpb24gaShuKXtyZXR1cm4gZT9NYXRoLnBvdyh0LG4p
Oi1NYXRoLnBvdyh0LC1uKX1mdW5jdGlvbiBvKHQpe3JldHVybiBuKHUodCkpfXJldHVybiBvLmlu
dmVydD1mdW5jdGlvbih0KXtyZXR1cm4gaShuLmludmVydCh0KSl9LG8uZG9tYWluPWZ1bmN0aW9u
KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXRbMF0+PTAsbi5kb21haW4oKHI9dC5tYXAo
TnVtYmVyKSkubWFwKHUpKSxvKTpyfSxvLmJhc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHQ9K2Usbi5kb21haW4oci5tYXAodSkpLG8pOnR9LG8ubmljZT1mdW5jdGlvbigp
e3ZhciB0PVJpKHIubWFwKHUpLGU/TWF0aDpocyk7cmV0dXJuIG4uZG9tYWluKHQpLHI9dC5tYXAo
aSksb30sby50aWNrcz1mdW5jdGlvbigpe3ZhciBuPUxpKHIpLG89W10sYT1uWzBdLGM9blsxXSxz
PU1hdGguZmxvb3IodShhKSksbD1NYXRoLmNlaWwodShjKSksZj10JTE/Mjp0O2lmKGlzRmluaXRl
KGwtcykpe2lmKGUpe2Zvcig7bD5zO3MrKylmb3IodmFyIGg9MTtmPmg7aCsrKW8ucHVzaChpKHMp
KmgpO28ucHVzaChpKHMpKX1lbHNlIGZvcihvLnB1c2goaShzKSk7cysrPGw7KWZvcih2YXIgaD1m
LTE7aD4wO2gtLSlvLnB1c2goaShzKSpoKTtmb3Iocz0wO29bc108YTtzKyspO2ZvcihsPW8ubGVu
Z3RoO29bbC0xXT5jO2wtLSk7bz1vLnNsaWNlKHMsbCl9cmV0dXJuIG99LG8udGlja0Zvcm1hdD1m
dW5jdGlvbihuLHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBmczthcmd1bWVudHMubGVu
Z3RoPDI/dD1mczoiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9Wm8uZm9ybWF0KHQpKTt2YXIgcixh
PU1hdGgubWF4KC4xLG4vby50aWNrcygpLmxlbmd0aCksYz1lPyhyPTFlLTEyLE1hdGguY2VpbCk6
KHI9LTFlLTEyLE1hdGguZmxvb3IpO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbi9pKGModShu
KStyKSk8PWE/dChuKToiIn19LG8uY29weT1mdW5jdGlvbigpe3JldHVybiBWaShuLmNvcHkoKSx0
LGUscil9LGppKG8sbil9ZnVuY3Rpb24gWGkobix0LGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIG4o
dSh0KSl9dmFyIHU9JGkodCksaT0kaSgxL3QpO3JldHVybiByLmludmVydD1mdW5jdGlvbih0KXty
ZXR1cm4gaShuLmludmVydCh0KSl9LHIuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhuLmRvbWFpbigoZT10Lm1hcChOdW1iZXIpKS5tYXAodSkpLHIpOmV9LHIudGlj
a3M9ZnVuY3Rpb24obil7cmV0dXJuIE9pKGUsbil9LHIudGlja0Zvcm1hdD1mdW5jdGlvbihuLHQp
e3JldHVybiBZaShlLG4sdCl9LHIubmljZT1mdW5jdGlvbihuKXtyZXR1cm4gci5kb21haW4oSGko
ZSxuKSl9LHIuZXhwb25lbnQ9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9
JGkodD1vKSxpPSRpKDEvdCksbi5kb21haW4oZS5tYXAodSkpLHIpOnR9LHIuY29weT1mdW5jdGlv
bigpe3JldHVybiBYaShuLmNvcHkoKSx0LGUpfSxqaShyLG4pfWZ1bmN0aW9uICRpKG4pe3JldHVy
biBmdW5jdGlvbih0KXtyZXR1cm4gMD50Py1NYXRoLnBvdygtdCxuKTpNYXRoLnBvdyh0LG4pfX1m
dW5jdGlvbiBCaShuLHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGlbKCh1LmdldChlKXx8KCJyYW5n
ZSI9PT10LnQ/dS5zZXQoZSxuLnB1c2goZSkpOjAvMCkpLTEpJWkubGVuZ3RoXX1mdW5jdGlvbiBy
KHQsZSl7cmV0dXJuIFpvLnJhbmdlKG4ubGVuZ3RoKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHQr
ZSpufSl9dmFyIHUsaSxhO3JldHVybiBlLmRvbWFpbj1mdW5jdGlvbihyKXtpZighYXJndW1lbnRz
Lmxlbmd0aClyZXR1cm4gbjtuPVtdLHU9bmV3IG87Zm9yKHZhciBpLGE9LTEsYz1yLmxlbmd0aDsr
K2E8YzspdS5oYXMoaT1yW2FdKXx8dS5zZXQoaSxuLnB1c2goaSkpO3JldHVybiBlW3QudF0uYXBw
bHkoZSx0LmEpfSxlLnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhp
PW4sYT0wLHQ9e3Q6InJhbmdlIixhOmFyZ3VtZW50c30sZSk6aX0sZS5yYW5nZVBvaW50cz1mdW5j
dGlvbih1LG8pe2FyZ3VtZW50cy5sZW5ndGg8MiYmKG89MCk7dmFyIGM9dVswXSxzPXVbMV0sbD0o
cy1jKS8oTWF0aC5tYXgoMSxuLmxlbmd0aC0xKStvKTtyZXR1cm4gaT1yKG4ubGVuZ3RoPDI/KGMr
cykvMjpjK2wqby8yLGwpLGE9MCx0PXt0OiJyYW5nZVBvaW50cyIsYTphcmd1bWVudHN9LGV9LGUu
cmFuZ2VCYW5kcz1mdW5jdGlvbih1LG8sYyl7YXJndW1lbnRzLmxlbmd0aDwyJiYobz0wKSxhcmd1
bWVudHMubGVuZ3RoPDMmJihjPW8pO3ZhciBzPXVbMV08dVswXSxsPXVbcy0wXSxmPXVbMS1zXSxo
PShmLWwpLyhuLmxlbmd0aC1vKzIqYyk7cmV0dXJuIGk9cihsK2gqYyxoKSxzJiZpLnJldmVyc2Uo
KSxhPWgqKDEtbyksdD17dDoicmFuZ2VCYW5kcyIsYTphcmd1bWVudHN9LGV9LGUucmFuZ2VSb3Vu
ZEJhbmRzPWZ1bmN0aW9uKHUsbyxjKXthcmd1bWVudHMubGVuZ3RoPDImJihvPTApLGFyZ3VtZW50
cy5sZW5ndGg8MyYmKGM9byk7dmFyIHM9dVsxXTx1WzBdLGw9dVtzLTBdLGY9dVsxLXNdLGg9TWF0
aC5mbG9vcigoZi1sKS8obi5sZW5ndGgtbysyKmMpKSxnPWYtbC0obi5sZW5ndGgtbykqaDtyZXR1
cm4gaT1yKGwrTWF0aC5yb3VuZChnLzIpLGgpLHMmJmkucmV2ZXJzZSgpLGE9TWF0aC5yb3VuZCho
KigxLW8pKSx0PXt0OiJyYW5nZVJvdW5kQmFuZHMiLGE6YXJndW1lbnRzfSxlfSxlLnJhbmdlQmFu
ZD1mdW5jdGlvbigpe3JldHVybiBhfSxlLnJhbmdlRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIExp
KHQuYVswXSl9LGUuY29weT1mdW5jdGlvbigpe3JldHVybiBCaShuLHQpfSxlLmRvbWFpbihuKX1m
dW5jdGlvbiBXaShlLHIpe2Z1bmN0aW9uIHUoKXt2YXIgbj0wLHQ9ci5sZW5ndGg7Zm9yKG89W107
KytuPHQ7KW9bbi0xXT1aby5xdWFudGlsZShlLG4vdCk7cmV0dXJuIGl9ZnVuY3Rpb24gaShuKXty
ZXR1cm4gaXNOYU4obj0rbik/dm9pZCAwOnJbWm8uYmlzZWN0KG8sbildfXZhciBvO3JldHVybiBp
LmRvbWFpbj1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1yLmZpbHRlcih0
KS5zb3J0KG4pLHUoKSk6ZX0saS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocj1uLHUoKSk6cn0saS5xdWFudGlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gb30saS5pbnZl
cnRFeHRlbnQ9ZnVuY3Rpb24obil7cmV0dXJuIG49ci5pbmRleE9mKG4pLDA+bj9bMC8wLDAvMF06
W24+MD9vW24tMV06ZVswXSxuPG8ubGVuZ3RoP29bbl06ZVtlLmxlbmd0aC0xXV19LGkuY29weT1m
dW5jdGlvbigpe3JldHVybiBXaShlLHIpfSx1KCl9ZnVuY3Rpb24gSmkobix0LGUpe2Z1bmN0aW9u
IHIodCl7cmV0dXJuIGVbTWF0aC5tYXgoMCxNYXRoLm1pbihvLE1hdGguZmxvb3IoaSoodC1uKSkp
KV19ZnVuY3Rpb24gdSgpe3JldHVybiBpPWUubGVuZ3RoLyh0LW4pLG89ZS5sZW5ndGgtMSxyfXZh
ciBpLG87cmV0dXJuIHIuZG9tYWluPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhuPStlWzBdLHQ9K2VbZS5sZW5ndGgtMV0sdSgpKTpbbix0XX0sci5yYW5nZT1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHUoKSk6ZX0sci5pbnZlcnRFeHRlbnQ9ZnVu
Y3Rpb24odCl7cmV0dXJuIHQ9ZS5pbmRleE9mKHQpLHQ9MD50PzAvMDp0L2krbixbdCx0KzEvaV19
LHIuY29weT1mdW5jdGlvbigpe3JldHVybiBKaShuLHQsZSl9LHUoKX1mdW5jdGlvbiBHaShuLHQp
e2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGU+PWU/dFtaby5iaXNlY3QobixlKV06dm9pZCAwfXJldHVy
biBlLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGUpOm59
LGUucmFuZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bixlKTp0fSxl
LmludmVydEV4dGVudD1mdW5jdGlvbihlKXtyZXR1cm4gZT10LmluZGV4T2YoZSksW25bZS0xXSxu
W2VdXX0sZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEdpKG4sdCl9LGV9ZnVuY3Rpb24gS2kobil7
ZnVuY3Rpb24gdChuKXtyZXR1cm4rbn1yZXR1cm4gdC5pbnZlcnQ9dCx0LmRvbWFpbj10LnJhbmdl
PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWUubWFwKHQpLHQpOm59LHQu
dGlja3M9ZnVuY3Rpb24odCl7cmV0dXJuIE9pKG4sdCl9LHQudGlja0Zvcm1hdD1mdW5jdGlvbih0
LGUpe3JldHVybiBZaShuLHQsZSl9LHQuY29weT1mdW5jdGlvbigpe3JldHVybiBLaShuKX0sdH1m
dW5jdGlvbiBRaShuKXtyZXR1cm4gbi5pbm5lclJhZGl1c31mdW5jdGlvbiBubyhuKXtyZXR1cm4g
bi5vdXRlclJhZGl1c31mdW5jdGlvbiB0byhuKXtyZXR1cm4gbi5zdGFydEFuZ2xlfWZ1bmN0aW9u
IGVvKG4pe3JldHVybiBuLmVuZEFuZ2xlfWZ1bmN0aW9uIHJvKG4pe2Z1bmN0aW9uIHQodCl7ZnVu
Y3Rpb24gbygpe3MucHVzaCgiTSIsaShuKGwpLGEpKX1mb3IodmFyIGMscz1bXSxsPVtdLGY9LTEs
aD10Lmxlbmd0aCxnPWJ0KGUpLHA9YnQocik7KytmPGg7KXUuY2FsbCh0aGlzLGM9dFtmXSxmKT9s
LnB1c2goWytnLmNhbGwodGhpcyxjLGYpLCtwLmNhbGwodGhpcyxjLGYpXSk6bC5sZW5ndGgmJihv
KCksbD1bXSk7cmV0dXJuIGwubGVuZ3RoJiZvKCkscy5sZW5ndGg/cy5qb2luKCIiKTpudWxsfXZh
ciBlPXdyLHI9U3IsdT13ZSxpPXVvLG89aS5rZXksYT0uNztyZXR1cm4gdC54PWZ1bmN0aW9uKG4p
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdCk6ZX0sdC55PWZ1bmN0aW9uKG4pe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdCk6cn0sdC5kZWZpbmVkPWZ1bmN0aW9uKG4pe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyh1PW4sdCk6dX0sdC5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9pPW46KGk9eHMu
Z2V0KG4pfHx1bykua2V5LHQpOm99LHQudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYT1uLHQpOmF9LHR9ZnVuY3Rpb24gdW8obil7cmV0dXJuIG4uam9pbigiTCIp
fWZ1bmN0aW9uIGlvKG4pe3JldHVybiB1byhuKSsiWiJ9ZnVuY3Rpb24gb28obil7Zm9yKHZhciB0
PTAsZT1uLmxlbmd0aCxyPW5bMF0sdT1bclswXSwiLCIsclsxXV07Kyt0PGU7KXUucHVzaCgiSCIs
KHJbMF0rKHI9blt0XSlbMF0pLzIsIlYiLHJbMV0pO3JldHVybiBlPjEmJnUucHVzaCgiSCIsclsw
XSksdS5qb2luKCIiKX1mdW5jdGlvbiBhbyhuKXtmb3IodmFyIHQ9MCxlPW4ubGVuZ3RoLHI9blsw
XSx1PVtyWzBdLCIsIixyWzFdXTsrK3Q8ZTspdS5wdXNoKCJWIiwocj1uW3RdKVsxXSwiSCIsclsw
XSk7cmV0dXJuIHUuam9pbigiIil9ZnVuY3Rpb24gY28obil7Zm9yKHZhciB0PTAsZT1uLmxlbmd0
aCxyPW5bMF0sdT1bclswXSwiLCIsclsxXV07Kyt0PGU7KXUucHVzaCgiSCIsKHI9blt0XSlbMF0s
IlYiLHJbMV0pO3JldHVybiB1LmpvaW4oIiIpfWZ1bmN0aW9uIHNvKG4sdCl7cmV0dXJuIG4ubGVu
Z3RoPDQ/dW8obik6blsxXStobyhuLnNsaWNlKDEsbi5sZW5ndGgtMSksZ28obix0KSl9ZnVuY3Rp
b24gbG8obix0KXtyZXR1cm4gbi5sZW5ndGg8Mz91byhuKTpuWzBdK2hvKChuLnB1c2goblswXSks
biksZ28oW25bbi5sZW5ndGgtMl1dLmNvbmNhdChuLFtuWzFdXSksdCkpfWZ1bmN0aW9uIGZvKG4s
dCl7cmV0dXJuIG4ubGVuZ3RoPDM/dW8obik6blswXStobyhuLGdvKG4sdCkpfWZ1bmN0aW9uIGhv
KG4sdCl7aWYodC5sZW5ndGg8MXx8bi5sZW5ndGghPXQubGVuZ3RoJiZuLmxlbmd0aCE9dC5sZW5n
dGgrMilyZXR1cm4gdW8obik7dmFyIGU9bi5sZW5ndGghPXQubGVuZ3RoLHI9IiIsdT1uWzBdLGk9
blsxXSxvPXRbMF0sYT1vLGM9MTtpZihlJiYocis9IlEiKyhpWzBdLTIqb1swXS8zKSsiLCIrKGlb
MV0tMipvWzFdLzMpKyIsIitpWzBdKyIsIitpWzFdLHU9blsxXSxjPTIpLHQubGVuZ3RoPjEpe2E9
dFsxXSxpPW5bY10sYysrLHIrPSJDIisodVswXStvWzBdKSsiLCIrKHVbMV0rb1sxXSkrIiwiKyhp
WzBdLWFbMF0pKyIsIisoaVsxXS1hWzFdKSsiLCIraVswXSsiLCIraVsxXTtmb3IodmFyIHM9Mjtz
PHQubGVuZ3RoO3MrKyxjKyspaT1uW2NdLGE9dFtzXSxyKz0iUyIrKGlbMF0tYVswXSkrIiwiKyhp
WzFdLWFbMV0pKyIsIitpWzBdKyIsIitpWzFdfWlmKGUpe3ZhciBsPW5bY107cis9IlEiKyhpWzBd
KzIqYVswXS8zKSsiLCIrKGlbMV0rMiphWzFdLzMpKyIsIitsWzBdKyIsIitsWzFdfXJldHVybiBy
fWZ1bmN0aW9uIGdvKG4sdCl7Zm9yKHZhciBlLHI9W10sdT0oMS10KS8yLGk9blswXSxvPW5bMV0s
YT0xLGM9bi5sZW5ndGg7KythPGM7KWU9aSxpPW8sbz1uW2FdLHIucHVzaChbdSoob1swXS1lWzBd
KSx1KihvWzFdLWVbMV0pXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gcG8obil7aWYobi5sZW5ndGg8Myly
ZXR1cm4gdW8obik7dmFyIHQ9MSxlPW4ubGVuZ3RoLHI9blswXSx1PXJbMF0saT1yWzFdLG89W3Us
dSx1LChyPW5bMV0pWzBdXSxhPVtpLGksaSxyWzFdXSxjPVt1LCIsIixpLCJMIix4byhicyxvKSwi
LCIseG8oYnMsYSldO2ZvcihuLnB1c2gobltlLTFdKTsrK3Q8PWU7KXI9blt0XSxvLnNoaWZ0KCks
by5wdXNoKHJbMF0pLGEuc2hpZnQoKSxhLnB1c2goclsxXSksTW8oYyxvLGEpO3JldHVybiBuLnBv
cCgpLGMucHVzaCgiTCIsciksYy5qb2luKCIiKX1mdW5jdGlvbiB2byhuKXtpZihuLmxlbmd0aDw0
KXJldHVybiB1byhuKTtmb3IodmFyIHQsZT1bXSxyPS0xLHU9bi5sZW5ndGgsaT1bMF0sbz1bMF07
KytyPDM7KXQ9bltyXSxpLnB1c2godFswXSksby5wdXNoKHRbMV0pO2ZvcihlLnB1c2goeG8oYnMs
aSkrIiwiK3hvKGJzLG8pKSwtLXI7KytyPHU7KXQ9bltyXSxpLnNoaWZ0KCksaS5wdXNoKHRbMF0p
LG8uc2hpZnQoKSxvLnB1c2godFsxXSksTW8oZSxpLG8pO3JldHVybiBlLmpvaW4oIiIpfWZ1bmN0
aW9uIG1vKG4pe2Zvcih2YXIgdCxlLHI9LTEsdT1uLmxlbmd0aCxpPXUrNCxvPVtdLGE9W107Kyty
PDQ7KWU9bltyJXVdLG8ucHVzaChlWzBdKSxhLnB1c2goZVsxXSk7Zm9yKHQ9W3hvKGJzLG8pLCIs
Iix4byhicyxhKV0sLS1yOysrcjxpOyllPW5bciV1XSxvLnNoaWZ0KCksby5wdXNoKGVbMF0pLGEu
c2hpZnQoKSxhLnB1c2goZVsxXSksTW8odCxvLGEpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9u
IHlvKG4sdCl7dmFyIGU9bi5sZW5ndGgtMTtpZihlKWZvcih2YXIgcix1LGk9blswXVswXSxvPW5b
MF1bMV0sYT1uW2VdWzBdLWksYz1uW2VdWzFdLW8scz0tMTsrK3M8PWU7KXI9bltzXSx1PXMvZSxy
WzBdPXQqclswXSsoMS10KSooaSt1KmEpLHJbMV09dCpyWzFdKygxLXQpKihvK3UqYyk7cmV0dXJu
IHBvKG4pfWZ1bmN0aW9uIHhvKG4sdCl7cmV0dXJuIG5bMF0qdFswXStuWzFdKnRbMV0rblsyXSp0
WzJdK25bM10qdFszXX1mdW5jdGlvbiBNbyhuLHQsZSl7bi5wdXNoKCJDIix4byhNcyx0KSwiLCIs
eG8oTXMsZSksIiwiLHhvKF9zLHQpLCIsIix4byhfcyxlKSwiLCIseG8oYnMsdCksIiwiLHhvKGJz
LGUpKX1mdW5jdGlvbiBfbyhuLHQpe3JldHVybih0WzFdLW5bMV0pLyh0WzBdLW5bMF0pfWZ1bmN0
aW9uIGJvKG4pe2Zvcih2YXIgdD0wLGU9bi5sZW5ndGgtMSxyPVtdLHU9blswXSxpPW5bMV0sbz1y
WzBdPV9vKHUsaSk7Kyt0PGU7KXJbdF09KG8rKG89X28odT1pLGk9blt0KzFdKSkpLzI7cmV0dXJu
IHJbdF09byxyfWZ1bmN0aW9uIHdvKG4pe2Zvcih2YXIgdCxlLHIsdSxpPVtdLG89Ym8obiksYT0t
MSxjPW4ubGVuZ3RoLTE7KythPGM7KXQ9X28oblthXSxuW2ErMV0pLHVhKHQpPGthP29bYV09b1th
KzFdPTA6KGU9b1thXS90LHI9b1thKzFdL3QsdT1lKmUrcipyLHU+OSYmKHU9Myp0L01hdGguc3Fy
dCh1KSxvW2FdPXUqZSxvW2ErMV09dSpyKSk7Zm9yKGE9LTE7KythPD1jOyl1PShuW01hdGgubWlu
KGMsYSsxKV1bMF0tbltNYXRoLm1heCgwLGEtMSldWzBdKS8oNiooMStvW2FdKm9bYV0pKSxpLnB1
c2goW3V8fDAsb1thXSp1fHwwXSk7cmV0dXJuIGl9ZnVuY3Rpb24gU28obil7cmV0dXJuIG4ubGVu
Z3RoPDM/dW8obik6blswXStobyhuLHdvKG4pKX1mdW5jdGlvbiBrbyhuKXtmb3IodmFyIHQsZSxy
LHU9LTEsaT1uLmxlbmd0aDsrK3U8aTspdD1uW3VdLGU9dFswXSxyPXRbMV0rbXMsdFswXT1lKk1h
dGguY29zKHIpLHRbMV09ZSpNYXRoLnNpbihyKTtyZXR1cm4gbn1mdW5jdGlvbiBFbyhuKXtmdW5j
dGlvbiB0KHQpe2Z1bmN0aW9uIGMoKXt2LnB1c2goIk0iLGEobihtKSxmKSxsLHMobihkLnJldmVy
c2UoKSksZiksIloiKX1mb3IodmFyIGgsZyxwLHY9W10sZD1bXSxtPVtdLHk9LTEseD10Lmxlbmd0
aCxNPWJ0KGUpLF89YnQodSksYj1lPT09cj9mdW5jdGlvbigpe3JldHVybiBnfTpidChyKSx3PXU9
PT1pP2Z1bmN0aW9uKCl7cmV0dXJuIHB9OmJ0KGkpOysreTx4OylvLmNhbGwodGhpcyxoPXRbeV0s
eSk/KGQucHVzaChbZz0rTS5jYWxsKHRoaXMsaCx5KSxwPStfLmNhbGwodGhpcyxoLHkpXSksbS5w
dXNoKFsrYi5jYWxsKHRoaXMsaCx5KSwrdy5jYWxsKHRoaXMsaCx5KV0pKTpkLmxlbmd0aCYmKGMo
KSxkPVtdLG09W10pO3JldHVybiBkLmxlbmd0aCYmYygpLHYubGVuZ3RoP3Yuam9pbigiIik6bnVs
bH12YXIgZT13cixyPXdyLHU9MCxpPVNyLG89d2UsYT11byxjPWEua2V5LHM9YSxsPSJMIixmPS43
O3JldHVybiB0Lng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9cj1uLHQp
OnJ9LHQueDA9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bix0KTplfSx0
LngxPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdCk6cn0sdC55PWZ1
bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWk9bix0KTppfSx0LnkwPWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PW4sdCk6dX0sdC55MT1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1uLHQpOml9LHQuZGVmaW5lZD1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1uLHQpOm99LHQuaW50ZXJwb2xhdGU9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIG4/YT1u
OihhPXhzLmdldChuKXx8dW8pLmtleSxzPWEucmV2ZXJzZXx8YSxsPWEuY2xvc2VkPyJNIjoiTCIs
dCk6Y30sdC50ZW5zaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPW4s
dCk6Zn0sdH1mdW5jdGlvbiBBbyhuKXtyZXR1cm4gbi5yYWRpdXN9ZnVuY3Rpb24gQ28obil7cmV0
dXJuW24ueCxuLnldfWZ1bmN0aW9uIE5vKG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PW4uYXBw
bHkodGhpcyxhcmd1bWVudHMpLGU9dFswXSxyPXRbMV0rbXM7cmV0dXJuW2UqTWF0aC5jb3Mociks
ZSpNYXRoLnNpbihyKV19fWZ1bmN0aW9uIHpvKCl7cmV0dXJuIDY0fWZ1bmN0aW9uIExvKCl7cmV0
dXJuImNpcmNsZSJ9ZnVuY3Rpb24gVG8obil7dmFyIHQ9TWF0aC5zcXJ0KG4vYmEpO3JldHVybiJN
MCwiK3QrIkEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrLXQrIkEiK3QrIiwiK3QrIiAwIDEsMSAwLCIr
dCsiWiJ9ZnVuY3Rpb24gcW8obix0KXtyZXR1cm4gc2EobixDcyksbi5pZD10LG59ZnVuY3Rpb24g
Um8obix0LGUscil7dmFyIHU9bi5pZDtyZXR1cm4gUChuLCJmdW5jdGlvbiI9PXR5cGVvZiBlP2Z1
bmN0aW9uKG4saSxvKXtuLl9fdHJhbnNpdGlvbl9fW3VdLnR3ZWVuLnNldCh0LHIoZS5jYWxsKG4s
bi5fX2RhdGFfXyxpLG8pKSl9OihlPXIoZSksZnVuY3Rpb24obil7bi5fX3RyYW5zaXRpb25fX1t1
XS50d2Vlbi5zZXQodCxlKX0pKX1mdW5jdGlvbiBEbyhuKXtyZXR1cm4gbnVsbD09biYmKG49IiIp
LGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1ufX1mdW5jdGlvbiBQbyhuLHQsZSxyKXt2YXIg
dT1uLl9fdHJhbnNpdGlvbl9ffHwobi5fX3RyYW5zaXRpb25fXz17YWN0aXZlOjAsY291bnQ6MH0p
LGk9dVtlXTtpZighaSl7dmFyIGE9ci50aW1lO2k9dVtlXT17dHdlZW46bmV3IG8sdGltZTphLGVh
c2U6ci5lYXNlLGRlbGF5OnIuZGVsYXksZHVyYXRpb246ci5kdXJhdGlvbn0sKyt1LmNvdW50LFpv
LnRpbWVyKGZ1bmN0aW9uKHIpe2Z1bmN0aW9uIG8ocil7cmV0dXJuIHUuYWN0aXZlPmU/cygpOih1
LmFjdGl2ZT1lLGkuZXZlbnQmJmkuZXZlbnQuc3RhcnQuY2FsbChuLGwsdCksaS50d2Vlbi5mb3JF
YWNoKGZ1bmN0aW9uKGUscil7KHI9ci5jYWxsKG4sbCx0KSkmJnYucHVzaChyKX0pLFpvLnRpbWVy
KGZ1bmN0aW9uKCl7cmV0dXJuIHAuYz1jKHJ8fDEpP3dlOmMsMX0sMCxhKSx2b2lkIDApfWZ1bmN0
aW9uIGMocil7aWYodS5hY3RpdmUhPT1lKXJldHVybiBzKCk7Zm9yKHZhciBvPXIvZyxhPWYobyks
Yz12Lmxlbmd0aDtjPjA7KXZbLS1jXS5jYWxsKG4sYSk7Ci1yZXR1cm4gbz49MT8oaS5ldmVudCYm
aS5ldmVudC5lbmQuY2FsbChuLGwsdCkscygpKTp2b2lkIDB9ZnVuY3Rpb24gcygpe3JldHVybi0t
dS5jb3VudD9kZWxldGUgdVtlXTpkZWxldGUgbi5fX3RyYW5zaXRpb25fXywxfXZhciBsPW4uX19k
YXRhX18sZj1pLmVhc2UsaD1pLmRlbGF5LGc9aS5kdXJhdGlvbixwPUJhLHY9W107cmV0dXJuIHAu
dD1oK2Escj49aD9vKHItaCk6KHAuYz1vLHZvaWQgMCl9LDAsYSl9fWZ1bmN0aW9uIFVvKG4sdCl7
bi5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKG4pe3JldHVybiJ0cmFuc2xhdGUoIit0KG4pKyIs
MCkifSl9ZnVuY3Rpb24gam8obix0KXtuLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24obil7cmV0
dXJuInRyYW5zbGF0ZSgwLCIrdChuKSsiKSJ9KX1mdW5jdGlvbiBIbyhuKXtyZXR1cm4gbi50b0lT
T1N0cmluZygpfWZ1bmN0aW9uIEZvKG4sdCxlKXtmdW5jdGlvbiByKHQpe3JldHVybiBuKHQpfWZ1
bmN0aW9uIHUobixlKXt2YXIgcj1uWzFdLW5bMF0sdT1yL2UsaT1aby5iaXNlY3QoVXMsdSk7cmV0
dXJuIGk9PVVzLmxlbmd0aD9bdC55ZWFyLEZpKG4ubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLzMx
NTM2ZTZ9KSxlKVsyXV06aT90W3UvVXNbaS0xXTxVc1tpXS91P2ktMTppXTpbRnMsRmkobixlKVsy
XV19cmV0dXJuIHIuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBPbyhuLmludmVydCh0KSl9LHIu
ZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuLmRvbWFpbih0KSxy
KTpuLmRvbWFpbigpLm1hcChPbyl9LHIubmljZT1mdW5jdGlvbihuLHQpe2Z1bmN0aW9uIGUoZSl7
cmV0dXJuIWlzTmFOKGUpJiYhbi5yYW5nZShlLE9vKCtlKzEpLHQpLmxlbmd0aH12YXIgaT1yLmRv
bWFpbigpLG89TGkoaSksYT1udWxsPT1uP3UobywxMCk6Im51bWJlciI9PXR5cGVvZiBuJiZ1KG8s
bik7cmV0dXJuIGEmJihuPWFbMF0sdD1hWzFdKSxyLmRvbWFpbihSaShpLHQ+MT97Zmxvb3I6ZnVu
Y3Rpb24odCl7Zm9yKDtlKHQ9bi5mbG9vcih0KSk7KXQ9T28odC0xKTtyZXR1cm4gdH0sY2VpbDpm
dW5jdGlvbih0KXtmb3IoO2UodD1uLmNlaWwodCkpOyl0PU9vKCt0KzEpO3JldHVybiB0fX06bikp
fSxyLnRpY2tzPWZ1bmN0aW9uKG4sdCl7dmFyIGU9TGkoci5kb21haW4oKSksaT1udWxsPT1uP3Uo
ZSwxMCk6Im51bWJlciI9PXR5cGVvZiBuP3UoZSxuKTohbi5yYW5nZSYmW3tyYW5nZTpufSx0XTty
ZXR1cm4gaSYmKG49aVswXSx0PWlbMV0pLG4ucmFuZ2UoZVswXSxPbygrZVsxXSsxKSwxPnQ/MTp0
KX0sci50aWNrRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIGV9LHIuY29weT1mdW5jdGlvbigpe3Jl
dHVybiBGbyhuLmNvcHkoKSx0LGUpfSxqaShyLG4pfWZ1bmN0aW9uIE9vKG4pe3JldHVybiBuZXcg
RGF0ZShuKX1mdW5jdGlvbiBZbyhuKXtyZXR1cm4gSlNPTi5wYXJzZShuLnJlc3BvbnNlVGV4dCl9
ZnVuY3Rpb24gSW8obil7dmFyIHQ9JG8uY3JlYXRlUmFuZ2UoKTtyZXR1cm4gdC5zZWxlY3ROb2Rl
KCRvLmJvZHkpLHQuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KG4ucmVzcG9uc2VUZXh0KX12YXIg
Wm89e3ZlcnNpb246IjMuNC4xMSJ9O0RhdGUubm93fHwoRGF0ZS5ub3c9ZnVuY3Rpb24oKXtyZXR1
cm4rbmV3IERhdGV9KTt2YXIgVm89W10uc2xpY2UsWG89ZnVuY3Rpb24obil7cmV0dXJuIFZvLmNh
bGwobil9LCRvPWRvY3VtZW50LEJvPSRvLmRvY3VtZW50RWxlbWVudCxXbz13aW5kb3c7dHJ5e1hv
KEJvLmNoaWxkTm9kZXMpWzBdLm5vZGVUeXBlfWNhdGNoKEpvKXtYbz1mdW5jdGlvbihuKXtmb3Io
dmFyIHQ9bi5sZW5ndGgsZT1uZXcgQXJyYXkodCk7dC0tOyllW3RdPW5bdF07cmV0dXJuIGV9fXRy
eXskby5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZS5zZXRQcm9wZXJ0eSgib3BhY2l0eSIsMCwi
Iil9Y2F0Y2goR28pe3ZhciBLbz1Xby5FbGVtZW50LnByb3RvdHlwZSxRbz1Lby5zZXRBdHRyaWJ1
dGUsbmE9S28uc2V0QXR0cmlidXRlTlMsdGE9V28uQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5
cGUsZWE9dGEuc2V0UHJvcGVydHk7S28uc2V0QXR0cmlidXRlPWZ1bmN0aW9uKG4sdCl7UW8uY2Fs
bCh0aGlzLG4sdCsiIil9LEtvLnNldEF0dHJpYnV0ZU5TPWZ1bmN0aW9uKG4sdCxlKXtuYS5jYWxs
KHRoaXMsbix0LGUrIiIpfSx0YS5zZXRQcm9wZXJ0eT1mdW5jdGlvbihuLHQsZSl7ZWEuY2FsbCh0
aGlzLG4sdCsiIixlKX19Wm8uYXNjZW5kaW5nPW4sWm8uZGVzY2VuZGluZz1mdW5jdGlvbihuLHQp
e3JldHVybiBuPnQ/LTE6dD5uPzE6dD49bj8wOjAvMH0sWm8ubWluPWZ1bmN0aW9uKG4sdCl7dmFy
IGUscix1PS0xLGk9bi5sZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcig7Kyt1PGkm
JiEobnVsbCE9KGU9blt1XSkmJmU+PWUpOyllPXZvaWQgMDtmb3IoOysrdTxpOyludWxsIT0ocj1u
W3VdKSYmZT5yJiYoZT1yKX1lbHNle2Zvcig7Kyt1PGkmJiEobnVsbCE9KGU9dC5jYWxsKG4sblt1
XSx1KSkmJmU+PWUpOyllPXZvaWQgMDtmb3IoOysrdTxpOyludWxsIT0ocj10LmNhbGwobixuW3Vd
LHUpKSYmZT5yJiYoZT1yKX1yZXR1cm4gZX0sWm8ubWF4PWZ1bmN0aW9uKG4sdCl7dmFyIGUscix1
PS0xLGk9bi5sZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcig7Kyt1PGkmJiEobnVs
bCE9KGU9blt1XSkmJmU+PWUpOyllPXZvaWQgMDtmb3IoOysrdTxpOyludWxsIT0ocj1uW3VdKSYm
cj5lJiYoZT1yKX1lbHNle2Zvcig7Kyt1PGkmJiEobnVsbCE9KGU9dC5jYWxsKG4sblt1XSx1KSkm
JmU+PWUpOyllPXZvaWQgMDtmb3IoOysrdTxpOyludWxsIT0ocj10LmNhbGwobixuW3VdLHUpKSYm
cj5lJiYoZT1yKX1yZXR1cm4gZX0sWm8uZXh0ZW50PWZ1bmN0aW9uKG4sdCl7dmFyIGUscix1LGk9
LTEsbz1uLmxlbmd0aDtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKDsrK2k8byYmIShudWxs
IT0oZT11PW5baV0pJiZlPj1lKTspZT11PXZvaWQgMDtmb3IoOysraTxvOyludWxsIT0ocj1uW2ld
KSYmKGU+ciYmKGU9cikscj51JiYodT1yKSl9ZWxzZXtmb3IoOysraTxvJiYhKG51bGwhPShlPXU9
dC5jYWxsKG4sbltpXSxpKSkmJmU+PWUpOyllPXZvaWQgMDtmb3IoOysraTxvOyludWxsIT0ocj10
LmNhbGwobixuW2ldLGkpKSYmKGU+ciYmKGU9cikscj51JiYodT1yKSl9cmV0dXJuW2UsdV19LFpv
LnN1bT1mdW5jdGlvbihuLHQpe3ZhciBlLHI9MCx1PW4ubGVuZ3RoLGk9LTE7aWYoMT09PWFyZ3Vt
ZW50cy5sZW5ndGgpZm9yKDsrK2k8dTspaXNOYU4oZT0rbltpXSl8fChyKz1lKTtlbHNlIGZvcig7
KytpPHU7KWlzTmFOKGU9K3QuY2FsbChuLG5baV0saSkpfHwocis9ZSk7cmV0dXJuIHJ9LFpvLm1l
YW49ZnVuY3Rpb24obixlKXt2YXIgcix1PTAsaT1uLmxlbmd0aCxvPS0xLGE9aTtpZigxPT09YXJn
dW1lbnRzLmxlbmd0aClmb3IoOysrbzxpOyl0KHI9bltvXSk/dSs9cjotLWE7ZWxzZSBmb3IoOysr
bzxpOyl0KHI9ZS5jYWxsKG4sbltvXSxvKSk/dSs9cjotLWE7cmV0dXJuIGE/dS9hOnZvaWQgMH0s
Wm8ucXVhbnRpbGU9ZnVuY3Rpb24obix0KXt2YXIgZT0obi5sZW5ndGgtMSkqdCsxLHI9TWF0aC5m
bG9vcihlKSx1PStuW3ItMV0saT1lLXI7cmV0dXJuIGk/dStpKihuW3JdLXUpOnV9LFpvLm1lZGlh
bj1mdW5jdGlvbihlLHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjEmJihlPWUubWFwKHIpKSxl
PWUuZmlsdGVyKHQpLGUubGVuZ3RoP1pvLnF1YW50aWxlKGUuc29ydChuKSwuNSk6dm9pZCAwfTt2
YXIgcmE9ZShuKTtaby5iaXNlY3RMZWZ0PXJhLmxlZnQsWm8uYmlzZWN0PVpvLmJpc2VjdFJpZ2h0
PXJhLnJpZ2h0LFpvLmJpc2VjdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBlKDE9PT10Lmxlbmd0aD9m
dW5jdGlvbihlLHIpe3JldHVybiBuKHQoZSkscil9OnQpfSxaby5zaHVmZmxlPWZ1bmN0aW9uKG4p
e2Zvcih2YXIgdCxlLHI9bi5sZW5ndGg7cjspZT0wfE1hdGgucmFuZG9tKCkqci0tLHQ9bltyXSxu
W3JdPW5bZV0sbltlXT10O3JldHVybiBufSxaby5wZXJtdXRlPWZ1bmN0aW9uKG4sdCl7Zm9yKHZh
ciBlPXQubGVuZ3RoLHI9bmV3IEFycmF5KGUpO2UtLTspcltlXT1uW3RbZV1dO3JldHVybiByfSxa
by5wYWlycz1mdW5jdGlvbihuKXtmb3IodmFyIHQsZT0wLHI9bi5sZW5ndGgtMSx1PW5bMF0saT1u
ZXcgQXJyYXkoMD5yPzA6cik7cj5lOylpW2VdPVt0PXUsdT1uWysrZV1dO3JldHVybiBpfSxaby56
aXA9ZnVuY3Rpb24oKXtpZighKHU9YXJndW1lbnRzLmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciBu
PS0xLHQ9Wm8ubWluKGFyZ3VtZW50cyxyKSxlPW5ldyBBcnJheSh0KTsrK248dDspZm9yKHZhciB1
LGk9LTEsbz1lW25dPW5ldyBBcnJheSh1KTsrK2k8dTspb1tpXT1hcmd1bWVudHNbaV1bbl07cmV0
dXJuIGV9LFpvLnRyYW5zcG9zZT1mdW5jdGlvbihuKXtyZXR1cm4gWm8uemlwLmFwcGx5KFpvLG4p
fSxaby5rZXlzPWZ1bmN0aW9uKG4pe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiBuKXQucHVzaChlKTty
ZXR1cm4gdH0sWm8udmFsdWVzPWZ1bmN0aW9uKG4pe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiBuKXQu
cHVzaChuW2VdKTtyZXR1cm4gdH0sWm8uZW50cmllcz1mdW5jdGlvbihuKXt2YXIgdD1bXTtmb3Io
dmFyIGUgaW4gbil0LnB1c2goe2tleTplLHZhbHVlOm5bZV19KTtyZXR1cm4gdH0sWm8ubWVyZ2U9
ZnVuY3Rpb24obil7Zm9yKHZhciB0LGUscix1PW4ubGVuZ3RoLGk9LTEsbz0wOysraTx1OylvKz1u
W2ldLmxlbmd0aDtmb3IoZT1uZXcgQXJyYXkobyk7LS11Pj0wOylmb3Iocj1uW3VdLHQ9ci5sZW5n
dGg7LS10Pj0wOyllWy0tb109clt0XTtyZXR1cm4gZX07dmFyIHVhPU1hdGguYWJzO1pvLnJhbmdl
PWZ1bmN0aW9uKG4sdCxlKXtpZihhcmd1bWVudHMubGVuZ3RoPDMmJihlPTEsYXJndW1lbnRzLmxl
bmd0aDwyJiYodD1uLG49MCkpLDEvMD09PSh0LW4pL2UpdGhyb3cgbmV3IEVycm9yKCJpbmZpbml0
ZSByYW5nZSIpO3ZhciByLGk9W10sbz11KHVhKGUpKSxhPS0xO2lmKG4qPW8sdCo9byxlKj1vLDA+
ZSlmb3IoOyhyPW4rZSorK2EpPnQ7KWkucHVzaChyL28pO2Vsc2UgZm9yKDsocj1uK2UqKythKTx0
OylpLnB1c2goci9vKTtyZXR1cm4gaX0sWm8ubWFwPWZ1bmN0aW9uKG4pe3ZhciB0PW5ldyBvO2lm
KG4gaW5zdGFuY2VvZiBvKW4uZm9yRWFjaChmdW5jdGlvbihuLGUpe3Quc2V0KG4sZSl9KTtlbHNl
IGZvcih2YXIgZSBpbiBuKXQuc2V0KGUsbltlXSk7cmV0dXJuIHR9LGkobyx7aGFzOmEsZ2V0OmZ1
bmN0aW9uKG4pe3JldHVybiB0aGlzW2lhK25dfSxzZXQ6ZnVuY3Rpb24obix0KXtyZXR1cm4gdGhp
c1tpYStuXT10fSxyZW1vdmU6YyxrZXlzOnMsdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0
dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LGUpe24ucHVzaChlKX0pLG59LGVudHJpZXM6ZnVu
Y3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7bi5wdXNo
KHtrZXk6dCx2YWx1ZTplfSl9KSxufSxzaXplOmwsZW1wdHk6Zixmb3JFYWNoOmZ1bmN0aW9uKG4p
e2Zvcih2YXIgdCBpbiB0aGlzKXQuY2hhckNvZGVBdCgwKT09PW9hJiZuLmNhbGwodGhpcyx0LnN1
YnN0cmluZygxKSx0aGlzW3RdKX19KTt2YXIgaWE9Ilx4MDAiLG9hPWlhLmNoYXJDb2RlQXQoMCk7
Wm8ubmVzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odCxhLGMpe2lmKGM+PWkubGVuZ3RoKXJldHVy
biByP3IuY2FsbCh1LGEpOmU/YS5zb3J0KGUpOmE7Zm9yKHZhciBzLGwsZixoLGc9LTEscD1hLmxl
bmd0aCx2PWlbYysrXSxkPW5ldyBvOysrZzxwOykoaD1kLmdldChzPXYobD1hW2ddKSkpP2gucHVz
aChsKTpkLnNldChzLFtsXSk7cmV0dXJuIHQ/KGw9dCgpLGY9ZnVuY3Rpb24oZSxyKXtsLnNldChl
LG4odCxyLGMpKX0pOihsPXt9LGY9ZnVuY3Rpb24oZSxyKXtsW2VdPW4odCxyLGMpfSksZC5mb3JF
YWNoKGYpLGx9ZnVuY3Rpb24gdChuLGUpe2lmKGU+PWkubGVuZ3RoKXJldHVybiBuO3ZhciByPVtd
LHU9YVtlKytdO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24obix1KXtyLnB1c2goe2tleTpuLHZh
bHVlczp0KHUsZSl9KX0pLHU/ci5zb3J0KGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHUobi5rZXksdC5r
ZXkpfSk6cn12YXIgZSxyLHU9e30saT1bXSxhPVtdO3JldHVybiB1Lm1hcD1mdW5jdGlvbih0LGUp
e3JldHVybiBuKGUsdCwwKX0sdS5lbnRyaWVzPWZ1bmN0aW9uKGUpe3JldHVybiB0KG4oWm8ubWFw
LGUsMCksMCl9LHUua2V5PWZ1bmN0aW9uKG4pe3JldHVybiBpLnB1c2gobiksdX0sdS5zb3J0S2V5
cz1mdW5jdGlvbihuKXtyZXR1cm4gYVtpLmxlbmd0aC0xXT1uLHV9LHUuc29ydFZhbHVlcz1mdW5j
dGlvbihuKXtyZXR1cm4gZT1uLHV9LHUucm9sbHVwPWZ1bmN0aW9uKG4pe3JldHVybiByPW4sdX0s
dX0sWm8uc2V0PWZ1bmN0aW9uKG4pe3ZhciB0PW5ldyBoO2lmKG4pZm9yKHZhciBlPTAscj1uLmxl
bmd0aDtyPmU7KytlKXQuYWRkKG5bZV0pO3JldHVybiB0fSxpKGgse2hhczphLGFkZDpmdW5jdGlv
bihuKXtyZXR1cm4gdGhpc1tpYStuXT0hMCxufSxyZW1vdmU6ZnVuY3Rpb24obil7cmV0dXJuIG49
aWErbixuIGluIHRoaXMmJmRlbGV0ZSB0aGlzW25dfSx2YWx1ZXM6cyxzaXplOmwsZW1wdHk6Zixm
b3JFYWNoOmZ1bmN0aW9uKG4pe2Zvcih2YXIgdCBpbiB0aGlzKXQuY2hhckNvZGVBdCgwKT09PW9h
JiZuLmNhbGwodGhpcyx0LnN1YnN0cmluZygxKSl9fSksWm8uYmVoYXZpb3I9e30sWm8ucmViaW5k
PWZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlLHI9MSx1PWFyZ3VtZW50cy5sZW5ndGg7KytyPHU7KW5b
ZT1hcmd1bWVudHNbcl1dPWcobix0LHRbZV0pO3JldHVybiBufTt2YXIgYWE9WyJ3ZWJraXQiLCJt
cyIsIm1veiIsIk1veiIsIm8iLCJPIl07Wm8uZGlzcGF0Y2g9ZnVuY3Rpb24oKXtmb3IodmFyIG49
bmV3IGQsdD0tMSxlPWFyZ3VtZW50cy5sZW5ndGg7Kyt0PGU7KW5bYXJndW1lbnRzW3RdXT1tKG4p
O3JldHVybiBufSxkLnByb3RvdHlwZS5vbj1mdW5jdGlvbihuLHQpe3ZhciBlPW4uaW5kZXhPZigi
LiIpLHI9IiI7aWYoZT49MCYmKHI9bi5zdWJzdHJpbmcoZSsxKSxuPW4uc3Vic3RyaW5nKDAsZSkp
LG4pcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj90aGlzW25dLm9uKHIpOnRoaXNbbl0ub24ocix0
KTtpZigyPT09YXJndW1lbnRzLmxlbmd0aCl7aWYobnVsbD09dClmb3IobiBpbiB0aGlzKXRoaXMu
aGFzT3duUHJvcGVydHkobikmJnRoaXNbbl0ub24ocixudWxsKTtyZXR1cm4gdGhpc319LFpvLmV2
ZW50PW51bGwsWm8ucmVxdW90ZT1mdW5jdGlvbihuKXtyZXR1cm4gbi5yZXBsYWNlKGNhLCJcXCQm
Iil9O3ZhciBjYT0vW1xcXF5cJFwqXCtcP1x8XFtcXVwoXClcLlx7XH1dL2csc2E9e30uX19wcm90
b19fP2Z1bmN0aW9uKG4sdCl7bi5fX3Byb3RvX189dH06ZnVuY3Rpb24obix0KXtmb3IodmFyIGUg
aW4gdCluW2VdPXRbZV19LGxhPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQucXVlcnlTZWxlY3Rvcihu
KX0sZmE9ZnVuY3Rpb24obix0KXtyZXR1cm4gdC5xdWVyeVNlbGVjdG9yQWxsKG4pfSxoYT1Cby5t
YXRjaGVzfHxCb1twKEJvLCJtYXRjaGVzU2VsZWN0b3IiKV0sZ2E9ZnVuY3Rpb24obix0KXtyZXR1
cm4gaGEuY2FsbChuLHQpfTsiZnVuY3Rpb24iPT10eXBlb2YgU2l6emxlJiYobGE9ZnVuY3Rpb24o
bix0KXtyZXR1cm4gU2l6emxlKG4sdClbMF18fG51bGx9LGZhPVNpenpsZSxnYT1TaXp6bGUubWF0
Y2hlc1NlbGVjdG9yKSxaby5zZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gbWF9O3ZhciBwYT1a
by5zZWxlY3Rpb24ucHJvdG90eXBlPVtdO3BhLnNlbGVjdD1mdW5jdGlvbihuKXt2YXIgdCxlLHIs
dSxpPVtdO249YihuKTtmb3IodmFyIG89LTEsYT10aGlzLmxlbmd0aDsrK288YTspe2kucHVzaCh0
PVtdKSx0LnBhcmVudE5vZGU9KHI9dGhpc1tvXSkucGFyZW50Tm9kZTtmb3IodmFyIGM9LTEscz1y
Lmxlbmd0aDsrK2M8czspKHU9cltjXSk/KHQucHVzaChlPW4uY2FsbCh1LHUuX19kYXRhX18sYyxv
KSksZSYmIl9fZGF0YV9fImluIHUmJihlLl9fZGF0YV9fPXUuX19kYXRhX18pKTp0LnB1c2gobnVs
bCl9cmV0dXJuIF8oaSl9LHBhLnNlbGVjdEFsbD1mdW5jdGlvbihuKXt2YXIgdCxlLHI9W107bj13
KG4pO2Zvcih2YXIgdT0tMSxpPXRoaXMubGVuZ3RoOysrdTxpOylmb3IodmFyIG89dGhpc1t1XSxh
PS0xLGM9by5sZW5ndGg7KythPGM7KShlPW9bYV0pJiYoci5wdXNoKHQ9WG8obi5jYWxsKGUsZS5f
X2RhdGFfXyxhLHUpKSksdC5wYXJlbnROb2RlPWUpO3JldHVybiBfKHIpfTt2YXIgdmE9e3N2Zzoi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sIix4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8v
d3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3htbG5zLyJ9O1pvLm5zPXtwcmVmaXg6dmEscXVhbGlmeTpmdW5jdGlvbihuKXt2YXIgdD1u
LmluZGV4T2YoIjoiKSxlPW47cmV0dXJuIHQ+PTAmJihlPW4uc3Vic3RyaW5nKDAsdCksbj1uLnN1
YnN0cmluZyh0KzEpKSx2YS5oYXNPd25Qcm9wZXJ0eShlKT97c3BhY2U6dmFbZV0sbG9jYWw6bn06
bn19LHBhLmF0dHI9ZnVuY3Rpb24obix0KXtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2lmKCJzdHJp
bmciPT10eXBlb2Ygbil7dmFyIGU9dGhpcy5ub2RlKCk7cmV0dXJuIG49Wm8ubnMucXVhbGlmeShu
KSxuLmxvY2FsP2UuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTplLmdldEF0dHJpYnV0
ZShuKX1mb3IodCBpbiBuKXRoaXMuZWFjaChTKHQsblt0XSkpO3JldHVybiB0aGlzfXJldHVybiB0
aGlzLmVhY2goUyhuLHQpKX0scGEuY2xhc3NlZD1mdW5jdGlvbihuLHQpe2lmKGFyZ3VtZW50cy5s
ZW5ndGg8Mil7aWYoInN0cmluZyI9PXR5cGVvZiBuKXt2YXIgZT10aGlzLm5vZGUoKSxyPShuPUEo
bikpLmxlbmd0aCx1PS0xO2lmKHQ9ZS5jbGFzc0xpc3Qpe2Zvcig7Kyt1PHI7KWlmKCF0LmNvbnRh
aW5zKG5bdV0pKXJldHVybiExfWVsc2UgZm9yKHQ9ZS5nZXRBdHRyaWJ1dGUoImNsYXNzIik7Kyt1
PHI7KWlmKCFFKG5bdV0pLnRlc3QodCkpcmV0dXJuITE7cmV0dXJuITB9Zm9yKHQgaW4gbil0aGlz
LmVhY2goQyh0LG5bdF0pKTtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5lYWNoKEMobix0KSl9LHBh
LnN0eWxlPWZ1bmN0aW9uKG4sdCxlKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoO2lmKDM+cil7aWYo
InN0cmluZyIhPXR5cGVvZiBuKXsyPnImJih0PSIiKTtmb3IoZSBpbiBuKXRoaXMuZWFjaCh6KGUs
bltlXSx0KSk7cmV0dXJuIHRoaXN9aWYoMj5yKXJldHVybiBXby5nZXRDb21wdXRlZFN0eWxlKHRo
aXMubm9kZSgpLG51bGwpLmdldFByb3BlcnR5VmFsdWUobik7ZT0iIn1yZXR1cm4gdGhpcy5lYWNo
KHoobix0LGUpKX0scGEucHJvcGVydHk9ZnVuY3Rpb24obix0KXtpZihhcmd1bWVudHMubGVuZ3Ro
PDIpe2lmKCJzdHJpbmciPT10eXBlb2YgbilyZXR1cm4gdGhpcy5ub2RlKClbbl07Zm9yKHQgaW4g
bil0aGlzLmVhY2goTCh0LG5bdF0pKTtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5lYWNoKEwobix0
KSl9LHBhLnRleHQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNo
KCJmdW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0aW9uKCl7dmFyIHQ9bi5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT10PyIiOnR9Om51bGw9PW4/ZnVuY3Rpb24oKXt0
aGlzLnRleHRDb250ZW50PSIifTpmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9bn0pOnRoaXMu
bm9kZSgpLnRleHRDb250ZW50fSxwYS5odG1sPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoP3RoaXMuZWFjaCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbigpe3ZhciB0PW4u
YXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PXQ/IiI6dH06bnVsbD09
bj9mdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPSIifTpmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1M
PW59KTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHBhLmFwcGVuZD1mdW5jdGlvbihuKXtyZXR1cm4g
bj1UKG4pLHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQobi5h
cHBseSh0aGlzLGFyZ3VtZW50cykpfSl9LHBhLmluc2VydD1mdW5jdGlvbihuLHQpe3JldHVybiBu
PVQobiksdD1iKHQpLHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVm
b3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxs
KX0pfSxwYS5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFy
IG49dGhpcy5wYXJlbnROb2RlO24mJm4ucmVtb3ZlQ2hpbGQodGhpcyl9KX0scGEuZGF0YT1mdW5j
dGlvbihuLHQpe2Z1bmN0aW9uIGUobixlKXt2YXIgcix1LGksYT1uLmxlbmd0aCxmPWUubGVuZ3Ro
LGg9TWF0aC5taW4oYSxmKSxnPW5ldyBBcnJheShmKSxwPW5ldyBBcnJheShmKSx2PW5ldyBBcnJh
eShhKTtpZih0KXt2YXIgZCxtPW5ldyBvLHk9bmV3IG8seD1bXTtmb3Iocj0tMTsrK3I8YTspZD10
LmNhbGwodT1uW3JdLHUuX19kYXRhX18sciksbS5oYXMoZCk/dltyXT11Om0uc2V0KGQsdSkseC5w
dXNoKGQpO2ZvcihyPS0xOysrcjxmOylkPXQuY2FsbChlLGk9ZVtyXSxyKSwodT1tLmdldChkKSk/
KGdbcl09dSx1Ll9fZGF0YV9fPWkpOnkuaGFzKGQpfHwocFtyXT1xKGkpKSx5LnNldChkLGkpLG0u
cmVtb3ZlKGQpO2ZvcihyPS0xOysrcjxhOyltLmhhcyh4W3JdKSYmKHZbcl09bltyXSl9ZWxzZXtm
b3Iocj0tMTsrK3I8aDspdT1uW3JdLGk9ZVtyXSx1Pyh1Ll9fZGF0YV9fPWksZ1tyXT11KTpwW3Jd
PXEoaSk7Zm9yKDtmPnI7KytyKXBbcl09cShlW3JdKTtmb3IoO2E+cjsrK3IpdltyXT1uW3JdfXAu
dXBkYXRlPWcscC5wYXJlbnROb2RlPWcucGFyZW50Tm9kZT12LnBhcmVudE5vZGU9bi5wYXJlbnRO
b2RlLGMucHVzaChwKSxzLnB1c2goZyksbC5wdXNoKHYpfXZhciByLHUsaT0tMSxhPXRoaXMubGVu
Z3RoO2lmKCFhcmd1bWVudHMubGVuZ3RoKXtmb3Iobj1uZXcgQXJyYXkoYT0ocj10aGlzWzBdKS5s
ZW5ndGgpOysraTxhOykodT1yW2ldKSYmKG5baV09dS5fX2RhdGFfXyk7cmV0dXJuIG59dmFyIGM9
VShbXSkscz1fKFtdKSxsPV8oW10pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKWZvcig7KytpPGE7
KWUocj10aGlzW2ldLG4uY2FsbChyLHIucGFyZW50Tm9kZS5fX2RhdGFfXyxpKSk7ZWxzZSBmb3Io
OysraTxhOyllKHI9dGhpc1tpXSxuKTtyZXR1cm4gcy5lbnRlcj1mdW5jdGlvbigpe3JldHVybiBj
fSxzLmV4aXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbH0sc30scGEuZGF0dW09ZnVuY3Rpb24obil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLG4pOnRoaXMucHJv
cGVydHkoIl9fZGF0YV9fIil9LHBhLmZpbHRlcj1mdW5jdGlvbihuKXt2YXIgdCxlLHIsdT1bXTsi
ZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49UihuKSk7Zm9yKHZhciBpPTAsbz10aGlzLmxlbmd0aDtv
Pmk7aSsrKXt1LnB1c2godD1bXSksdC5wYXJlbnROb2RlPShlPXRoaXNbaV0pLnBhcmVudE5vZGU7
Zm9yKHZhciBhPTAsYz1lLmxlbmd0aDtjPmE7YSsrKShyPWVbYV0pJiZuLmNhbGwocixyLl9fZGF0
YV9fLGEsaSkmJnQucHVzaChyKX1yZXR1cm4gXyh1KX0scGEub3JkZXI9ZnVuY3Rpb24oKXtmb3Io
dmFyIG49LTEsdD10aGlzLmxlbmd0aDsrK248dDspZm9yKHZhciBlLHI9dGhpc1tuXSx1PXIubGVu
Z3RoLTEsaT1yW3VdOy0tdT49MDspKGU9clt1XSkmJihpJiZpIT09ZS5uZXh0U2libGluZyYmaS5w
YXJlbnROb2RlLmluc2VydEJlZm9yZShlLGkpLGk9ZSk7cmV0dXJuIHRoaXN9LHBhLnNvcnQ9ZnVu
Y3Rpb24obil7bj1ELmFwcGx5KHRoaXMsYXJndW1lbnRzKTtmb3IodmFyIHQ9LTEsZT10aGlzLmxl
bmd0aDsrK3Q8ZTspdGhpc1t0XS5zb3J0KG4pO3JldHVybiB0aGlzLm9yZGVyKCl9LHBhLmVhY2g9
ZnVuY3Rpb24obil7cmV0dXJuIFAodGhpcyxmdW5jdGlvbih0LGUscil7bi5jYWxsKHQsdC5fX2Rh
dGFfXyxlLHIpfSl9LHBhLmNhbGw9ZnVuY3Rpb24obil7dmFyIHQ9WG8oYXJndW1lbnRzKTtyZXR1
cm4gbi5hcHBseSh0WzBdPXRoaXMsdCksdGhpc30scGEuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4h
dGhpcy5ub2RlKCl9LHBhLm5vZGU9ZnVuY3Rpb24oKXtmb3IodmFyIG49MCx0PXRoaXMubGVuZ3Ro
O3Q+bjtuKyspZm9yKHZhciBlPXRoaXNbbl0scj0wLHU9ZS5sZW5ndGg7dT5yO3IrKyl7dmFyIGk9
ZVtyXTtpZihpKXJldHVybiBpfXJldHVybiBudWxsfSxwYS5zaXplPWZ1bmN0aW9uKCl7dmFyIG49
MDtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7KytufSksbn07dmFyIGRhPVtdO1pvLnNlbGVj
dGlvbi5lbnRlcj1VLFpvLnNlbGVjdGlvbi5lbnRlci5wcm90b3R5cGU9ZGEsZGEuYXBwZW5kPXBh
LmFwcGVuZCxkYS5lbXB0eT1wYS5lbXB0eSxkYS5ub2RlPXBhLm5vZGUsZGEuY2FsbD1wYS5jYWxs
LGRhLnNpemU9cGEuc2l6ZSxkYS5zZWxlY3Q9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGUscix1LGks
bz1bXSxhPS0xLGM9dGhpcy5sZW5ndGg7KythPGM7KXtyPSh1PXRoaXNbYV0pLnVwZGF0ZSxvLnB1
c2godD1bXSksdC5wYXJlbnROb2RlPXUucGFyZW50Tm9kZTtmb3IodmFyIHM9LTEsbD11Lmxlbmd0
aDsrK3M8bDspKGk9dVtzXSk/KHQucHVzaChyW3NdPWU9bi5jYWxsKHUucGFyZW50Tm9kZSxpLl9f
ZGF0YV9fLHMsYSkpLGUuX19kYXRhX189aS5fX2RhdGFfXyk6dC5wdXNoKG51bGwpfXJldHVybiBf
KG8pfSxkYS5pbnNlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYo
dD1qKHRoaXMpKSxwYS5pbnNlcnQuY2FsbCh0aGlzLG4sdCl9LHBhLnRyYW5zaXRpb249ZnVuY3Rp
b24oKXtmb3IodmFyIG4sdCxlPVNzfHwrK05zLHI9W10sdT1rc3x8e3RpbWU6RGF0ZS5ub3coKSxl
YXNlOnh1LGRlbGF5OjAsZHVyYXRpb246MjUwfSxpPS0xLG89dGhpcy5sZW5ndGg7KytpPG87KXty
LnB1c2gobj1bXSk7Zm9yKHZhciBhPXRoaXNbaV0sYz0tMSxzPWEubGVuZ3RoOysrYzxzOykodD1h
W2NdKSYmUG8odCxjLGUsdSksbi5wdXNoKHQpfXJldHVybiBxbyhyLGUpfSxwYS5pbnRlcnJ1cHQ9
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKEgpfSxaby5zZWxlY3Q9ZnVuY3Rpb24obil7dmFy
IHQ9WyJzdHJpbmciPT10eXBlb2Ygbj9sYShuLCRvKTpuXTtyZXR1cm4gdC5wYXJlbnROb2RlPUJv
LF8oW3RdKX0sWm8uc2VsZWN0QWxsPWZ1bmN0aW9uKG4pe3ZhciB0PVhvKCJzdHJpbmciPT10eXBl
b2Ygbj9mYShuLCRvKTpuKTtyZXR1cm4gdC5wYXJlbnROb2RlPUJvLF8oW3RdKX07dmFyIG1hPVpv
LnNlbGVjdChCbyk7cGEub249ZnVuY3Rpb24obix0LGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7
aWYoMz5yKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pezI+ciYmKHQ9ITEpO2ZvcihlIGluIG4pdGhp
cy5lYWNoKEYoZSxuW2VdLHQpKTtyZXR1cm4gdGhpc31pZigyPnIpcmV0dXJuKHI9dGhpcy5ub2Rl
KClbIl9fb24iK25dKSYmci5fO2U9ITF9cmV0dXJuIHRoaXMuZWFjaChGKG4sdCxlKSl9O3ZhciB5
YT1aby5tYXAoe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSk7
eWEuZm9yRWFjaChmdW5jdGlvbihuKXsib24iK24gaW4gJG8mJnlhLnJlbW92ZShuKX0pO3ZhciB4
YT0ib25zZWxlY3RzdGFydCJpbiAkbz9udWxsOnAoQm8uc3R5bGUsInVzZXJTZWxlY3QiKSxNYT0w
O1pvLm1vdXNlPWZ1bmN0aW9uKG4pe3JldHVybiBaKG4seCgpKX07dmFyIF9hPS9XZWJLaXQvLnRl
c3QoV28ubmF2aWdhdG9yLnVzZXJBZ2VudCk/LTE6MDtaby50b3VjaGVzPWZ1bmN0aW9uKG4sdCl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9eCgpLnRvdWNoZXMpLHQ/WG8odCkubWFwKGZ1
bmN0aW9uKHQpe3ZhciBlPVoobix0KTtyZXR1cm4gZS5pZGVudGlmaWVyPXQuaWRlbnRpZmllcixl
fSk6W119LFpvLmJlaGF2aW9yLmRyYWc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7dGhpcy5vbigi
bW91c2Vkb3duLmRyYWciLHUpLm9uKCJ0b3VjaHN0YXJ0LmRyYWciLGkpfWZ1bmN0aW9uIHQobix0
LHUsaSxvKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7dmFyIG4sZSxyPXQoaCx2KTty
JiYobj1yWzBdLXhbMF0sZT1yWzFdLXhbMV0scHw9bnxlLHg9cixnKHt0eXBlOiJkcmFnIix4OnJb
MF0rc1swXSx5OnJbMV0rc1sxXSxkeDpuLGR5OmV9KSl9ZnVuY3Rpb24gYygpe3QoaCx2KSYmKG0u
b24oaStkLG51bGwpLm9uKG8rZCxudWxsKSx5KHAmJlpvLmV2ZW50LnRhcmdldD09PWYpLGcoe3R5
cGU6ImRyYWdlbmQifSkpfXZhciBzLGw9dGhpcyxmPVpvLmV2ZW50LnRhcmdldCxoPWwucGFyZW50
Tm9kZSxnPWUub2YobCxhcmd1bWVudHMpLHA9MCx2PW4oKSxkPSIuZHJhZyIrKG51bGw9PXY/IiI6
Ii0iK3YpLG09Wm8uc2VsZWN0KHUoKSkub24oaStkLGEpLm9uKG8rZCxjKSx5PUkoKSx4PXQoaCx2
KTtyPyhzPXIuYXBwbHkobCxhcmd1bWVudHMpLHM9W3MueC14WzBdLHMueS14WzFdXSk6cz1bMCww
XSxnKHt0eXBlOiJkcmFnc3RhcnQifSl9fXZhciBlPU0obiwiZHJhZyIsImRyYWdzdGFydCIsImRy
YWdlbmQiKSxyPW51bGwsdT10KHYsWm8ubW91c2UsJCwibW91c2Vtb3ZlIiwibW91c2V1cCIpLGk9
dChWLFpvLnRvdWNoLFgsInRvdWNobW92ZSIsInRvdWNoZW5kIik7cmV0dXJuIG4ub3JpZ2luPWZ1
bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbik6cn0sWm8ucmViaW5kKG4s
ZSwib24iKX07dmFyIGJhPU1hdGguUEksd2E9MipiYSxTYT1iYS8yLGthPTFlLTYsRWE9a2Eqa2Es
QWE9YmEvMTgwLENhPTE4MC9iYSxOYT1NYXRoLlNRUlQyLHphPTIsTGE9NDtaby5pbnRlcnBvbGF0
ZVpvb209ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKG4pe3ZhciB0PW4qeTtpZihtKXt2YXIgZT1R
KHYpLG89aS8oemEqaCkqKGUqbnQoTmEqdCt2KS1LKHYpKTtyZXR1cm5bcitvKnMsdStvKmwsaSpl
L1EoTmEqdCt2KV19cmV0dXJuW3IrbipzLHUrbipsLGkqTWF0aC5leHAoTmEqdCldfXZhciByPW5b
MF0sdT1uWzFdLGk9blsyXSxvPXRbMF0sYT10WzFdLGM9dFsyXSxzPW8tcixsPWEtdSxmPXMqcyts
KmwsaD1NYXRoLnNxcnQoZiksZz0oYypjLWkqaStMYSpmKS8oMippKnphKmgpLHA9KGMqYy1pKmkt
TGEqZikvKDIqYyp6YSpoKSx2PU1hdGgubG9nKE1hdGguc3FydChnKmcrMSktZyksZD1NYXRoLmxv
ZyhNYXRoLnNxcnQocCpwKzEpLXApLG09ZC12LHk9KG18fE1hdGgubG9nKGMvaSkpL05hO3JldHVy
biBlLmR1cmF0aW9uPTFlMyp5LGV9LFpvLmJlaGF2aW9yLnpvb209ZnVuY3Rpb24oKXtmdW5jdGlv
biBuKG4pe24ub24oQSxzKS5vbihSYSsiLnpvb20iLGYpLm9uKCJkYmxjbGljay56b29tIixoKS5v
bih6LGwpfWZ1bmN0aW9uIHQobil7cmV0dXJuWyhuWzBdLVMueCkvUy5rLChuWzFdLVMueSkvUy5r
XX1mdW5jdGlvbiBlKG4pe3JldHVybltuWzBdKlMuaytTLngsblsxXSpTLmsrUy55XX1mdW5jdGlv
biByKG4pe1Muaz1NYXRoLm1heChFWzBdLE1hdGgubWluKEVbMV0sbikpfWZ1bmN0aW9uIHUobix0
KXt0PWUodCksUy54Kz1uWzBdLXRbMF0sUy55Kz1uWzFdLXRbMV19ZnVuY3Rpb24gaSgpe18mJl8u
ZG9tYWluKHgucmFuZ2UoKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuKG4tUy54KS9TLmt9KS5tYXAo
eC5pbnZlcnQpKSx3JiZ3LmRvbWFpbihiLnJhbmdlKCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybihu
LVMueSkvUy5rfSkubWFwKGIuaW52ZXJ0KSl9ZnVuY3Rpb24gbyhuKXtuKHt0eXBlOiJ6b29tc3Rh
cnQifSl9ZnVuY3Rpb24gYShuKXtpKCksbih7dHlwZToiem9vbSIsc2NhbGU6Uy5rLHRyYW5zbGF0
ZTpbUy54LFMueV19KX1mdW5jdGlvbiBjKG4pe24oe3R5cGU6Inpvb21lbmQifSl9ZnVuY3Rpb24g
cygpe2Z1bmN0aW9uIG4oKXtsPTEsdShaby5tb3VzZShyKSxoKSxhKHMpfWZ1bmN0aW9uIGUoKXtm
Lm9uKEMsbnVsbCkub24oTixudWxsKSxnKGwmJlpvLmV2ZW50LnRhcmdldD09PWkpLGMocyl9dmFy
IHI9dGhpcyxpPVpvLmV2ZW50LnRhcmdldCxzPUwub2Yocixhcmd1bWVudHMpLGw9MCxmPVpvLnNl
bGVjdChXbykub24oQyxuKS5vbihOLGUpLGg9dChaby5tb3VzZShyKSksZz1JKCk7SC5jYWxsKHIp
LG8ocyl9ZnVuY3Rpb24gbCgpe2Z1bmN0aW9uIG4oKXt2YXIgbj1aby50b3VjaGVzKGcpO3JldHVy
biBoPVMuayxuLmZvckVhY2goZnVuY3Rpb24obil7bi5pZGVudGlmaWVyIGluIHYmJih2W24uaWRl
bnRpZmllcl09dChuKSl9KSxufWZ1bmN0aW9uIGUoKXt2YXIgdD1aby5ldmVudC50YXJnZXQ7Wm8u
c2VsZWN0KHQpLm9uKE0saSkub24oXyxmKSxiLnB1c2godCk7Zm9yKHZhciBlPVpvLmV2ZW50LmNo
YW5nZWRUb3VjaGVzLG89MCxjPWUubGVuZ3RoO2M+bzsrK28pdltlW29dLmlkZW50aWZpZXJdPW51
bGw7dmFyIHM9bigpLGw9RGF0ZS5ub3coKTtpZigxPT09cy5sZW5ndGgpe2lmKDUwMD5sLW0pe3Zh
ciBoPXNbMF0sZz12W2guaWRlbnRpZmllcl07cigyKlMuayksdShoLGcpLHkoKSxhKHApfW09bH1l
bHNlIGlmKHMubGVuZ3RoPjEpe3ZhciBoPXNbMF0seD1zWzFdLHc9aFswXS14WzBdLGs9aFsxXS14
WzFdO2Q9dyp3K2sqa319ZnVuY3Rpb24gaSgpe2Zvcih2YXIgbix0LGUsaSxvPVpvLnRvdWNoZXMo
ZyksYz0wLHM9by5sZW5ndGg7cz5jOysrYyxpPW51bGwpaWYoZT1vW2NdLGk9dltlLmlkZW50aWZp
ZXJdKXtpZih0KWJyZWFrO249ZSx0PWl9aWYoaSl7dmFyIGw9KGw9ZVswXS1uWzBdKSpsKyhsPWVb
MV0tblsxXSkqbCxmPWQmJk1hdGguc3FydChsL2QpO249WyhuWzBdK2VbMF0pLzIsKG5bMV0rZVsx
XSkvMl0sdD1bKHRbMF0raVswXSkvMiwodFsxXStpWzFdKS8yXSxyKGYqaCl9bT1udWxsLHUobix0
KSxhKHApfWZ1bmN0aW9uIGYoKXtpZihaby5ldmVudC50b3VjaGVzLmxlbmd0aCl7Zm9yKHZhciB0
PVpvLmV2ZW50LmNoYW5nZWRUb3VjaGVzLGU9MCxyPXQubGVuZ3RoO3I+ZTsrK2UpZGVsZXRlIHZb
dFtlXS5pZGVudGlmaWVyXTtmb3IodmFyIHUgaW4gdilyZXR1cm4gdm9pZCBuKCl9Wm8uc2VsZWN0
QWxsKGIpLm9uKHgsbnVsbCksdy5vbihBLHMpLm9uKHosbCksaygpLGMocCl9dmFyIGgsZz10aGlz
LHA9TC5vZihnLGFyZ3VtZW50cyksdj17fSxkPTAseD0iLnpvb20tIitaby5ldmVudC5jaGFuZ2Vk
VG91Y2hlc1swXS5pZGVudGlmaWVyLE09InRvdWNobW92ZSIreCxfPSJ0b3VjaGVuZCIreCxiPVtd
LHc9Wm8uc2VsZWN0KGcpLm9uKEEsbnVsbCkub24oeixlKSxrPUkoKTtILmNhbGwoZyksZSgpLG8o
cCl9ZnVuY3Rpb24gZigpe3ZhciBuPUwub2YodGhpcyxhcmd1bWVudHMpO2Q/Y2xlYXJUaW1lb3V0
KGQpOihnPXQocD12fHxaby5tb3VzZSh0aGlzKSksSC5jYWxsKHRoaXMpLG8obikpLGQ9c2V0VGlt
ZW91dChmdW5jdGlvbigpe2Q9bnVsbCxjKG4pfSw1MCkseSgpLHIoTWF0aC5wb3coMiwuMDAyKlRh
KCkpKlMuayksdShwLGcpLGEobil9ZnVuY3Rpb24gaCgpe3ZhciBuPUwub2YodGhpcyxhcmd1bWVu
dHMpLGU9Wm8ubW91c2UodGhpcyksaT10KGUpLHM9TWF0aC5sb2coUy5rKS9NYXRoLkxOMjtvKG4p
LHIoTWF0aC5wb3coMixaby5ldmVudC5zaGlmdEtleT9NYXRoLmNlaWwocyktMTpNYXRoLmZsb29y
KHMpKzEpKSx1KGUsaSksYShuKSxjKG4pfXZhciBnLHAsdixkLG0seCxfLGIsdyxTPXt4OjAseTow
LGs6MX0saz1bOTYwLDUwMF0sRT1xYSxBPSJtb3VzZWRvd24uem9vbSIsQz0ibW91c2Vtb3ZlLnpv
b20iLE49Im1vdXNldXAuem9vbSIsej0idG91Y2hzdGFydC56b29tIixMPU0obiwiem9vbXN0YXJ0
Iiwiem9vbSIsInpvb21lbmQiKTtyZXR1cm4gbi5ldmVudD1mdW5jdGlvbihuKXtuLmVhY2goZnVu
Y3Rpb24oKXt2YXIgbj1MLm9mKHRoaXMsYXJndW1lbnRzKSx0PVM7U3M/Wm8uc2VsZWN0KHRoaXMp
LnRyYW5zaXRpb24oKS5lYWNoKCJzdGFydC56b29tIixmdW5jdGlvbigpe1M9dGhpcy5fX2NoYXJ0
X198fHt4OjAseTowLGs6MX0sbyhuKX0pLnR3ZWVuKCJ6b29tOnpvb20iLGZ1bmN0aW9uKCl7dmFy
IGU9a1swXSxyPWtbMV0sdT1lLzIsaT1yLzIsbz1aby5pbnRlcnBvbGF0ZVpvb20oWyh1LVMueCkv
Uy5rLChpLVMueSkvUy5rLGUvUy5rXSxbKHUtdC54KS90LmssKGktdC55KS90LmssZS90LmtdKTty
ZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9byh0KSxjPWUvclsyXTt0aGlzLl9fY2hhcnRfXz1TPXt4
OnUtclswXSpjLHk6aS1yWzFdKmMsazpjfSxhKG4pfX0pLmVhY2goImVuZC56b29tIixmdW5jdGlv
bigpe2Mobil9KToodGhpcy5fX2NoYXJ0X189UyxvKG4pLGEobiksYyhuKSl9KX0sbi50cmFuc2xh
dGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9e3g6K3RbMF0seTordFsx
XSxrOlMua30saSgpLG4pOltTLngsUy55XX0sbi5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oUz17eDpTLngseTpTLnksazordH0saSgpLG4pOlMua30sbi5zY2FsZUV4
dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT1udWxsPT10P3FhOlsr
dFswXSwrdFsxXV0sbik6RX0sbi5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHY9dCYmWyt0WzBdLCt0WzFdXSxuKTp2fSxuLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGs9dCYmWyt0WzBdLCt0WzFdXSxuKTprfSxuLng9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89dCx4PXQuY29weSgpLFM9e3g6MCx5OjAsazox
fSxuKTpffSxuLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9dCxiPXQu
Y29weSgpLFM9e3g6MCx5OjAsazoxfSxuKTp3fSxaby5yZWJpbmQobixMLCJvbiIpfTt2YXIgVGEs
cWE9WzAsMS8wXSxSYT0ib253aGVlbCJpbiAkbz8oVGE9ZnVuY3Rpb24oKXtyZXR1cm4tWm8uZXZl
bnQuZGVsdGFZKihaby5ldmVudC5kZWx0YU1vZGU/MTIwOjEpfSwid2hlZWwiKToib25tb3VzZXdo
ZWVsImluICRvPyhUYT1mdW5jdGlvbigpe3JldHVybiBaby5ldmVudC53aGVlbERlbHRhfSwibW91
c2V3aGVlbCIpOihUYT1mdW5jdGlvbigpe3JldHVybi1aby5ldmVudC5kZXRhaWx9LCJNb3pNb3Vz
ZVBpeGVsU2Nyb2xsIik7Wm8uY29sb3I9ZXQsZXQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMucmdiKCkrIiJ9LFpvLmhzbD1ydDt2YXIgRGE9cnQucHJvdG90eXBlPW5l
dyBldDtEYS5icmlnaHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gbj1NYXRoLnBvdyguNyxhcmd1bWVu
dHMubGVuZ3RoP246MSksbmV3IHJ0KHRoaXMuaCx0aGlzLnMsdGhpcy5sL24pfSxEYS5kYXJrZXI9
ZnVuY3Rpb24obil7cmV0dXJuIG49TWF0aC5wb3coLjcsYXJndW1lbnRzLmxlbmd0aD9uOjEpLG5l
dyBydCh0aGlzLmgsdGhpcy5zLG4qdGhpcy5sKX0sRGEucmdiPWZ1bmN0aW9uKCl7cmV0dXJuIHV0
KHRoaXMuaCx0aGlzLnMsdGhpcy5sKX0sWm8uaGNsPWl0O3ZhciBQYT1pdC5wcm90b3R5cGU9bmV3
IGV0O1BhLmJyaWdodGVyPWZ1bmN0aW9uKG4pe3JldHVybiBuZXcgaXQodGhpcy5oLHRoaXMuYyxN
YXRoLm1pbigxMDAsdGhpcy5sK1VhKihhcmd1bWVudHMubGVuZ3RoP246MSkpKX0sUGEuZGFya2Vy
PWZ1bmN0aW9uKG4pe3JldHVybiBuZXcgaXQodGhpcy5oLHRoaXMuYyxNYXRoLm1heCgwLHRoaXMu
bC1VYSooYXJndW1lbnRzLmxlbmd0aD9uOjEpKSl9LFBhLnJnYj1mdW5jdGlvbigpe3JldHVybiBv
dCh0aGlzLmgsdGhpcy5jLHRoaXMubCkucmdiKCl9LFpvLmxhYj1hdDt2YXIgVWE9MTgsamE9Ljk1
MDQ3LEhhPTEsRmE9MS4wODg4MyxPYT1hdC5wcm90b3R5cGU9bmV3IGV0O09hLmJyaWdodGVyPWZ1
bmN0aW9uKG4pe3JldHVybiBuZXcgYXQoTWF0aC5taW4oMTAwLHRoaXMubCtVYSooYXJndW1lbnRz
Lmxlbmd0aD9uOjEpKSx0aGlzLmEsdGhpcy5iKX0sT2EuZGFya2VyPWZ1bmN0aW9uKG4pe3JldHVy
biBuZXcgYXQoTWF0aC5tYXgoMCx0aGlzLmwtVWEqKGFyZ3VtZW50cy5sZW5ndGg/bjoxKSksdGhp
cy5hLHRoaXMuYil9LE9hLnJnYj1mdW5jdGlvbigpe3JldHVybiBjdCh0aGlzLmwsdGhpcy5hLHRo
aXMuYil9LFpvLnJnYj1ndDt2YXIgWWE9Z3QucHJvdG90eXBlPW5ldyBldDtZYS5icmlnaHRlcj1m
dW5jdGlvbihuKXtuPU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/bjoxKTt2YXIgdD10aGlz
LnIsZT10aGlzLmcscj10aGlzLmIsdT0zMDtyZXR1cm4gdHx8ZXx8cj8odCYmdT50JiYodD11KSxl
JiZ1PmUmJihlPXUpLHImJnU+ciYmKHI9dSksbmV3IGd0KE1hdGgubWluKDI1NSx0L24pLE1hdGgu
bWluKDI1NSxlL24pLE1hdGgubWluKDI1NSxyL24pKSk6bmV3IGd0KHUsdSx1KX0sWWEuZGFya2Vy
PWZ1bmN0aW9uKG4pe3JldHVybiBuPU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/bjoxKSxu
ZXcgZ3Qobip0aGlzLnIsbip0aGlzLmcsbip0aGlzLmIpfSxZYS5oc2w9ZnVuY3Rpb24oKXtyZXR1
cm4geXQodGhpcy5yLHRoaXMuZyx0aGlzLmIpfSxZYS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVy
biIjIitkdCh0aGlzLnIpK2R0KHRoaXMuZykrZHQodGhpcy5iKX07dmFyIElhPVpvLm1hcCh7YWxp
Y2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJp
bmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQs
YmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUy
MDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNo
YXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZs
b3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46
NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5Mzks
ZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtr
aGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTks
ZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxk
YXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDcz
NDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJx
dW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3li
bHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAz
MTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoy
MjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYz
MTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVu
OjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2
MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9y
eToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNo
OjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJs
dWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRn
b2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5
ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2
NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNs
YXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1
ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxs
aW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFt
YXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVt
cHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4
Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRp
dW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIx
ODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2
ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcw
NDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQs
cGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZTox
MTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hw
dWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBv
d2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmVkOjE2NzExNjgwLHJvc3licm93bjox
MjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQx
Njg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2
Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVi
bHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3
NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVh
bDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1
Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9r
ZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9KTtJYS5mb3JF
YWNoKGZ1bmN0aW9uKG4sdCl7SWEuc2V0KG4scHQodCkpfSksWm8uZnVuY3Rvcj1idCxaby54aHI9
U3Qod3QpLFpvLmRzdj1mdW5jdGlvbihuLHQpe2Z1bmN0aW9uIGUobixlLGkpe2FyZ3VtZW50cy5s
ZW5ndGg8MyYmKGk9ZSxlPW51bGwpO3ZhciBvPWt0KG4sdCxudWxsPT1lP3I6dShlKSxpKTtyZXR1
cm4gby5yb3c9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/by5yZXNwb25zZShu
dWxsPT0oZT1uKT9yOnUobikpOmV9LG99ZnVuY3Rpb24gcihuKXtyZXR1cm4gZS5wYXJzZShuLnJl
c3BvbnNlVGV4dCl9ZnVuY3Rpb24gdShuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUucGFy
c2UodC5yZXNwb25zZVRleHQsbil9fWZ1bmN0aW9uIGkodCl7cmV0dXJuIHQubWFwKG8pLmpvaW4o
bil9ZnVuY3Rpb24gbyhuKXtyZXR1cm4gYS50ZXN0KG4pPyciJytuLnJlcGxhY2UoL1wiL2csJyIi
JykrJyInOm59dmFyIGE9bmV3IFJlZ0V4cCgnWyInK24rIlxuXSIpLGM9bi5jaGFyQ29kZUF0KDAp
O3JldHVybiBlLnBhcnNlPWZ1bmN0aW9uKG4sdCl7dmFyIHI7cmV0dXJuIGUucGFyc2VSb3dzKG4s
ZnVuY3Rpb24obixlKXtpZihyKXJldHVybiByKG4sZS0xKTt2YXIgdT1uZXcgRnVuY3Rpb24oImQi
LCJyZXR1cm4geyIrbi5tYXAoZnVuY3Rpb24obix0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkobikr
IjogZFsiK3QrIl0ifSkuam9pbigiLCIpKyJ9Iik7cj10P2Z1bmN0aW9uKG4sZSl7cmV0dXJuIHQo
dShuKSxlKX06dX0pfSxlLnBhcnNlUm93cz1mdW5jdGlvbihuLHQpe2Z1bmN0aW9uIGUoKXtpZihs
Pj1zKXJldHVybiBvO2lmKHUpcmV0dXJuIHU9ITEsaTt2YXIgdD1sO2lmKDM0PT09bi5jaGFyQ29k
ZUF0KHQpKXtmb3IodmFyIGU9dDtlKys8czspaWYoMzQ9PT1uLmNoYXJDb2RlQXQoZSkpe2lmKDM0
IT09bi5jaGFyQ29kZUF0KGUrMSkpYnJlYWs7KytlfWw9ZSsyO3ZhciByPW4uY2hhckNvZGVBdChl
KzEpO3JldHVybiAxMz09PXI/KHU9ITAsMTA9PT1uLmNoYXJDb2RlQXQoZSsyKSYmKytsKToxMD09
PXImJih1PSEwKSxuLnN1YnN0cmluZyh0KzEsZSkucmVwbGFjZSgvIiIvZywnIicpfWZvcig7cz5s
Oyl7dmFyIHI9bi5jaGFyQ29kZUF0KGwrKyksYT0xO2lmKDEwPT09cil1PSEwO2Vsc2UgaWYoMTM9
PT1yKXU9ITAsMTA9PT1uLmNoYXJDb2RlQXQobCkmJigrK2wsKythKTtlbHNlIGlmKHIhPT1jKWNv
bnRpbnVlO3JldHVybiBuLnN1YnN0cmluZyh0LGwtYSl9cmV0dXJuIG4uc3Vic3RyaW5nKHQpfWZv
cih2YXIgcix1LGk9e30sbz17fSxhPVtdLHM9bi5sZW5ndGgsbD0wLGY9MDsocj1lKCkpIT09bzsp
e2Zvcih2YXIgaD1bXTtyIT09aSYmciE9PW87KWgucHVzaChyKSxyPWUoKTsoIXR8fChoPXQoaCxm
KyspKSkmJmEucHVzaChoKX1yZXR1cm4gYX0sZS5mb3JtYXQ9ZnVuY3Rpb24odCl7aWYoQXJyYXku
aXNBcnJheSh0WzBdKSlyZXR1cm4gZS5mb3JtYXRSb3dzKHQpO3ZhciByPW5ldyBoLHU9W107cmV0
dXJuIHQuZm9yRWFjaChmdW5jdGlvbihuKXtmb3IodmFyIHQgaW4gbilyLmhhcyh0KXx8dS5wdXNo
KHIuYWRkKHQpKX0pLFt1Lm1hcChvKS5qb2luKG4pXS5jb25jYXQodC5tYXAoZnVuY3Rpb24odCl7
cmV0dXJuIHUubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBvKHRbbl0pfSkuam9pbihuKX0pKS5qb2lu
KCJcbiIpfSxlLmZvcm1hdFJvd3M9ZnVuY3Rpb24obil7cmV0dXJuIG4ubWFwKGkpLmpvaW4oIlxu
Iil9LGV9LFpvLmNzdj1aby5kc3YoIiwiLCJ0ZXh0L2NzdiIpLFpvLnRzdj1aby5kc3YoIiAgICAi
LCJ0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzIiksWm8udG91Y2g9ZnVuY3Rpb24obix0LGUpe2lm
KGFyZ3VtZW50cy5sZW5ndGg8MyYmKGU9dCx0PXgoKS5jaGFuZ2VkVG91Y2hlcyksdClmb3IodmFy
IHIsdT0wLGk9dC5sZW5ndGg7aT51OysrdSlpZigocj10W3VdKS5pZGVudGlmaWVyPT09ZSlyZXR1
cm4gWihuLHIpfTt2YXIgWmEsVmEsWGEsJGEsQmEsV2E9V29bcChXbywicmVxdWVzdEFuaW1hdGlv
bkZyYW1lIildfHxmdW5jdGlvbihuKXtzZXRUaW1lb3V0KG4sMTcpfTtaby50aW1lcj1mdW5jdGlv
bihuLHQsZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDsyPnImJih0PTApLDM+ciYmKGU9RGF0ZS5u
b3coKSk7dmFyIHU9ZSt0LGk9e2M6bix0OnUsZjohMSxuOm51bGx9O1ZhP1ZhLm49aTpaYT1pLFZh
PWksWGF8fCgkYT1jbGVhclRpbWVvdXQoJGEpLFhhPTEsV2EoQXQpKX0sWm8udGltZXIuZmx1c2g9
ZnVuY3Rpb24oKXtDdCgpLE50KCl9LFpvLnJvdW5kPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ/TWF0
aC5yb3VuZChuKih0PU1hdGgucG93KDEwLHQpKSkvdDpNYXRoLnJvdW5kKG4pfTt2YXIgSmE9WyJ5
IiwieiIsImEiLCJmIiwicCIsIm4iLCJceGI1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwi
RSIsIloiLCJZIl0ubWFwKEx0KTtaby5mb3JtYXRQcmVmaXg9ZnVuY3Rpb24obix0KXt2YXIgZT0w
O3JldHVybiBuJiYoMD5uJiYobio9LTEpLHQmJihuPVpvLnJvdW5kKG4senQobix0KSkpLGU9MStN
YXRoLmZsb29yKDFlLTEyK01hdGgubG9nKG4pL01hdGguTE4xMCksZT1NYXRoLm1heCgtMjQsTWF0
aC5taW4oMjQsMypNYXRoLmZsb29yKChlLTEpLzMpKSkpLEphWzgrZS8zXX07dmFyIEdhPS8oPzoo
W157XSk/KFs8Pj1eXSkpPyhbK1wtIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLi0/XGQrKT8o
W2EteiVdKT8vaSxLYT1aby5tYXAoe2I6ZnVuY3Rpb24obil7cmV0dXJuIG4udG9TdHJpbmcoMil9
LGM6ZnVuY3Rpb24obil7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUobil9LG86ZnVuY3Rpb24o
bil7cmV0dXJuIG4udG9TdHJpbmcoOCl9LHg6ZnVuY3Rpb24obil7cmV0dXJuIG4udG9TdHJpbmco
MTYpfSxYOmZ1bmN0aW9uKG4pe3JldHVybiBuLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSxn
OmZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4udG9QcmVjaXNpb24odCl9LGU6ZnVuY3Rpb24obix0KXty
ZXR1cm4gbi50b0V4cG9uZW50aWFsKHQpfSxmOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4udG9GaXhl
ZCh0KX0scjpmdW5jdGlvbihuLHQpe3JldHVybihuPVpvLnJvdW5kKG4senQobix0KSkpLnRvRml4
ZWQoTWF0aC5tYXgoMCxNYXRoLm1pbigyMCx6dChuKigxKzFlLTE1KSx0KSkpKX19KSxRYT1aby50
aW1lPXt9LG5jPURhdGU7UnQucHJvdG90eXBlPXtnZXREYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuXy5nZXRVVENEYXRlKCl9LGdldERheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRD
RGF5KCl9LGdldEZ1bGxZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENGdWxsWWVh
cigpfSxnZXRIb3VyczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDSG91cnMoKX0sZ2V0
TWlsbGlzZWNvbmRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENNaWxsaXNlY29uZHMo
KX0sZ2V0TWludXRlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDTWludXRlcygpfSxn
ZXRNb250aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDTW9udGgoKX0sZ2V0U2Vjb25k
czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDU2Vjb25kcygpfSxnZXRUaW1lOmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRUaW1lKCl9LGdldFRpbWV6b25lT2Zmc2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIDB9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLnZhbHVlT2YoKX0s
c2V0RGF0ZTpmdW5jdGlvbigpe3RjLnNldFVUQ0RhdGUuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9
LHNldERheTpmdW5jdGlvbigpe3RjLnNldFVUQ0RheS5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0s
c2V0RnVsbFllYXI6ZnVuY3Rpb24oKXt0Yy5zZXRVVENGdWxsWWVhci5hcHBseSh0aGlzLl8sYXJn
dW1lbnRzKX0sc2V0SG91cnM6ZnVuY3Rpb24oKXt0Yy5zZXRVVENIb3Vycy5hcHBseSh0aGlzLl8s
YXJndW1lbnRzKX0sc2V0TWlsbGlzZWNvbmRzOmZ1bmN0aW9uKCl7dGMuc2V0VVRDTWlsbGlzZWNv
bmRzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRNaW51dGVzOmZ1bmN0aW9uKCl7dGMuc2V0
VVRDTWludXRlcy5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0TW9udGg6ZnVuY3Rpb24oKXt0
Yy5zZXRVVENNb250aC5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0U2Vjb25kczpmdW5jdGlv
bigpe3RjLnNldFVUQ1NlY29uZHMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldFRpbWU6ZnVu
Y3Rpb24oKXt0Yy5zZXRUaW1lLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfX07dmFyIHRjPURhdGUu
cHJvdG90eXBlO1FhLnllYXI9RHQoZnVuY3Rpb24obil7cmV0dXJuIG49UWEuZGF5KG4pLG4uc2V0
TW9udGgoMCwxKSxufSxmdW5jdGlvbihuLHQpe24uc2V0RnVsbFllYXIobi5nZXRGdWxsWWVhcigp
K3QpfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRGdWxsWWVhcigpfSksUWEueWVhcnM9UWEueWVh
ci5yYW5nZSxRYS55ZWFycy51dGM9UWEueWVhci51dGMucmFuZ2UsUWEuZGF5PUR0KGZ1bmN0aW9u
KG4pe3ZhciB0PW5ldyBuYygyZTMsMCk7cmV0dXJuIHQuc2V0RnVsbFllYXIobi5nZXRGdWxsWWVh
cigpLG4uZ2V0TW9udGgoKSxuLmdldERhdGUoKSksdH0sZnVuY3Rpb24obix0KXtuLnNldERhdGUo
bi5nZXREYXRlKCkrdCl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldERhdGUoKS0xfSksUWEuZGF5
cz1RYS5kYXkucmFuZ2UsUWEuZGF5cy51dGM9UWEuZGF5LnV0Yy5yYW5nZSxRYS5kYXlPZlllYXI9
ZnVuY3Rpb24obil7dmFyIHQ9UWEueWVhcihuKTtyZXR1cm4gTWF0aC5mbG9vcigobi10LTZlNCoo
bi5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkpLzg2NGU1KX0sWyJz
dW5kYXkiLCJtb25kYXkiLCJ0dWVzZGF5Iiwid2VkbmVzZGF5IiwidGh1cnNkYXkiLCJmcmlkYXki
LCJzYXR1cmRheSJdLmZvckVhY2goZnVuY3Rpb24obix0KXt0PTctdDt2YXIgZT1RYVtuXT1EdChm
dW5jdGlvbihuKXtyZXR1cm4obj1RYS5kYXkobikpLnNldERhdGUobi5nZXREYXRlKCktKG4uZ2V0
RGF5KCkrdCklNyksbn0sZnVuY3Rpb24obix0KXtuLnNldERhdGUobi5nZXREYXRlKCkrNypNYXRo
LmZsb29yKHQpKX0sZnVuY3Rpb24obil7dmFyIGU9UWEueWVhcihuKS5nZXREYXkoKTtyZXR1cm4g
TWF0aC5mbG9vcigoUWEuZGF5T2ZZZWFyKG4pKyhlK3QpJTcpLzcpLShlIT09dCl9KTtRYVtuKyJz
Il09ZS5yYW5nZSxRYVtuKyJzIl0udXRjPWUudXRjLnJhbmdlLFFhW24rIk9mWWVhciJdPWZ1bmN0
aW9uKG4pe3ZhciBlPVFhLnllYXIobikuZ2V0RGF5KCk7cmV0dXJuIE1hdGguZmxvb3IoKFFhLmRh
eU9mWWVhcihuKSsoZSt0KSU3KS83KX19KSxRYS53ZWVrPVFhLnN1bmRheSxRYS53ZWVrcz1RYS5z
dW5kYXkucmFuZ2UsUWEud2Vla3MudXRjPVFhLnN1bmRheS51dGMucmFuZ2UsUWEud2Vla09mWWVh
cj1RYS5zdW5kYXlPZlllYXI7dmFyIGVjPXsiLSI6IiIsXzoiICIsMDoiMCJ9LHJjPS9eXHMqXGQr
Lyx1Yz0vXiUvO1pvLmxvY2FsZT1mdW5jdGlvbihuKXtyZXR1cm57bnVtYmVyRm9ybWF0OlR0KG4p
LHRpbWVGb3JtYXQ6VXQobil9fTt2YXIgaWM9Wm8ubG9jYWxlKHtkZWNpbWFsOiIuIix0aG91c2Fu
ZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSxkYXRlVGltZToiJWEgJWIgJWUg
JVggJVkiLGRhdGU6IiVtLyVkLyVZIix0aW1lOiIlSDolTTolUyIscGVyaW9kczpbIkFNIiwiUE0i
XSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5
IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQi
LCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIs
IkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVy
IiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwi
QXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTta
by5mb3JtYXQ9aWMubnVtYmVyRm9ybWF0LFpvLmdlbz17fSx1ZS5wcm90b3R5cGU9e3M6MCx0OjAs
YWRkOmZ1bmN0aW9uKG4pe2llKG4sdGhpcy50LG9jKSxpZShvYy5zLHRoaXMucyx0aGlzKSx0aGlz
LnM/dGhpcy50Kz1vYy50OnRoaXMucz1vYy50fSxyZXNldDpmdW5jdGlvbigpe3RoaXMucz10aGlz
LnQ9MH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN9fTt2YXIgb2M9bmV3IHVlO1pv
Lmdlby5zdHJlYW09ZnVuY3Rpb24obix0KXtuJiZhYy5oYXNPd25Qcm9wZXJ0eShuLnR5cGUpP2Fj
W24udHlwZV0obix0KTpvZShuLHQpfTt2YXIgYWM9e0ZlYXR1cmU6ZnVuY3Rpb24obix0KXtvZShu
Lmdlb21ldHJ5LHQpfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1u
LmZlYXR1cmVzLHI9LTEsdT1lLmxlbmd0aDsrK3I8dTspb2UoZVtyXS5nZW9tZXRyeSx0KX19LGNj
PXtTcGhlcmU6ZnVuY3Rpb24obix0KXt0LnNwaGVyZSgpfSxQb2ludDpmdW5jdGlvbihuLHQpe249
bi5jb29yZGluYXRlcyx0LnBvaW50KG5bMF0sblsxXSxuWzJdKX0sTXVsdGlQb2ludDpmdW5jdGlv
bihuLHQpe2Zvcih2YXIgZT1uLmNvb3JkaW5hdGVzLHI9LTEsdT1lLmxlbmd0aDsrK3I8dTspbj1l
W3JdLHQucG9pbnQoblswXSxuWzFdLG5bMl0pfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKG4sdCl7YWUo
bi5jb29yZGluYXRlcyx0LDApfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24obix0KXtmb3IodmFy
IGU9bi5jb29yZGluYXRlcyxyPS0xLHU9ZS5sZW5ndGg7KytyPHU7KWFlKGVbcl0sdCwwKX0sUG9s
eWdvbjpmdW5jdGlvbihuLHQpe2NlKG4uY29vcmRpbmF0ZXMsdCl9LE11bHRpUG9seWdvbjpmdW5j
dGlvbihuLHQpe2Zvcih2YXIgZT1uLmNvb3JkaW5hdGVzLHI9LTEsdT1lLmxlbmd0aDsrK3I8dTsp
Y2UoZVtyXSx0KX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4u
Z2VvbWV0cmllcyxyPS0xLHU9ZS5sZW5ndGg7KytyPHU7KW9lKGVbcl0sdCl9fTtaby5nZW8uYXJl
YT1mdW5jdGlvbihuKXtyZXR1cm4gc2M9MCxaby5nZW8uc3RyZWFtKG4sZmMpLHNjfTt2YXIgc2Ms
bGM9bmV3IHVlLGZjPXtzcGhlcmU6ZnVuY3Rpb24oKXtzYys9NCpiYX0scG9pbnQ6dixsaW5lU3Rh
cnQ6dixsaW5lRW5kOnYscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7bGMucmVzZXQoKSxmYy5saW5l
U3RhcnQ9c2V9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt2YXIgbj0yKmxjO3NjKz0wPm4/NCpiYStu
Om4sZmMubGluZVN0YXJ0PWZjLmxpbmVFbmQ9ZmMucG9pbnQ9dn19O1pvLmdlby5ib3VuZHM9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiBuKG4sdCl7eC5wdXNoKE09W2w9bixoPW5dKSxmPnQmJihmPXQpLHQ+
ZyYmKGc9dCl9ZnVuY3Rpb24gdCh0LGUpe3ZhciByPWxlKFt0KkFhLGUqQWFdKTtpZihtKXt2YXIg
dT1oZShtLHIpLGk9W3VbMV0sLXVbMF0sMF0sbz1oZShpLHUpO3ZlKG8pLG89ZGUobyk7dmFyIGM9
dC1wLHM9Yz4wPzE6LTEsdj1vWzBdKkNhKnMsZD11YShjKT4xODA7aWYoZF4odj5zKnAmJnMqdD52
KSl7dmFyIHk9b1sxXSpDYTt5PmcmJihnPXkpfWVsc2UgaWYodj0odiszNjApJTM2MC0xODAsZF4o
dj5zKnAmJnMqdD52KSl7dmFyIHk9LW9bMV0qQ2E7Zj55JiYoZj15KX1lbHNlIGY+ZSYmKGY9ZSks
ZT5nJiYoZz1lKTtkP3A+dD9hKGwsdCk+YShsLGgpJiYoaD10KTphKHQsaCk+YShsLGgpJiYobD10
KTpoPj1sPyhsPnQmJihsPXQpLHQ+aCYmKGg9dCkpOnQ+cD9hKGwsdCk+YShsLGgpJiYoaD10KTph
KHQsaCk+YShsLGgpJiYobD10KX1lbHNlIG4odCxlKTttPXIscD10fWZ1bmN0aW9uIGUoKXtfLnBv
aW50PXR9ZnVuY3Rpb24gcigpe01bMF09bCxNWzFdPWgsXy5wb2ludD1uLG09bnVsbH1mdW5jdGlv
biB1KG4sZSl7aWYobSl7dmFyIHI9bi1wO3krPXVhKHIpPjE4MD9yKyhyPjA/MzYwOi0zNjApOnJ9
ZWxzZSB2PW4sZD1lO2ZjLnBvaW50KG4sZSksdChuLGUpfWZ1bmN0aW9uIGkoKXtmYy5saW5lU3Rh
cnQoKX1mdW5jdGlvbiBvKCl7dSh2LGQpLGZjLmxpbmVFbmQoKSx1YSh5KT5rYSYmKGw9LShoPTE4
MCkpLE1bMF09bCxNWzFdPWgsbT1udWxsfWZ1bmN0aW9uIGEobix0KXtyZXR1cm4odC09bik8MD90
KzM2MDp0fWZ1bmN0aW9uIGMobix0KXtyZXR1cm4gblswXS10WzBdfWZ1bmN0aW9uIHMobix0KXty
ZXR1cm4gdFswXTw9dFsxXT90WzBdPD1uJiZuPD10WzFdOm48dFswXXx8dFsxXTxufXZhciBsLGYs
aCxnLHAsdixkLG0seSx4LE0sXz17cG9pbnQ6bixsaW5lU3RhcnQ6ZSxsaW5lRW5kOnIscG9seWdv
blN0YXJ0OmZ1bmN0aW9uKCl7Xy5wb2ludD11LF8ubGluZVN0YXJ0PWksXy5saW5lRW5kPW8seT0w
LGZjLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7ZmMucG9seWdvbkVuZCgp
LF8ucG9pbnQ9bixfLmxpbmVTdGFydD1lLF8ubGluZUVuZD1yLDA+bGM/KGw9LShoPTE4MCksZj0t
KGc9OTApKTp5PmthP2c9OTA6LWthPnkmJihmPS05MCksTVswXT1sLE1bMV09aH19O3JldHVybiBm
dW5jdGlvbihuKXtnPWg9LShsPWY9MS8wKSx4PVtdLFpvLmdlby5zdHJlYW0obixfKTt2YXIgdD14
Lmxlbmd0aDtpZih0KXt4LnNvcnQoYyk7Zm9yKHZhciBlLHI9MSx1PXhbMF0saT1bdV07dD5yOysr
cillPXhbcl0scyhlWzBdLHUpfHxzKGVbMV0sdSk/KGEodVswXSxlWzFdKT5hKHVbMF0sdVsxXSkm
Jih1WzFdPWVbMV0pLGEoZVswXSx1WzFdKT5hKHVbMF0sdVsxXSkmJih1WzBdPWVbMF0pKTppLnB1
c2godT1lKTsKLWZvcih2YXIgbyxlLHA9LTEvMCx0PWkubGVuZ3RoLTEscj0wLHU9aVt0XTt0Pj1y
O3U9ZSwrK3IpZT1pW3JdLChvPWEodVsxXSxlWzBdKSk+cCYmKHA9byxsPWVbMF0saD11WzFdKX1y
ZXR1cm4geD1NPW51bGwsMS8wPT09bHx8MS8wPT09Zj9bWzAvMCwwLzBdLFswLzAsMC8wXV06W1ts
LGZdLFtoLGddXX19KCksWm8uZ2VvLmNlbnRyb2lkPWZ1bmN0aW9uKG4pe2hjPWdjPXBjPXZjPWRj
PW1jPXljPXhjPU1jPV9jPWJjPTAsWm8uZ2VvLnN0cmVhbShuLHdjKTt2YXIgdD1NYyxlPV9jLHI9
YmMsdT10KnQrZSplK3IqcjtyZXR1cm4gRWE+dSYmKHQ9bWMsZT15YyxyPXhjLGthPmdjJiYodD1w
YyxlPXZjLHI9ZGMpLHU9dCp0K2UqZStyKnIsRWE+dSk/WzAvMCwwLzBdOltNYXRoLmF0YW4yKGUs
dCkqQ2EsRyhyL01hdGguc3FydCh1KSkqQ2FdfTt2YXIgaGMsZ2MscGMsdmMsZGMsbWMseWMseGMs
TWMsX2MsYmMsd2M9e3NwaGVyZTp2LHBvaW50OnllLGxpbmVTdGFydDpNZSxsaW5lRW5kOl9lLHBv
bHlnb25TdGFydDpmdW5jdGlvbigpe3djLmxpbmVTdGFydD1iZX0scG9seWdvbkVuZDpmdW5jdGlv
bigpe3djLmxpbmVTdGFydD1NZX19LFNjPUFlKHdlLFRlLFJlLFstYmEsLWJhLzJdKSxrYz0xZTk7
Wm8uZ2VvLmNsaXBFeHRlbnQ9ZnVuY3Rpb24oKXt2YXIgbix0LGUscix1LGksbz17c3RyZWFtOmZ1
bmN0aW9uKG4pe3JldHVybiB1JiYodS52YWxpZD0hMSksdT1pKG4pLHUudmFsaWQ9ITAsdX0sZXh0
ZW50OmZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPVVlKG49K2FbMF1bMF0s
dD0rYVswXVsxXSxlPSthWzFdWzBdLHI9K2FbMV1bMV0pLHUmJih1LnZhbGlkPSExLHU9bnVsbCks
byk6W1tuLHRdLFtlLHJdXX19O3JldHVybiBvLmV4dGVudChbWzAsMF0sWzk2MCw1MDBdXSl9LCha
by5nZW8uY29uaWNFcXVhbEFyZWE9ZnVuY3Rpb24oKXtyZXR1cm4gSGUoRmUpfSkucmF3PUZlLFpv
Lmdlby5hbGJlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gWm8uZ2VvLmNvbmljRXF1YWxBcmVhKCkucm90
YXRlKFs5NiwwXSkuY2VudGVyKFstLjYsMzguN10pLnBhcmFsbGVscyhbMjkuNSw0NS41XSkuc2Nh
bGUoMTA3MCl9LFpvLmdlby5hbGJlcnNVc2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4pe3ZhciBp
PW5bMF0sbz1uWzFdO3JldHVybiB0PW51bGwsZShpLG8pLHR8fChyKGksbyksdCl8fHUoaSxvKSx0
fXZhciB0LGUscix1LGk9Wm8uZ2VvLmFsYmVycygpLG89Wm8uZ2VvLmNvbmljRXF1YWxBcmVhKCku
cm90YXRlKFsxNTQsMF0pLmNlbnRlcihbLTIsNTguNV0pLnBhcmFsbGVscyhbNTUsNjVdKSxhPVpv
Lmdlby5jb25pY0VxdWFsQXJlYSgpLnJvdGF0ZShbMTU3LDBdKS5jZW50ZXIoWy0zLDE5LjldKS5w
YXJhbGxlbHMoWzgsMThdKSxjPXtwb2ludDpmdW5jdGlvbihuLGUpe3Q9W24sZV19fTtyZXR1cm4g
bi5pbnZlcnQ9ZnVuY3Rpb24obil7dmFyIHQ9aS5zY2FsZSgpLGU9aS50cmFuc2xhdGUoKSxyPShu
WzBdLWVbMF0pL3QsdT0oblsxXS1lWzFdKS90O3JldHVybih1Pj0uMTImJi4yMzQ+dSYmcj49LS40
MjUmJi0uMjE0PnI/bzp1Pj0uMTY2JiYuMjM0PnUmJnI+PS0uMjE0JiYtLjExNT5yP2E6aSkuaW52
ZXJ0KG4pfSxuLnN0cmVhbT1mdW5jdGlvbihuKXt2YXIgdD1pLnN0cmVhbShuKSxlPW8uc3RyZWFt
KG4pLHI9YS5zdHJlYW0obik7cmV0dXJue3BvaW50OmZ1bmN0aW9uKG4sdSl7dC5wb2ludChuLHUp
LGUucG9pbnQobix1KSxyLnBvaW50KG4sdSl9LHNwaGVyZTpmdW5jdGlvbigpe3Quc3BoZXJlKCks
ZS5zcGhlcmUoKSxyLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LmxpbmVTdGFydCgp
LGUubGluZVN0YXJ0KCksci5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3QubGluZUVu
ZCgpLGUubGluZUVuZCgpLHIubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0LnBv
bHlnb25TdGFydCgpLGUucG9seWdvblN0YXJ0KCksci5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVu
ZDpmdW5jdGlvbigpe3QucG9seWdvbkVuZCgpLGUucG9seWdvbkVuZCgpLHIucG9seWdvbkVuZCgp
fX19LG4ucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpLnBy
ZWNpc2lvbih0KSxvLnByZWNpc2lvbih0KSxhLnByZWNpc2lvbih0KSxuKTppLnByZWNpc2lvbigp
fSxuLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpLnNjYWxlKHQp
LG8uc2NhbGUoLjM1KnQpLGEuc2NhbGUodCksbi50cmFuc2xhdGUoaS50cmFuc2xhdGUoKSkpOmku
c2NhbGUoKX0sbi50cmFuc2xhdGU9ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0
dXJuIGkudHJhbnNsYXRlKCk7dmFyIHM9aS5zY2FsZSgpLGw9K3RbMF0sZj0rdFsxXTtyZXR1cm4g
ZT1pLnRyYW5zbGF0ZSh0KS5jbGlwRXh0ZW50KFtbbC0uNDU1KnMsZi0uMjM4KnNdLFtsKy40NTUq
cyxmKy4yMzgqc11dKS5zdHJlYW0oYykucG9pbnQscj1vLnRyYW5zbGF0ZShbbC0uMzA3KnMsZisu
MjAxKnNdKS5jbGlwRXh0ZW50KFtbbC0uNDI1KnMra2EsZisuMTIqcytrYV0sW2wtLjIxNCpzLWth
LGYrLjIzNCpzLWthXV0pLnN0cmVhbShjKS5wb2ludCx1PWEudHJhbnNsYXRlKFtsLS4yMDUqcyxm
Ky4yMTIqc10pLmNsaXBFeHRlbnQoW1tsLS4yMTQqcytrYSxmKy4xNjYqcytrYV0sW2wtLjExNSpz
LWthLGYrLjIzNCpzLWthXV0pLnN0cmVhbShjKS5wb2ludCxufSxuLnNjYWxlKDEwNzApfTt2YXIg
RWMsQWMsQ2MsTmMsemMsTGMsVGM9e3BvaW50OnYsbGluZVN0YXJ0OnYsbGluZUVuZDp2LHBvbHln
b25TdGFydDpmdW5jdGlvbigpe0FjPTAsVGMubGluZVN0YXJ0PU9lfSxwb2x5Z29uRW5kOmZ1bmN0
aW9uKCl7VGMubGluZVN0YXJ0PVRjLmxpbmVFbmQ9VGMucG9pbnQ9dixFYys9dWEoQWMvMil9fSxx
Yz17cG9pbnQ6WWUsbGluZVN0YXJ0OnYsbGluZUVuZDp2LHBvbHlnb25TdGFydDp2LHBvbHlnb25F
bmQ6dn0sUmM9e3BvaW50OlZlLGxpbmVTdGFydDpYZSxsaW5lRW5kOiRlLHBvbHlnb25TdGFydDpm
dW5jdGlvbigpe1JjLmxpbmVTdGFydD1CZX0scG9seWdvbkVuZDpmdW5jdGlvbigpe1JjLnBvaW50
PVZlLFJjLmxpbmVTdGFydD1YZSxSYy5saW5lRW5kPSRlfX07Wm8uZ2VvLnBhdGg9ZnVuY3Rpb24o
KXtmdW5jdGlvbiBuKG4pe3JldHVybiBuJiYoImZ1bmN0aW9uIj09dHlwZW9mIGEmJmkucG9pbnRS
YWRpdXMoK2EuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxvJiZvLnZhbGlkfHwobz11KGkpKSxaby5n
ZW8uc3RyZWFtKG4sbykpLGkucmVzdWx0KCl9ZnVuY3Rpb24gdCgpe3JldHVybiBvPW51bGwsbn12
YXIgZSxyLHUsaSxvLGE9NC41O3JldHVybiBuLmFyZWE9ZnVuY3Rpb24obil7cmV0dXJuIEVjPTAs
Wm8uZ2VvLnN0cmVhbShuLHUoVGMpKSxFY30sbi5jZW50cm9pZD1mdW5jdGlvbihuKXtyZXR1cm4g
cGM9dmM9ZGM9bWM9eWM9eGM9TWM9X2M9YmM9MCxaby5nZW8uc3RyZWFtKG4sdShSYykpLGJjP1tN
Yy9iYyxfYy9iY106eGM/W21jL3hjLHljL3hjXTpkYz9bcGMvZGMsdmMvZGNdOlswLzAsMC8wXX0s
bi5ib3VuZHM9ZnVuY3Rpb24obil7cmV0dXJuIHpjPUxjPS0oQ2M9TmM9MS8wKSxaby5nZW8uc3Ry
ZWFtKG4sdShxYykpLFtbQ2MsTmNdLFt6YyxMY11dfSxuLnByb2plY3Rpb249ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9KGU9bik/bi5zdHJlYW18fEdlKG4pOnd0LHQoKSk6
ZX0sbi5jb250ZXh0PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9
PShyPW4pP25ldyBJZTpuZXcgV2UobiksImZ1bmN0aW9uIiE9dHlwZW9mIGEmJmkucG9pbnRSYWRp
dXMoYSksdCgpKTpyfSxuLnBvaW50UmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6KGkucG9pbnRSYWRpdXMoK3QpLCt0KSxu
KTphfSxuLnByb2plY3Rpb24oWm8uZ2VvLmFsYmVyc1VzYSgpKS5jb250ZXh0KG51bGwpfSxaby5n
ZW8udHJhbnNmb3JtPWZ1bmN0aW9uKG4pe3JldHVybntzdHJlYW06ZnVuY3Rpb24odCl7dmFyIGU9
bmV3IEtlKHQpO2Zvcih2YXIgciBpbiBuKWVbcl09bltyXTtyZXR1cm4gZX19fSxLZS5wcm90b3R5
cGU9e3BvaW50OmZ1bmN0aW9uKG4sdCl7dGhpcy5zdHJlYW0ucG9pbnQobix0KX0sc3BoZXJlOmZ1
bmN0aW9uKCl7dGhpcy5zdHJlYW0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMu
c3RyZWFtLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZUVu
ZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29uU3RhcnQoKX0s
cG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25FbmQoKX19LFpvLmdlby5w
cm9qZWN0aW9uPW5yLFpvLmdlby5wcm9qZWN0aW9uTXV0YXRvcj10ciwoWm8uZ2VvLmVxdWlyZWN0
YW5ndWxhcj1mdW5jdGlvbigpe3JldHVybiBucihycil9KS5yYXc9cnIuaW52ZXJ0PXJyLFpvLmdl
by5yb3RhdGlvbj1mdW5jdGlvbihuKXtmdW5jdGlvbiB0KHQpe3JldHVybiB0PW4odFswXSpBYSx0
WzFdKkFhKSx0WzBdKj1DYSx0WzFdKj1DYSx0fXJldHVybiBuPWlyKG5bMF0lMzYwKkFhLG5bMV0q
QWEsbi5sZW5ndGg+Mj9uWzJdKkFhOjApLHQuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0PW4u
aW52ZXJ0KHRbMF0qQWEsdFsxXSpBYSksdFswXSo9Q2EsdFsxXSo9Q2EsdH0sdH0sdXIuaW52ZXJ0
PXJyLFpvLmdlby5jaXJjbGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7dmFyIG49ImZ1bmN0aW9u
Ij09dHlwZW9mIHI/ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6cix0PWlyKC1uWzBdKkFhLC1uWzFd
KkFhLDApLmludmVydCx1PVtdO3JldHVybiBlKG51bGwsbnVsbCwxLHtwb2ludDpmdW5jdGlvbihu
LGUpe3UucHVzaChuPXQobixlKSksblswXSo9Q2EsblsxXSo9Q2F9fSkse3R5cGU6IlBvbHlnb24i
LGNvb3JkaW5hdGVzOlt1XX19dmFyIHQsZSxyPVswLDBdLHU9NjtyZXR1cm4gbi5vcmlnaW49ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxuLmFuZ2xlPWZ1bmN0
aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXNyKCh0PStyKSpBYSx1KkFhKSxuKTp0
fSxuLnByZWNpc2lvbj1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1zcih0
KkFhLCh1PStyKSpBYSksbik6dX0sbi5hbmdsZSg5MCl9LFpvLmdlby5kaXN0YW5jZT1mdW5jdGlv
bihuLHQpe3ZhciBlLHI9KHRbMF0tblswXSkqQWEsdT1uWzFdKkFhLGk9dFsxXSpBYSxvPU1hdGgu
c2luKHIpLGE9TWF0aC5jb3MociksYz1NYXRoLnNpbih1KSxzPU1hdGguY29zKHUpLGw9TWF0aC5z
aW4oaSksZj1NYXRoLmNvcyhpKTtyZXR1cm4gTWF0aC5hdGFuMihNYXRoLnNxcnQoKGU9ZipvKSpl
KyhlPXMqbC1jKmYqYSkqZSksYypsK3MqZiphKX0sWm8uZ2VvLmdyYXRpY3VsZT1mdW5jdGlvbigp
e2Z1bmN0aW9uIG4oKXtyZXR1cm57dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRlczp0
KCl9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gWm8ucmFuZ2UoTWF0aC5jZWlsKGkvZCkqZCx1LGQpLm1h
cChoKS5jb25jYXQoWm8ucmFuZ2UoTWF0aC5jZWlsKHMvbSkqbSxjLG0pLm1hcChnKSkuY29uY2F0
KFpvLnJhbmdlKE1hdGguY2VpbChyL3ApKnAsZSxwKS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJu
IHVhKG4lZCk+a2F9KS5tYXAobCkpLmNvbmNhdChaby5yYW5nZShNYXRoLmNlaWwoYS92KSp2LG8s
dikuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiB1YShuJW0pPmthfSkubWFwKGYpKX12YXIgZSxy
LHUsaSxvLGEsYyxzLGwsZixoLGcscD0xMCx2PXAsZD05MCxtPTM2MCx5PTIuNTtyZXR1cm4gbi5s
aW5lcz1mdW5jdGlvbigpe3JldHVybiB0KCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybnt0eXBlOiJM
aW5lU3RyaW5nIixjb29yZGluYXRlczpufX0pfSxuLm91dGxpbmU9ZnVuY3Rpb24oKXtyZXR1cm57
dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W2goaSkuY29uY2F0KGcoYykuc2xpY2UoMSksaCh1
KS5yZXZlcnNlKCkuc2xpY2UoMSksZyhzKS5yZXZlcnNlKCkuc2xpY2UoMSkpXX19LG4uZXh0ZW50
PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP24ubWFqb3JFeHRlbnQodCkubWlu
b3JFeHRlbnQodCk6bi5taW5vckV4dGVudCgpfSxuLm1ham9yRXh0ZW50PWZ1bmN0aW9uKHQpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSt0WzBdWzBdLHU9K3RbMV1bMF0scz0rdFswXVsxXSxj
PSt0WzFdWzFdLGk+dSYmKHQ9aSxpPXUsdT10KSxzPmMmJih0PXMscz1jLGM9dCksbi5wcmVjaXNp
b24oeSkpOltbaSxzXSxbdSxjXV19LG4ubWlub3JFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHI9K3RbMF1bMF0sZT0rdFsxXVswXSxhPSt0WzBdWzFdLG89K3RbMV1b
MV0scj5lJiYodD1yLHI9ZSxlPXQpLGE+byYmKHQ9YSxhPW8sbz10KSxuLnByZWNpc2lvbih5KSk6
W1tyLGFdLFtlLG9dXX0sbi5zdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
P24ubWFqb3JTdGVwKHQpLm1pbm9yU3RlcCh0KTpuLm1pbm9yU3RlcCgpfSxuLm1ham9yU3RlcD1m
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rdFswXSxtPSt0WzFdLG4pOltk
LG1dfSxuLm1pbm9yU3RlcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0r
dFswXSx2PSt0WzFdLG4pOltwLHZdfSxuLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oeT0rdCxsPWZyKGEsbyw5MCksZj1ocihyLGUseSksaD1mcihzLGMsOTAp
LGc9aHIoaSx1LHkpLG4pOnl9LG4ubWFqb3JFeHRlbnQoW1stMTgwLC05MCtrYV0sWzE4MCw5MC1r
YV1dKS5taW5vckV4dGVudChbWy0xODAsLTgwLWthXSxbMTgwLDgwK2thXV0pfSxaby5nZW8uZ3Jl
YXRBcmM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNv
b3JkaW5hdGVzOlt0fHxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlfHx1LmFwcGx5KHRoaXMsYXJn
dW1lbnRzKV19fXZhciB0LGUscj1ncix1PXByO3JldHVybiBuLmRpc3RhbmNlPWZ1bmN0aW9uKCl7
cmV0dXJuIFpvLmdlby5kaXN0YW5jZSh0fHxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlfHx1LmFw
cGx5KHRoaXMsYXJndW1lbnRzKSl9LG4uc291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhyPWUsdD0iZnVuY3Rpb24iPT10eXBlb2YgZT9udWxsOmUsbik6cn0sbi50YXJn
ZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxlPSJmdW5jdGlvbiI9
PXR5cGVvZiB0P251bGw6dCxuKTp1fSxuLnByZWNpc2lvbj1mdW5jdGlvbigpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoP246MH0sbn0sWm8uZ2VvLmludGVycG9sYXRlPWZ1bmN0aW9uKG4sdCl7cmV0
dXJuIHZyKG5bMF0qQWEsblsxXSpBYSx0WzBdKkFhLHRbMV0qQWEpfSxaby5nZW8ubGVuZ3RoPWZ1
bmN0aW9uKG4pe3JldHVybiBEYz0wLFpvLmdlby5zdHJlYW0obixQYyksRGN9O3ZhciBEYyxQYz17
c3BoZXJlOnYscG9pbnQ6dixsaW5lU3RhcnQ6ZHIsbGluZUVuZDp2LHBvbHlnb25TdGFydDp2LHBv
bHlnb25FbmQ6dn0sVWM9bXIoZnVuY3Rpb24obil7cmV0dXJuIE1hdGguc3FydCgyLygxK24pKX0s
ZnVuY3Rpb24obil7cmV0dXJuIDIqTWF0aC5hc2luKG4vMil9KTsoWm8uZ2VvLmF6aW11dGhhbEVx
dWFsQXJlYT1mdW5jdGlvbigpe3JldHVybiBucihVYyl9KS5yYXc9VWM7dmFyIGpjPW1yKGZ1bmN0
aW9uKG4pe3ZhciB0PU1hdGguYWNvcyhuKTtyZXR1cm4gdCYmdC9NYXRoLnNpbih0KX0sd3QpOyha
by5nZW8uYXppbXV0aGFsRXF1aWRpc3RhbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbnIoamMpfSkucmF3
PWpjLChaby5nZW8uY29uaWNDb25mb3JtYWw9ZnVuY3Rpb24oKXtyZXR1cm4gSGUoeXIpfSkucmF3
PXlyLChaby5nZW8uY29uaWNFcXVpZGlzdGFudD1mdW5jdGlvbigpe3JldHVybiBIZSh4cil9KS5y
YXc9eHI7dmFyIEhjPW1yKGZ1bmN0aW9uKG4pe3JldHVybiAxL259LE1hdGguYXRhbik7KFpvLmdl
by5nbm9tb25pYz1mdW5jdGlvbigpe3JldHVybiBucihIYyl9KS5yYXc9SGMsTXIuaW52ZXJ0PWZ1
bmN0aW9uKG4sdCl7cmV0dXJuW24sMipNYXRoLmF0YW4oTWF0aC5leHAodCkpLVNhXX0sKFpvLmdl
by5tZXJjYXRvcj1mdW5jdGlvbigpe3JldHVybiBfcihNcil9KS5yYXc9TXI7dmFyIEZjPW1yKGZ1
bmN0aW9uKCl7cmV0dXJuIDF9LE1hdGguYXNpbik7KFpvLmdlby5vcnRob2dyYXBoaWM9ZnVuY3Rp
b24oKXtyZXR1cm4gbnIoRmMpfSkucmF3PUZjO3ZhciBPYz1tcihmdW5jdGlvbihuKXtyZXR1cm4g
MS8oMStuKX0sZnVuY3Rpb24obil7cmV0dXJuIDIqTWF0aC5hdGFuKG4pfSk7KFpvLmdlby5zdGVy
ZW9ncmFwaGljPWZ1bmN0aW9uKCl7cmV0dXJuIG5yKE9jKX0pLnJhdz1PYyxici5pbnZlcnQ9ZnVu
Y3Rpb24obix0KXtyZXR1cm5bLXQsMipNYXRoLmF0YW4oTWF0aC5leHAobikpLVNhXX0sKFpvLmdl
by50cmFuc3ZlcnNlTWVyY2F0b3I9ZnVuY3Rpb24oKXt2YXIgbj1fcihiciksdD1uLmNlbnRlcixl
PW4ucm90YXRlO3JldHVybiBuLmNlbnRlcj1mdW5jdGlvbihuKXtyZXR1cm4gbj90KFstblsxXSxu
WzBdXSk6KG49dCgpLFtuWzFdLC1uWzBdXSl9LG4ucm90YXRlPWZ1bmN0aW9uKG4pe3JldHVybiBu
P2UoW25bMF0sblsxXSxuLmxlbmd0aD4yP25bMl0rOTA6OTBdKToobj1lKCksW25bMF0sblsxXSxu
WzJdLTkwXSl9LGUoWzAsMCw5MF0pfSkucmF3PWJyLFpvLmdlb209e30sWm8uZ2VvbS5odWxsPWZ1
bmN0aW9uKG4pe2Z1bmN0aW9uIHQobil7aWYobi5sZW5ndGg8MylyZXR1cm5bXTt2YXIgdCx1PWJ0
KGUpLGk9YnQociksbz1uLmxlbmd0aCxhPVtdLGM9W107Zm9yKHQ9MDtvPnQ7dCsrKWEucHVzaChb
K3UuY2FsbCh0aGlzLG5bdF0sdCksK2kuY2FsbCh0aGlzLG5bdF0sdCksdF0pO2ZvcihhLnNvcnQo
RXIpLHQ9MDtvPnQ7dCsrKWMucHVzaChbYVt0XVswXSwtYVt0XVsxXV0pO3ZhciBzPWtyKGEpLGw9
a3IoYyksZj1sWzBdPT09c1swXSxoPWxbbC5sZW5ndGgtMV09PT1zW3MubGVuZ3RoLTFdLGc9W107
Zm9yKHQ9cy5sZW5ndGgtMTt0Pj0wOy0tdClnLnB1c2goblthW3NbdF1dWzJdXSk7Zm9yKHQ9K2Y7
dDxsLmxlbmd0aC1oOysrdClnLnB1c2goblthW2xbdF1dWzJdXSk7cmV0dXJuIGd9dmFyIGU9d3Is
cj1TcjtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90KG4pOih0Lng9ZnVuY3Rpb24obil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGU9bix0KTplfSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHI9bix0KTpyfSx0KX0sWm8uZ2VvbS5wb2x5Z29uPWZ1bmN0aW9uKG4pe3Jl
dHVybiBzYShuLFljKSxufTt2YXIgWWM9Wm8uZ2VvbS5wb2x5Z29uLnByb3RvdHlwZT1bXTtZYy5h
cmVhPWZ1bmN0aW9uKCl7Zm9yKHZhciBuLHQ9LTEsZT10aGlzLmxlbmd0aCxyPXRoaXNbZS0xXSx1
PTA7Kyt0PGU7KW49cixyPXRoaXNbdF0sdSs9blsxXSpyWzBdLW5bMF0qclsxXTtyZXR1cm4uNSp1
fSxZYy5jZW50cm9pZD1mdW5jdGlvbihuKXt2YXIgdCxlLHI9LTEsdT10aGlzLmxlbmd0aCxpPTAs
bz0wLGE9dGhpc1t1LTFdO2Zvcihhcmd1bWVudHMubGVuZ3RofHwobj0tMS8oNip0aGlzLmFyZWEo
KSkpOysrcjx1Oyl0PWEsYT10aGlzW3JdLGU9dFswXSphWzFdLWFbMF0qdFsxXSxpKz0odFswXSth
WzBdKSplLG8rPSh0WzFdK2FbMV0pKmU7cmV0dXJuW2kqbixvKm5dfSxZYy5jbGlwPWZ1bmN0aW9u
KG4pe2Zvcih2YXIgdCxlLHIsdSxpLG8sYT1OcihuKSxjPS0xLHM9dGhpcy5sZW5ndGgtTnIodGhp
cyksbD10aGlzW3MtMV07KytjPHM7KXtmb3IodD1uLnNsaWNlKCksbi5sZW5ndGg9MCx1PXRoaXNb
Y10saT10WyhyPXQubGVuZ3RoLWEpLTFdLGU9LTE7KytlPHI7KW89dFtlXSxBcihvLGwsdSk/KEFy
KGksbCx1KXx8bi5wdXNoKENyKGksbyxsLHUpKSxuLnB1c2gobykpOkFyKGksbCx1KSYmbi5wdXNo
KENyKGksbyxsLHUpKSxpPW87YSYmbi5wdXNoKG5bMF0pLGw9dX1yZXR1cm4gbn07dmFyIEljLFpj
LFZjLFhjLCRjLEJjPVtdLFdjPVtdO1VyLnByb3RvdHlwZS5wcmVwYXJlPWZ1bmN0aW9uKCl7Zm9y
KHZhciBuLHQ9dGhpcy5lZGdlcyxlPXQubGVuZ3RoO2UtLTspbj10W2VdLmVkZ2Usbi5iJiZuLmF8
fHQuc3BsaWNlKGUsMSk7cmV0dXJuIHQuc29ydChIciksdC5sZW5ndGh9LFdyLnByb3RvdHlwZT17
c3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlLmw9PT10aGlzLnNpdGU/dGhpcy5lZGdl
LmE6dGhpcy5lZGdlLmJ9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZ2UubD09PXRoaXMu
c2l0ZT90aGlzLmVkZ2UuYjp0aGlzLmVkZ2UuYX19LEpyLnByb3RvdHlwZT17aW5zZXJ0OmZ1bmN0
aW9uKG4sdCl7dmFyIGUscix1O2lmKG4pe2lmKHQuUD1uLHQuTj1uLk4sbi5OJiYobi5OLlA9dCks
bi5OPXQsbi5SKXtmb3Iobj1uLlI7bi5MOyluPW4uTDtuLkw9dH1lbHNlIG4uUj10O2U9bn1lbHNl
IHRoaXMuXz8obj1udSh0aGlzLl8pLHQuUD1udWxsLHQuTj1uLG4uUD1uLkw9dCxlPW4pOih0LlA9
dC5OPW51bGwsdGhpcy5fPXQsZT1udWxsKTtmb3IodC5MPXQuUj1udWxsLHQuVT1lLHQuQz0hMCxu
PXQ7ZSYmZS5DOylyPWUuVSxlPT09ci5MPyh1PXIuUix1JiZ1LkM/KGUuQz11LkM9ITEsci5DPSEw
LG49cik6KG49PT1lLlImJihLcih0aGlzLGUpLG49ZSxlPW4uVSksZS5DPSExLHIuQz0hMCxRcih0
aGlzLHIpKSk6KHU9ci5MLHUmJnUuQz8oZS5DPXUuQz0hMSxyLkM9ITAsbj1yKToobj09PWUuTCYm
KFFyKHRoaXMsZSksbj1lLGU9bi5VKSxlLkM9ITEsci5DPSEwLEtyKHRoaXMscikpKSxlPW4uVTt0
aGlzLl8uQz0hMX0scmVtb3ZlOmZ1bmN0aW9uKG4pe24uTiYmKG4uTi5QPW4uUCksbi5QJiYobi5Q
Lk49bi5OKSxuLk49bi5QPW51bGw7dmFyIHQsZSxyLHU9bi5VLGk9bi5MLG89bi5SO2lmKGU9aT9v
P251KG8pOmk6byx1P3UuTD09PW4/dS5MPWU6dS5SPWU6dGhpcy5fPWUsaSYmbz8ocj1lLkMsZS5D
PW4uQyxlLkw9aSxpLlU9ZSxlIT09bz8odT1lLlUsZS5VPW4uVSxuPWUuUix1Lkw9bixlLlI9byxv
LlU9ZSk6KGUuVT11LHU9ZSxuPWUuUikpOihyPW4uQyxuPWUpLG4mJihuLlU9dSksIXIpe2lmKG4m
Jm4uQylyZXR1cm4gbi5DPSExLHZvaWQgMDtkb3tpZihuPT09dGhpcy5fKWJyZWFrO2lmKG49PT11
Lkwpe2lmKHQ9dS5SLHQuQyYmKHQuQz0hMSx1LkM9ITAsS3IodGhpcyx1KSx0PXUuUiksdC5MJiZ0
LkwuQ3x8dC5SJiZ0LlIuQyl7dC5SJiZ0LlIuQ3x8KHQuTC5DPSExLHQuQz0hMCxRcih0aGlzLHQp
LHQ9dS5SKSx0LkM9dS5DLHUuQz10LlIuQz0hMSxLcih0aGlzLHUpLG49dGhpcy5fO2JyZWFrfX1l
bHNlIGlmKHQ9dS5MLHQuQyYmKHQuQz0hMSx1LkM9ITAsUXIodGhpcyx1KSx0PXUuTCksdC5MJiZ0
LkwuQ3x8dC5SJiZ0LlIuQyl7dC5MJiZ0LkwuQ3x8KHQuUi5DPSExLHQuQz0hMCxLcih0aGlzLHQp
LHQ9dS5MKSx0LkM9dS5DLHUuQz10LkwuQz0hMSxRcih0aGlzLHUpLG49dGhpcy5fO2JyZWFrfXQu
Qz0hMCxuPXUsdT11LlV9d2hpbGUoIW4uQyk7biYmKG4uQz0hMSl9fX0sWm8uZ2VvbS52b3Jvbm9p
PWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHQobil7dmFyIHQ9bmV3IEFycmF5KG4ubGVuZ3RoKSxyPWFb
MF1bMF0sdT1hWzBdWzFdLGk9YVsxXVswXSxvPWFbMV1bMV07cmV0dXJuIHR1KGUobiksYSkuY2Vs
bHMuZm9yRWFjaChmdW5jdGlvbihlLGEpe3ZhciBjPWUuZWRnZXMscz1lLnNpdGUsbD10W2FdPWMu
bGVuZ3RoP2MubWFwKGZ1bmN0aW9uKG4pe3ZhciB0PW4uc3RhcnQoKTtyZXR1cm5bdC54LHQueV19
KTpzLng+PXImJnMueDw9aSYmcy55Pj11JiZzLnk8PW8/W1tyLG9dLFtpLG9dLFtpLHVdLFtyLHVd
XTpbXTtsLnBvaW50PW5bYV19KSx0fWZ1bmN0aW9uIGUobil7cmV0dXJuIG4ubWFwKGZ1bmN0aW9u
KG4sdCl7cmV0dXJue3g6TWF0aC5yb3VuZChpKG4sdCkva2EpKmthLHk6TWF0aC5yb3VuZChvKG4s
dCkva2EpKmthLGk6dH19KX12YXIgcj13cix1PVNyLGk9cixvPXUsYT1KYztyZXR1cm4gbj90KG4p
Oih0LmxpbmtzPWZ1bmN0aW9uKG4pe3JldHVybiB0dShlKG4pKS5lZGdlcy5maWx0ZXIoZnVuY3Rp
b24obil7cmV0dXJuIG4ubCYmbi5yfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybntzb3VyY2U6blt0
LmwuaV0sdGFyZ2V0Om5bdC5yLmldfX0pfSx0LnRyaWFuZ2xlcz1mdW5jdGlvbihuKXt2YXIgdD1b
XTtyZXR1cm4gdHUoZShuKSkuY2VsbHMuZm9yRWFjaChmdW5jdGlvbihlLHIpe2Zvcih2YXIgdSxp
LG89ZS5zaXRlLGE9ZS5lZGdlcy5zb3J0KEhyKSxjPS0xLHM9YS5sZW5ndGgsbD1hW3MtMV0uZWRn
ZSxmPWwubD09PW8/bC5yOmwubDsrK2M8czspdT1sLGk9ZixsPWFbY10uZWRnZSxmPWwubD09PW8/
bC5yOmwubCxyPGkuaSYmcjxmLmkmJnJ1KG8saSxmKTwwJiZ0LnB1c2goW25bcl0sbltpLmldLG5b
Zi5pXV0pfSksdH0sdC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWJ0
KHI9biksdCk6cn0sdC55PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWJ0
KHU9biksdCk6dX0sdC5jbGlwRXh0ZW50PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhhPW51bGw9PW4/SmM6bix0KTphPT09SmM/bnVsbDphfSx0LnNpemU9ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dC5jbGlwRXh0ZW50KG4mJltbMCwwXSxuXSk6YT09PUpj
P251bGw6YSYmYVsxXX0sdCl9O3ZhciBKYz1bWy0xZTYsLTFlNl0sWzFlNiwxZTZdXTtaby5nZW9t
LmRlbGF1bmF5PWZ1bmN0aW9uKG4pe3JldHVybiBaby5nZW9tLnZvcm9ub2koKS50cmlhbmdsZXMo
bil9LFpvLmdlb20ucXVhZHRyZWU9ZnVuY3Rpb24obix0LGUscix1KXtmdW5jdGlvbiBpKG4pe2Z1
bmN0aW9uIGkobix0LGUscix1LGksbyxhKXtpZighaXNOYU4oZSkmJiFpc05hTihyKSlpZihuLmxl
YWYpe3ZhciBjPW4ueCxsPW4ueTtpZihudWxsIT1jKWlmKHVhKGMtZSkrdWEobC1yKTwuMDEpcyhu
LHQsZSxyLHUsaSxvLGEpO2Vsc2V7dmFyIGY9bi5wb2ludDtuLng9bi55PW4ucG9pbnQ9bnVsbCxz
KG4sZixjLGwsdSxpLG8sYSkscyhuLHQsZSxyLHUsaSxvLGEpfWVsc2Ugbi54PWUsbi55PXIsbi5w
b2ludD10fWVsc2UgcyhuLHQsZSxyLHUsaSxvLGEpfWZ1bmN0aW9uIHMobix0LGUscix1LG8sYSxj
KXt2YXIgcz0uNSoodSthKSxsPS41KihvK2MpLGY9ZT49cyxoPXI+PWwsZz0oaDw8MSkrZjtuLmxl
YWY9ITEsbj1uLm5vZGVzW2ddfHwobi5ub2Rlc1tnXT1vdSgpKSxmP3U9czphPXMsaD9vPWw6Yz1s
LGkobix0LGUscix1LG8sYSxjKX12YXIgbCxmLGgsZyxwLHYsZCxtLHkseD1idChhKSxNPWJ0KGMp
O2lmKG51bGwhPXQpdj10LGQ9ZSxtPXIseT11O2Vsc2UgaWYobT15PS0odj1kPTEvMCksZj1bXSxo
PVtdLHA9bi5sZW5ndGgsbylmb3IoZz0wO3A+ZzsrK2cpbD1uW2ddLGwueDx2JiYodj1sLngpLGwu
eTxkJiYoZD1sLnkpLGwueD5tJiYobT1sLngpLGwueT55JiYoeT1sLnkpLGYucHVzaChsLngpLGgu
cHVzaChsLnkpO2Vsc2UgZm9yKGc9MDtwPmc7KytnKXt2YXIgXz0reChsPW5bZ10sZyksYj0rTShs
LGcpO3Y+XyYmKHY9XyksZD5iJiYoZD1iKSxfPm0mJihtPV8pLGI+eSYmKHk9YiksZi5wdXNoKF8p
LGgucHVzaChiKX12YXIgdz1tLXYsUz15LWQ7dz5TP3k9ZCt3Om09ditTO3ZhciBrPW91KCk7aWYo
ay5hZGQ9ZnVuY3Rpb24obil7aShrLG4sK3gobiwrK2cpLCtNKG4sZyksdixkLG0seSl9LGsudmlz
aXQ9ZnVuY3Rpb24obil7YXUobixrLHYsZCxtLHkpfSxnPS0xLG51bGw9PXQpe2Zvcig7KytnPHA7
KWkoayxuW2ddLGZbZ10saFtnXSx2LGQsbSx5KTstLWd9ZWxzZSBuLmZvckVhY2goay5hZGQpO3Jl
dHVybiBmPWg9bj1sPW51bGwsa312YXIgbyxhPXdyLGM9U3I7cmV0dXJuKG89YXJndW1lbnRzLmxl
bmd0aCk/KGE9dXUsYz1pdSwzPT09byYmKHU9ZSxyPXQsZT10PTApLGkobikpOihpLng9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bixpKTphfSxpLnk9ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9bixpKTpjfSxpLmV4dGVudD1mdW5jdGlvbihuKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09bj90PWU9cj11PW51bGw6KHQ9K25bMF1bMF0s
ZT0rblswXVsxXSxyPStuWzFdWzBdLHU9K25bMV1bMV0pLGkpOm51bGw9PXQ/bnVsbDpbW3QsZV0s
W3IsdV1dfSxpLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9
PW4/dD1lPXI9dT1udWxsOih0PWU9MCxyPStuWzBdLHU9K25bMV0pLGkpOm51bGw9PXQ/bnVsbDpb
ci10LHUtZV19LGkpfSxaby5pbnRlcnBvbGF0ZVJnYj1jdSxaby5pbnRlcnBvbGF0ZU9iamVjdD1z
dSxaby5pbnRlcnBvbGF0ZU51bWJlcj1sdSxaby5pbnRlcnBvbGF0ZVN0cmluZz1mdTt2YXIgR2M9
L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLEtjPW5ldyBSZWdF
eHAoR2Muc291cmNlLCJnIik7Wm8uaW50ZXJwb2xhdGU9aHUsWm8uaW50ZXJwb2xhdG9ycz1bZnVu
Y3Rpb24obix0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4oInN0cmluZyI9PT1lP0lhLmhhcyh0KXx8
L14oI3xyZ2JcKHxoc2xcKCkvLnRlc3QodCk/Y3U6ZnU6dCBpbnN0YW5jZW9mIGV0P2N1OkFycmF5
LmlzQXJyYXkodCk/Z3U6Im9iamVjdCI9PT1lJiZpc05hTih0KT9zdTpsdSkobix0KX1dLFpvLmlu
dGVycG9sYXRlQXJyYXk9Z3U7dmFyIFFjPWZ1bmN0aW9uKCl7cmV0dXJuIHd0fSxucz1aby5tYXAo
e2xpbmVhcjpRYyxwb2x5Ok11LHF1YWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbXV9LGN1YmljOmZ1bmN0
aW9uKCl7cmV0dXJuIHl1fSxzaW46ZnVuY3Rpb24oKXtyZXR1cm4gX3V9LGV4cDpmdW5jdGlvbigp
e3JldHVybiBidX0sY2lyY2xlOmZ1bmN0aW9uKCl7cmV0dXJuIHd1fSxlbGFzdGljOlN1LGJhY2s6
a3UsYm91bmNlOmZ1bmN0aW9uKCl7cmV0dXJuIEV1fX0pLHRzPVpvLm1hcCh7ImluIjp3dCxvdXQ6
dnUsImluLW91dCI6ZHUsIm91dC1pbiI6ZnVuY3Rpb24obil7cmV0dXJuIGR1KHZ1KG4pKX19KTta
by5lYXNlPWZ1bmN0aW9uKG4pe3ZhciB0PW4uaW5kZXhPZigiLSIpLGU9dD49MD9uLnN1YnN0cmlu
ZygwLHQpOm4scj10Pj0wP24uc3Vic3RyaW5nKHQrMSk6ImluIjtyZXR1cm4gZT1ucy5nZXQoZSl8
fFFjLHI9dHMuZ2V0KHIpfHx3dCxwdShyKGUuYXBwbHkobnVsbCxWby5jYWxsKGFyZ3VtZW50cywx
KSkpKX0sWm8uaW50ZXJwb2xhdGVIY2w9QXUsWm8uaW50ZXJwb2xhdGVIc2w9Q3UsWm8uaW50ZXJw
b2xhdGVMYWI9TnUsWm8uaW50ZXJwb2xhdGVSb3VuZD16dSxaby50cmFuc2Zvcm09ZnVuY3Rpb24o
bil7dmFyIHQ9JG8uY3JlYXRlRWxlbWVudE5TKFpvLm5zLnByZWZpeC5zdmcsImciKTtyZXR1cm4o
Wm8udHJhbnNmb3JtPWZ1bmN0aW9uKG4pe2lmKG51bGwhPW4pe3Quc2V0QXR0cmlidXRlKCJ0cmFu
c2Zvcm0iLG4pO3ZhciBlPXQudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKX1yZXR1cm4g
bmV3IEx1KGU/ZS5tYXRyaXg6ZXMpfSkobil9LEx1LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlv
bigpe3JldHVybiJ0cmFuc2xhdGUoIit0aGlzLnRyYW5zbGF0ZSsiKXJvdGF0ZSgiK3RoaXMucm90
YXRlKyIpc2tld1goIit0aGlzLnNrZXcrIilzY2FsZSgiK3RoaXMuc2NhbGUrIikifTt2YXIgZXM9
e2E6MSxiOjAsYzowLGQ6MSxlOjAsZjowfTtaby5pbnRlcnBvbGF0ZVRyYW5zZm9ybT1EdSxaby5s
YXlvdXQ9e30sWm8ubGF5b3V0LmJ1bmRsZT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihuKXtm
b3IodmFyIHQ9W10sZT0tMSxyPW4ubGVuZ3RoOysrZTxyOyl0LnB1c2goanUobltlXSkpO3JldHVy
biB0fX0sWm8ubGF5b3V0LmNob3JkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3ZhciBuLHMsZixo
LGcscD17fSx2PVtdLGQ9Wm8ucmFuZ2UoaSksbT1bXTtmb3IoZT1bXSxyPVtdLG49MCxoPS0xOysr
aDxpOyl7Zm9yKHM9MCxnPS0xOysrZzxpOylzKz11W2hdW2ddO3YucHVzaChzKSxtLnB1c2goWm8u
cmFuZ2UoaSkpLG4rPXN9Zm9yKG8mJmQuc29ydChmdW5jdGlvbihuLHQpe3JldHVybiBvKHZbbl0s
dlt0XSl9KSxhJiZtLmZvckVhY2goZnVuY3Rpb24obix0KXtuLnNvcnQoZnVuY3Rpb24obixlKXty
ZXR1cm4gYSh1W3RdW25dLHVbdF1bZV0pfSl9KSxuPSh3YS1sKmkpL24scz0wLGg9LTE7KytoPGk7
KXtmb3IoZj1zLGc9LTE7KytnPGk7KXt2YXIgeT1kW2hdLHg9bVt5XVtnXSxNPXVbeV1beF0sXz1z
LGI9cys9TSpuO3BbeSsiLSIreF09e2luZGV4Onksc3ViaW5kZXg6eCxzdGFydEFuZ2xlOl8sZW5k
QW5nbGU6Yix2YWx1ZTpNfX1yW3ldPXtpbmRleDp5LHN0YXJ0QW5nbGU6ZixlbmRBbmdsZTpzLHZh
bHVlOihzLWYpL259LHMrPWx9Zm9yKGg9LTE7KytoPGk7KWZvcihnPWgtMTsrK2c8aTspe3ZhciB3
PXBbaCsiLSIrZ10sUz1wW2crIi0iK2hdOyh3LnZhbHVlfHxTLnZhbHVlKSYmZS5wdXNoKHcudmFs
dWU8Uy52YWx1ZT97c291cmNlOlMsdGFyZ2V0Ond9Ontzb3VyY2U6dyx0YXJnZXQ6U30pfWMmJnQo
KX1mdW5jdGlvbiB0KCl7ZS5zb3J0KGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGMoKG4uc291cmNlLnZh
bHVlK24udGFyZ2V0LnZhbHVlKS8yLCh0LnNvdXJjZS52YWx1ZSt0LnRhcmdldC52YWx1ZSkvMil9
KX12YXIgZSxyLHUsaSxvLGEsYyxzPXt9LGw9MDtyZXR1cm4gcy5tYXRyaXg9ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9KHU9bikmJnUubGVuZ3RoLGU9cj1udWxsLHMpOnV9
LHMucGFkZGluZz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1uLGU9cj1u
dWxsLHMpOmx9LHMuc29ydEdyb3Vwcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8obz1uLGU9cj1udWxsLHMpOm99LHMuc29ydFN1Ymdyb3Vwcz1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oYT1uLGU9bnVsbCxzKTphfSxzLnNvcnRDaG9yZHM9ZnVuY3Rpb24o
bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9bixlJiZ0KCkscyk6Y30scy5jaG9yZHM9ZnVu
Y3Rpb24oKXtyZXR1cm4gZXx8bigpLGV9LHMuZ3JvdXBzPWZ1bmN0aW9uKCl7cmV0dXJuIHJ8fG4o
KSxyfSxzfSxaby5sYXlvdXQuZm9yY2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4pe3JldHVybiBm
dW5jdGlvbih0LGUscix1KXtpZih0LnBvaW50IT09bil7dmFyIGk9dC5jeC1uLngsbz10LmN5LW4u
eSxhPXUtZSxjPWkqaStvKm87aWYoYz5hKmEvZCl7aWYocD5jKXt2YXIgcz10LmNoYXJnZS9jO24u
cHgtPWkqcyxuLnB5LT1vKnN9cmV0dXJuITB9aWYodC5wb2ludCYmYyYmcD5jKXt2YXIgcz10LnBv
aW50Q2hhcmdlL2M7bi5weC09aSpzLG4ucHktPW8qc319cmV0dXJuIXQuY2hhcmdlfX1mdW5jdGlv
biB0KG4pe24ucHg9Wm8uZXZlbnQueCxuLnB5PVpvLmV2ZW50LnksYS5yZXN1bWUoKX12YXIgZSxy
LHUsaSxvLGE9e30sYz1aby5kaXNwYXRjaCgic3RhcnQiLCJ0aWNrIiwiZW5kIikscz1bMSwxXSxs
PS45LGY9cnMsaD11cyxnPS0zMCxwPWlzLHY9LjEsZD0uNjQsbT1bXSx5PVtdO3JldHVybiBhLnRp
Y2s9ZnVuY3Rpb24oKXtpZigocio9Ljk5KTwuMDA1KXJldHVybiBjLmVuZCh7dHlwZToiZW5kIixh
bHBoYTpyPTB9KSwhMDt2YXIgdCxlLGEsZixoLHAsZCx4LE0sXz1tLmxlbmd0aCxiPXkubGVuZ3Ro
O2ZvcihlPTA7Yj5lOysrZSlhPXlbZV0sZj1hLnNvdXJjZSxoPWEudGFyZ2V0LHg9aC54LWYueCxN
PWgueS1mLnksKHA9eCp4K00qTSkmJihwPXIqaVtlXSooKHA9TWF0aC5zcXJ0KHApKS11W2VdKS9w
LHgqPXAsTSo9cCxoLngtPXgqKGQ9Zi53ZWlnaHQvKGgud2VpZ2h0K2Yud2VpZ2h0KSksaC55LT1N
KmQsZi54Kz14KihkPTEtZCksZi55Kz1NKmQpO2lmKChkPXIqdikmJih4PXNbMF0vMixNPXNbMV0v
MixlPS0xLGQpKWZvcig7KytlPF87KWE9bVtlXSxhLngrPSh4LWEueCkqZCxhLnkrPShNLWEueSkq
ZDtpZihnKWZvcihWdSh0PVpvLmdlb20ucXVhZHRyZWUobSkscixvKSxlPS0xOysrZTxfOykoYT1t
W2VdKS5maXhlZHx8dC52aXNpdChuKGEpKTtmb3IoZT0tMTsrK2U8XzspYT1tW2VdLGEuZml4ZWQ/
KGEueD1hLnB4LGEueT1hLnB5KTooYS54LT0oYS5weC0oYS5weD1hLngpKSpsLGEueS09KGEucHkt
KGEucHk9YS55KSkqbCk7Yy50aWNrKHt0eXBlOiJ0aWNrIixhbHBoYTpyfSl9LGEubm9kZXM9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09bixhKTptfSxhLmxpbmtzPWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PW4sYSk6eX0sYS5zaXplPWZ1bmN0aW9u
KG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPW4sYSk6c30sYS5saW5rRGlzdGFuY2U9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ImZ1bmN0aW9uIj09dHlwZW9mIG4/
bjorbixhKTpmfSxhLmRpc3RhbmNlPWEubGlua0Rpc3RhbmNlLGEubGlua1N0cmVuZ3RoPWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246
K24sYSk6aH0sYS5mcmljdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
bD0rbixhKTpsfSxhLmNoYXJnZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Zz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOituLGEpOmd9LGEuY2hhcmdlRGlzdGFuY2U9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9bipuLGEpOk1hdGguc3FydChwKX0sYS5n
cmF2aXR5PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PStuLGEpOnZ9LGEu
dGhldGE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9bipuLGEpOk1hdGgu
c3FydChkKX0sYS5hbHBoYT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0r
bixyP3I9bj4wP246MDpuPjAmJihjLnN0YXJ0KHt0eXBlOiJzdGFydCIsYWxwaGE6cj1ufSksWm8u
dGltZXIoYS50aWNrKSksYSk6cn0sYS5zdGFydD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixyKXtp
ZighZSl7Zm9yKGU9bmV3IEFycmF5KGMpLGE9MDtjPmE7KythKWVbYV09W107Zm9yKGE9MDtzPmE7
KythKXt2YXIgdT15W2FdO2VbdS5zb3VyY2UuaW5kZXhdLnB1c2godS50YXJnZXQpLGVbdS50YXJn
ZXQuaW5kZXhdLnB1c2godS5zb3VyY2UpfX1mb3IodmFyIGksbz1lW3RdLGE9LTEscz1vLmxlbmd0
aDsrK2E8czspaWYoIWlzTmFOKGk9b1thXVtuXSkpcmV0dXJuIGk7cmV0dXJuIE1hdGgucmFuZG9t
KCkqcn12YXIgdCxlLHIsYz1tLmxlbmd0aCxsPXkubGVuZ3RoLHA9c1swXSx2PXNbMV07Zm9yKHQ9
MDtjPnQ7Kyt0KShyPW1bdF0pLmluZGV4PXQsci53ZWlnaHQ9MDtmb3IodD0wO2w+dDsrK3Qpcj15
W3RdLCJudW1iZXIiPT10eXBlb2Ygci5zb3VyY2UmJihyLnNvdXJjZT1tW3Iuc291cmNlXSksIm51
bWJlciI9PXR5cGVvZiByLnRhcmdldCYmKHIudGFyZ2V0PW1bci50YXJnZXRdKSwrK3Iuc291cmNl
LndlaWdodCwrK3IudGFyZ2V0LndlaWdodDtmb3IodD0wO2M+dDsrK3Qpcj1tW3RdLGlzTmFOKHIu
eCkmJihyLng9bigieCIscCkpLGlzTmFOKHIueSkmJihyLnk9bigieSIsdikpLGlzTmFOKHIucHgp
JiYoci5weD1yLngpLGlzTmFOKHIucHkpJiYoci5weT1yLnkpO2lmKHU9W10sImZ1bmN0aW9uIj09
dHlwZW9mIGYpZm9yKHQ9MDtsPnQ7Kyt0KXVbdF09K2YuY2FsbCh0aGlzLHlbdF0sdCk7ZWxzZSBm
b3IodD0wO2w+dDsrK3QpdVt0XT1mO2lmKGk9W10sImZ1bmN0aW9uIj09dHlwZW9mIGgpZm9yKHQ9
MDtsPnQ7Kyt0KWlbdF09K2guY2FsbCh0aGlzLHlbdF0sdCk7ZWxzZSBmb3IodD0wO2w+dDsrK3Qp
aVt0XT1oO2lmKG89W10sImZ1bmN0aW9uIj09dHlwZW9mIGcpZm9yKHQ9MDtjPnQ7Kyt0KW9bdF09
K2cuY2FsbCh0aGlzLG1bdF0sdCk7ZWxzZSBmb3IodD0wO2M+dDsrK3Qpb1t0XT1nO3JldHVybiBh
LnJlc3VtZSgpfSxhLnJlc3VtZT1mdW5jdGlvbigpe3JldHVybiBhLmFscGhhKC4xKX0sYS5zdG9w
PWZ1bmN0aW9uKCl7cmV0dXJuIGEuYWxwaGEoMCl9LGEuZHJhZz1mdW5jdGlvbigpe3JldHVybiBl
fHwoZT1aby5iZWhhdmlvci5kcmFnKCkub3JpZ2luKHd0KS5vbigiZHJhZ3N0YXJ0LmZvcmNlIixP
dSkub24oImRyYWcuZm9yY2UiLHQpLm9uKCJkcmFnZW5kLmZvcmNlIixZdSkpLGFyZ3VtZW50cy5s
ZW5ndGg/KHRoaXMub24oIm1vdXNlb3Zlci5mb3JjZSIsSXUpLm9uKCJtb3VzZW91dC5mb3JjZSIs
WnUpLmNhbGwoZSksdm9pZCAwKTplfSxaby5yZWJpbmQoYSxjLCJvbiIpfTt2YXIgcnM9MjAsdXM9
MSxpcz0xLzA7Wm8ubGF5b3V0LmhpZXJhcmNoeT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odSl7dmFy
IGksbz1bdV0sYT1bXTtmb3IodS5kZXB0aD0wO251bGwhPShpPW8ucG9wKCkpOylpZihhLnB1c2go
aSksKHM9ZS5jYWxsKG4saSxpLmRlcHRoKSkmJihjPXMubGVuZ3RoKSl7Zm9yKHZhciBjLHMsbDst
LWM+PTA7KW8ucHVzaChsPXNbY10pLGwucGFyZW50PWksbC5kZXB0aD1pLmRlcHRoKzE7ciYmKGku
dmFsdWU9MCksaS5jaGlsZHJlbj1zfWVsc2UgciYmKGkudmFsdWU9K3IuY2FsbChuLGksaS5kZXB0
aCl8fDApLGRlbGV0ZSBpLmNoaWxkcmVuO3JldHVybiBCdSh1LGZ1bmN0aW9uKG4pe3ZhciBlLHU7
dCYmKGU9bi5jaGlsZHJlbikmJmUuc29ydCh0KSxyJiYodT1uLnBhcmVudCkmJih1LnZhbHVlKz1u
LnZhbHVlKX0pLGF9dmFyIHQ9R3UsZT1XdSxyPUp1O3JldHVybiBuLnNvcnQ9ZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0fSxuLmNoaWxkcmVuPWZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsbik6ZX0sbi52YWx1ZT1mdW5jdGlvbih0KXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LG4ucmV2YWx1ZT1mdW5jdGlvbih0KXty
ZXR1cm4gciYmKCR1KHQsZnVuY3Rpb24obil7bi5jaGlsZHJlbiYmKG4udmFsdWU9MCl9KSxCdSh0
LGZ1bmN0aW9uKHQpe3ZhciBlO3QuY2hpbGRyZW58fCh0LnZhbHVlPStyLmNhbGwobix0LHQuZGVw
dGgpfHwwKSwoZT10LnBhcmVudCkmJihlLnZhbHVlKz10LnZhbHVlKX0pKSx0fSxufSxaby5sYXlv
dXQucGFydGl0aW9uPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0LGUscix1KXt2YXIgaT10LmNoaWxk
cmVuO2lmKHQueD1lLHQueT10LmRlcHRoKnUsdC5keD1yLHQuZHk9dSxpJiYobz1pLmxlbmd0aCkp
e3ZhciBvLGEsYyxzPS0xO2ZvcihyPXQudmFsdWU/ci90LnZhbHVlOjA7KytzPG87KW4oYT1pW3Nd
LGUsYz1hLnZhbHVlKnIsdSksZSs9Y319ZnVuY3Rpb24gdChuKXt2YXIgZT1uLmNoaWxkcmVuLHI9
MDtpZihlJiYodT1lLmxlbmd0aCkpZm9yKHZhciB1LGk9LTE7KytpPHU7KXI9TWF0aC5tYXgocix0
KGVbaV0pKTtyZXR1cm4gMStyfWZ1bmN0aW9uIGUoZSxpKXt2YXIgbz1yLmNhbGwodGhpcyxlLGkp
O3JldHVybiBuKG9bMF0sMCx1WzBdLHVbMV0vdChvWzBdKSksb312YXIgcj1aby5sYXlvdXQuaGll
cmFyY2h5KCksdT1bMSwxXTtyZXR1cm4gZS5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh1PW4sZSk6dX0sWHUoZSxyKX0sWm8ubGF5b3V0LnBpZT1mdW5jdGlvbigpe2Z1
bmN0aW9uIG4oaSl7dmFyIG89aS5tYXAoZnVuY3Rpb24oZSxyKXtyZXR1cm4rdC5jYWxsKG4sZSxy
KX0pLGE9KygiZnVuY3Rpb24iPT10eXBlb2Ygcj9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpyKSxj
PSgoImZ1bmN0aW9uIj09dHlwZW9mIHU/dS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dSktYSkvWm8u
c3VtKG8pLHM9Wm8ucmFuZ2UoaS5sZW5ndGgpO251bGwhPWUmJnMuc29ydChlPT09b3M/ZnVuY3Rp
b24obix0KXtyZXR1cm4gb1t0XS1vW25dfTpmdW5jdGlvbihuLHQpe3JldHVybiBlKGlbbl0saVt0
XSl9KTt2YXIgbD1bXTtyZXR1cm4gcy5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciB0O2xbbl09e2Rh
dGE6aVtuXSx2YWx1ZTp0PW9bbl0sc3RhcnRBbmdsZTphLGVuZEFuZ2xlOmErPXQqY319KSxsfXZh
ciB0PU51bWJlcixlPW9zLHI9MCx1PXdhO3JldHVybiBuLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbik6dH0sbi5zb3J0PWZ1bmN0aW9uKHQpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhlPXQsbik6ZX0sbi5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbik6cn0sbi5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LG4pOnV9LG59O3ZhciBvcz17fTtaby5sYXlvdXQuc3Rh
Y2s9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGEsYyl7dmFyIHM9YS5tYXAoZnVuY3Rpb24oZSxyKXty
ZXR1cm4gdC5jYWxsKG4sZSxyKX0pLGw9cy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQubWFwKGZ1
bmN0aW9uKHQsZSl7cmV0dXJuW2kuY2FsbChuLHQsZSksby5jYWxsKG4sdCxlKV19KX0pLGY9ZS5j
YWxsKG4sbCxjKTtzPVpvLnBlcm11dGUocyxmKSxsPVpvLnBlcm11dGUobCxmKTt2YXIgaCxnLHAs
dj1yLmNhbGwobixsLGMpLGQ9cy5sZW5ndGgsbT1zWzBdLmxlbmd0aDtmb3IoZz0wO20+ZzsrK2cp
Zm9yKHUuY2FsbChuLHNbMF1bZ10scD12W2ddLGxbMF1bZ11bMV0pLGg9MTtkPmg7KytoKXUuY2Fs
bChuLHNbaF1bZ10scCs9bFtoLTFdW2ddWzFdLGxbaF1bZ11bMV0pO3JldHVybiBhfXZhciB0PXd0
LGU9ZWkscj1yaSx1PXRpLGk9UXUsbz1uaTtyZXR1cm4gbi52YWx1ZXM9ZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0fSxuLm9yZGVyPWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6YXMuZ2V0KHQpfHxl
aSxuKTplfSxuLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0i
ZnVuY3Rpb24iPT10eXBlb2YgdD90OmNzLmdldCh0KXx8cmksbik6cn0sbi54PWZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQsbik6aX0sbi55PWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhvPXQsbik6b30sbi5vdXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHU9dCxuKTp1fSxufTt2YXIgYXM9Wm8ubWFwKHsiaW5zaWRlLW91dCI6
ZnVuY3Rpb24obil7dmFyIHQsZSxyPW4ubGVuZ3RoLHU9bi5tYXAodWkpLGk9bi5tYXAoaWkpLG89
Wm8ucmFuZ2Uocikuc29ydChmdW5jdGlvbihuLHQpe3JldHVybiB1W25dLXVbdF19KSxhPTAsYz0w
LHM9W10sbD1bXTtmb3IodD0wO3I+dDsrK3QpZT1vW3RdLGM+YT8oYSs9aVtlXSxzLnB1c2goZSkp
OihjKz1pW2VdLGwucHVzaChlKSk7cmV0dXJuIGwucmV2ZXJzZSgpLmNvbmNhdChzKX0scmV2ZXJz
ZTpmdW5jdGlvbihuKXtyZXR1cm4gWm8ucmFuZ2Uobi5sZW5ndGgpLnJldmVyc2UoKX0sImRlZmF1
bHQiOmVpfSksY3M9Wm8ubWFwKHtzaWxob3VldHRlOmZ1bmN0aW9uKG4pe3ZhciB0LGUscix1PW4u
bGVuZ3RoLGk9blswXS5sZW5ndGgsbz1bXSxhPTAsYz1bXTtmb3IoZT0wO2k+ZTsrK2Upe2Zvcih0
PTAscj0wO3U+dDt0Kyspcis9blt0XVtlXVsxXTtyPmEmJihhPXIpLG8ucHVzaChyKX1mb3IoZT0w
O2k+ZTsrK2UpY1tlXT0oYS1vW2VdKS8yO3JldHVybiBjfSx3aWdnbGU6ZnVuY3Rpb24obil7dmFy
IHQsZSxyLHUsaSxvLGEsYyxzLGw9bi5sZW5ndGgsZj1uWzBdLGg9Zi5sZW5ndGgsZz1bXTtmb3Io
Z1swXT1jPXM9MCxlPTE7aD5lOysrZSl7Zm9yKHQ9MCx1PTA7bD50OysrdCl1Kz1uW3RdW2VdWzFd
O2Zvcih0PTAsaT0wLGE9ZltlXVswXS1mW2UtMV1bMF07bD50OysrdCl7Zm9yKHI9MCxvPShuW3Rd
W2VdWzFdLW5bdF1bZS0xXVsxXSkvKDIqYSk7dD5yOysrcilvKz0obltyXVtlXVsxXS1uW3JdW2Ut
MV1bMV0pL2E7aSs9bypuW3RdW2VdWzFdfWdbZV09Yy09dT9pL3UqYTowLHM+YyYmKHM9Yyl9Zm9y
KGU9MDtoPmU7KytlKWdbZV0tPXM7cmV0dXJuIGd9LGV4cGFuZDpmdW5jdGlvbihuKXt2YXIgdCxl
LHIsdT1uLmxlbmd0aCxpPW5bMF0ubGVuZ3RoLG89MS91LGE9W107Zm9yKGU9MDtpPmU7KytlKXtm
b3IodD0wLHI9MDt1PnQ7dCsrKXIrPW5bdF1bZV1bMV07aWYocilmb3IodD0wO3U+dDt0Kyspblt0
XVtlXVsxXS89cjtlbHNlIGZvcih0PTA7dT50O3QrKyluW3RdW2VdWzFdPW99Zm9yKGU9MDtpPmU7
KytlKWFbZV09MDtyZXR1cm4gYX0semVybzpyaX0pO1pvLmxheW91dC5oaXN0b2dyYW09ZnVuY3Rp
b24oKXtmdW5jdGlvbiBuKG4saSl7Zm9yKHZhciBvLGEsYz1bXSxzPW4ubWFwKGUsdGhpcyksbD1y
LmNhbGwodGhpcyxzLGkpLGY9dS5jYWxsKHRoaXMsbCxzLGkpLGk9LTEsaD1zLmxlbmd0aCxnPWYu
bGVuZ3RoLTEscD10PzE6MS9oOysraTxnOylvPWNbaV09W10sby5keD1mW2krMV0tKG8ueD1mW2ld
KSxvLnk9MDtpZihnPjApZm9yKGk9LTE7KytpPGg7KWE9c1tpXSxhPj1sWzBdJiZhPD1sWzFdJiYo
bz1jW1pvLmJpc2VjdChmLGEsMSxnKS0xXSxvLnkrPXAsby5wdXNoKG5baV0pKTtyZXR1cm4gY312
YXIgdD0hMCxlPU51bWJlcixyPXNpLHU9YWk7cmV0dXJuIG4udmFsdWU9ZnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhyPWJ0KHQpLG4pOnJ9LG4uYmlucz1mdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8odT0ibnVtYmVyIj09dHlwZW9mIHQ/ZnVuY3Rpb24obil7cmV0
dXJuIGNpKG4sdCl9OmJ0KHQpLG4pOnV9LG4uZnJlcXVlbmN5PWZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh0PSEhZSxuKTp0fSxufSxaby5sYXlvdXQucGFjaz1mdW5jdGlvbigp
e2Z1bmN0aW9uIG4obixpKXt2YXIgbz1lLmNhbGwodGhpcyxuLGkpLGE9b1swXSxjPXVbMF0scz11
WzFdLGw9bnVsbD09dD9NYXRoLnNxcnQ6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmdW5jdGlvbigp
e3JldHVybiB0fTtpZihhLng9YS55PTAsQnUoYSxmdW5jdGlvbihuKXtuLnI9K2wobi52YWx1ZSl9
KSxCdShhLHBpKSxyKXt2YXIgZj1yKih0PzE6TWF0aC5tYXgoMiphLnIvYywyKmEuci9zKSkvMjtC
dShhLGZ1bmN0aW9uKG4pe24ucis9Zn0pLEJ1KGEscGkpLEJ1KGEsZnVuY3Rpb24obil7bi5yLT1m
fSl9cmV0dXJuIG1pKGEsYy8yLHMvMix0PzE6MS9NYXRoLm1heCgyKmEuci9jLDIqYS5yL3MpKSxv
fXZhciB0LGU9Wm8ubGF5b3V0LmhpZXJhcmNoeSgpLnNvcnQobGkpLHI9MCx1PVsxLDFdO3JldHVy
biBuLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxuKTp1fSxu
LnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1udWxsPT1lfHwi
ZnVuY3Rpb24iPT10eXBlb2YgZT9lOitlLG4pOnR9LG4ucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdCxuKTpyfSxYdShuLGUpfSxaby5sYXlvdXQudHJlZT1m
dW5jdGlvbigpe2Z1bmN0aW9uIG4obix1KXt2YXIgbD1vLmNhbGwodGhpcyxuLHUpLGY9bFswXSxo
PXQoZik7aWYoQnUoaCxlKSxoLnBhcmVudC5tPS1oLnosJHUoaCxyKSxzKSR1KGYsaSk7ZWxzZXt2
YXIgZz1mLHA9Zix2PWY7JHUoZixmdW5jdGlvbihuKXtuLng8Zy54JiYoZz1uKSxuLng+cC54JiYo
cD1uKSxuLmRlcHRoPnYuZGVwdGgmJih2PW4pfSk7dmFyIGQ9YShnLHApLzItZy54LG09Y1swXS8o
cC54K2EocCxnKS8yK2QpLHk9Y1sxXS8odi5kZXB0aHx8MSk7JHUoZixmdW5jdGlvbihuKXtuLng9
KG4ueCtkKSptLG4ueT1uLmRlcHRoKnl9KX1yZXR1cm4gbH1mdW5jdGlvbiB0KG4pe2Zvcih2YXIg
dCxlPXtBOm51bGwsY2hpbGRyZW46W25dfSxyPVtlXTtudWxsIT0odD1yLnBvcCgpKTspZm9yKHZh
ciB1LGk9dC5jaGlsZHJlbixvPTAsYT1pLmxlbmd0aDthPm87KytvKXIucHVzaCgoaVtvXT11PXtf
Omlbb10scGFyZW50OnQsY2hpbGRyZW46KHU9aVtvXS5jaGlsZHJlbikmJnUuc2xpY2UoKXx8W10s
QTpudWxsLGE6bnVsbCx6OjAsbTowLGM6MCxzOjAsdDpudWxsLGk6b30pLmE9dSk7cmV0dXJuIGUu
Y2hpbGRyZW5bMF19ZnVuY3Rpb24gZShuKXt2YXIgdD1uLmNoaWxkcmVuLGU9bi5wYXJlbnQuY2hp
bGRyZW4scj1uLmk/ZVtuLmktMV06bnVsbDtpZih0Lmxlbmd0aCl7d2kobik7dmFyIGk9KHRbMF0u
eit0W3QubGVuZ3RoLTFdLnopLzI7cj8obi56PXIueithKG4uXyxyLl8pLG4ubT1uLnotaSk6bi56
PWl9ZWxzZSByJiYobi56PXIueithKG4uXyxyLl8pKTtuLnBhcmVudC5BPXUobixyLG4ucGFyZW50
LkF8fGVbMF0pfWZ1bmN0aW9uIHIobil7bi5fLng9bi56K24ucGFyZW50Lm0sbi5tKz1uLnBhcmVu
dC5tfWZ1bmN0aW9uIHUobix0LGUpe2lmKHQpe2Zvcih2YXIgcix1PW4saT1uLG89dCxjPXUucGFy
ZW50LmNoaWxkcmVuWzBdLHM9dS5tLGw9aS5tLGY9by5tLGg9Yy5tO289X2kobyksdT1NaSh1KSxv
JiZ1OyljPU1pKGMpLGk9X2koaSksaS5hPW4scj1vLnorZi11LnotcythKG8uXyx1Ll8pLHI+MCYm
KGJpKFNpKG8sbixlKSxuLHIpLHMrPXIsbCs9ciksZis9by5tLHMrPXUubSxoKz1jLm0sbCs9aS5t
O28mJiFfaShpKSYmKGkudD1vLGkubSs9Zi1sKSx1JiYhTWkoYykmJihjLnQ9dSxjLm0rPXMtaCxl
PW4pfXJldHVybiBlfWZ1bmN0aW9uIGkobil7bi54Kj1jWzBdLG4ueT1uLmRlcHRoKmNbMV19dmFy
IG89Wm8ubGF5b3V0LmhpZXJhcmNoeSgpLnNvcnQobnVsbCkudmFsdWUobnVsbCksYT14aSxjPVsx
LDFdLHM9bnVsbDtyZXR1cm4gbi5zZXBhcmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhhPXQsbik6YX0sbi5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhzPW51bGw9PShjPXQpP2k6bnVsbCxuKTpzP251bGw6Y30sbi5ub2RlU2l6ZT1mdW5j
dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxsPT0oYz10KT9udWxsOmksbik6
cz9jOm51bGx9LFh1KG4sbyl9LFpvLmxheW91dC5jbHVzdGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
bihuLGkpe3ZhciBvLGE9dC5jYWxsKHRoaXMsbixpKSxjPWFbMF0scz0wO0J1KGMsZnVuY3Rpb24o
bil7dmFyIHQ9bi5jaGlsZHJlbjt0JiZ0Lmxlbmd0aD8obi54PUVpKHQpLG4ueT1raSh0KSk6KG4u
eD1vP3MrPWUobixvKTowLG4ueT0wLG89bil9KTt2YXIgbD1BaShjKSxmPUNpKGMpLGg9bC54LWUo
bCxmKS8yLGc9Zi54K2UoZixsKS8yO3JldHVybiBCdShjLHU/ZnVuY3Rpb24obil7bi54PShuLngt
Yy54KSpyWzBdLG4ueT0oYy55LW4ueSkqclsxXX06ZnVuY3Rpb24obil7bi54PShuLngtaCkvKGct
aCkqclswXSxuLnk9KDEtKGMueT9uLnkvYy55OjEpKSpyWzFdfSksYX12YXIgdD1aby5sYXlvdXQu
aGllcmFyY2h5KCkuc29ydChudWxsKS52YWx1ZShudWxsKSxlPXhpLHI9WzEsMV0sdT0hMTtyZXR1
cm4gbi5zZXBhcmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQs
bik6ZX0sbi5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PW51bGw9
PShyPXQpLG4pOnU/bnVsbDpyfSxuLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh1PW51bGwhPShyPXQpLG4pOnU/cjpudWxsfSxYdShuLHQpfSxaby5sYXlvdXQu
dHJlZW1hcD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obix0KXtmb3IodmFyIGUscix1PS0xLGk9bi5s
ZW5ndGg7Kyt1PGk7KXI9KGU9blt1XSkudmFsdWUqKDA+dD8wOnQpLGUuYXJlYT1pc05hTihyKXx8
MD49cj8wOnJ9ZnVuY3Rpb24gdChlKXt2YXIgaT1lLmNoaWxkcmVuO2lmKGkmJmkubGVuZ3RoKXt2
YXIgbyxhLGMscz1mKGUpLGw9W10saD1pLnNsaWNlKCkscD0xLzAsdj0ic2xpY2UiPT09Zz9zLmR4
OiJkaWNlIj09PWc/cy5keToic2xpY2UtZGljZSI9PT1nPzEmZS5kZXB0aD9zLmR5OnMuZHg6TWF0
aC5taW4ocy5keCxzLmR5KTtmb3IobihoLHMuZHgqcy5keS9lLnZhbHVlKSxsLmFyZWE9MDsoYz1o
Lmxlbmd0aCk+MDspbC5wdXNoKG89aFtjLTFdKSxsLmFyZWErPW8uYXJlYSwic3F1YXJpZnkiIT09
Z3x8KGE9cihsLHYpKTw9cD8oaC5wb3AoKSxwPWEpOihsLmFyZWEtPWwucG9wKCkuYXJlYSx1KGws
dixzLCExKSx2PU1hdGgubWluKHMuZHgscy5keSksbC5sZW5ndGg9bC5hcmVhPTAscD0xLzApO2wu
bGVuZ3RoJiYodShsLHYscywhMCksbC5sZW5ndGg9bC5hcmVhPTApLGkuZm9yRWFjaCh0KX19ZnVu
Y3Rpb24gZSh0KXt2YXIgcj10LmNoaWxkcmVuO2lmKHImJnIubGVuZ3RoKXt2YXIgaSxvPWYodCks
YT1yLnNsaWNlKCksYz1bXTtmb3IobihhLG8uZHgqby5keS90LnZhbHVlKSxjLmFyZWE9MDtpPWEu
cG9wKCk7KWMucHVzaChpKSxjLmFyZWErPWkuYXJlYSxudWxsIT1pLnomJih1KGMsaS56P28uZHg6
by5keSxvLCFhLmxlbmd0aCksYy5sZW5ndGg9Yy5hcmVhPTApO3IuZm9yRWFjaChlKX19ZnVuY3Rp
b24gcihuLHQpe2Zvcih2YXIgZSxyPW4uYXJlYSx1PTAsaT0xLzAsbz0tMSxhPW4ubGVuZ3RoOysr
bzxhOykoZT1uW29dLmFyZWEpJiYoaT5lJiYoaT1lKSxlPnUmJih1PWUpKTtyZXR1cm4gcio9cix0
Kj10LHI/TWF0aC5tYXgodCp1KnAvcixyLyh0KmkqcCkpOjEvMH1mdW5jdGlvbiB1KG4sdCxlLHIp
e3ZhciB1LGk9LTEsbz1uLmxlbmd0aCxhPWUueCxzPWUueSxsPXQ/YyhuLmFyZWEvdCk6MDtpZih0
PT1lLmR4KXtmb3IoKHJ8fGw+ZS5keSkmJihsPWUuZHkpOysraTxvOyl1PW5baV0sdS54PWEsdS55
PXMsdS5keT1sLGErPXUuZHg9TWF0aC5taW4oZS54K2UuZHgtYSxsP2ModS5hcmVhL2wpOjApO3Uu
ej0hMCx1LmR4Kz1lLngrZS5keC1hLGUueSs9bCxlLmR5LT1sfWVsc2V7Zm9yKChyfHxsPmUuZHgp
JiYobD1lLmR4KTsrK2k8bzspdT1uW2ldLHUueD1hLHUueT1zLHUuZHg9bCxzKz11LmR5PU1hdGgu
bWluKGUueStlLmR5LXMsbD9jKHUuYXJlYS9sKTowKTt1Lno9ITEsdS5keSs9ZS55K2UuZHktcyxl
LngrPWwsZS5keC09bH19ZnVuY3Rpb24gaShyKXt2YXIgdT1vfHxhKHIpLGk9dVswXTtyZXR1cm4g
aS54PTAsaS55PTAsaS5keD1zWzBdLGkuZHk9c1sxXSxvJiZhLnJldmFsdWUoaSksbihbaV0saS5k
eCppLmR5L2kudmFsdWUpLChvP2U6dCkoaSksaCYmKG89dSksdX12YXIgbyxhPVpvLmxheW91dC5o
aWVyYXJjaHkoKSxjPU1hdGgucm91bmQscz1bMSwxXSxsPW51bGwsZj1OaSxoPSExLGc9InNxdWFy
aWZ5IixwPS41KigxK01hdGguc3FydCg1KSk7cmV0dXJuIGkuc2l6ZT1mdW5jdGlvbihuKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1uLGkpOnN9LGkucGFkZGluZz1mdW5jdGlvbihuKXtmdW5j
dGlvbiB0KHQpe3ZhciBlPW4uY2FsbChpLHQsdC5kZXB0aCk7cmV0dXJuIG51bGw9PWU/TmkodCk6
emkodCwibnVtYmVyIj09dHlwZW9mIGU/W2UsZSxlLGVdOmUpfWZ1bmN0aW9uIGUodCl7cmV0dXJu
IHppKHQsbil9aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGw7dmFyIHI7cmV0dXJuIGY9bnVs
bD09KGw9bik/Tmk6ImZ1bmN0aW9uIj09KHI9dHlwZW9mIG4pP3Q6Im51bWJlciI9PT1yPyhuPVtu
LG4sbixuXSxlKTplLGl9LGkucm91bmQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGM9bj9NYXRoLnJvdW5kOk51bWJlcixpKTpjIT1OdW1iZXJ9LGkuc3RpY2t5PWZ1bmN0aW9u
KG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPW4sbz1udWxsLGkpOmh9LGkucmF0aW89ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9bixpKTpwfSxpLm1vZGU9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9bisiIixpKTpnfSxYdShpLGEpfSxaby5y
YW5kb209e25vcm1hbDpmdW5jdGlvbihuLHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJu
IDI+ZSYmKHQ9MSksMT5lJiYobj0wKSxmdW5jdGlvbigpe3ZhciBlLHIsdTtkbyBlPTIqTWF0aC5y
YW5kb20oKS0xLHI9MipNYXRoLnJhbmRvbSgpLTEsdT1lKmUrcipyO3doaWxlKCF1fHx1PjEpO3Jl
dHVybiBuK3QqZSpNYXRoLnNxcnQoLTIqTWF0aC5sb2codSkvdSl9fSxsb2dOb3JtYWw6ZnVuY3Rp
b24oKXt2YXIgbj1aby5yYW5kb20ubm9ybWFsLmFwcGx5KFpvLGFyZ3VtZW50cyk7cmV0dXJuIGZ1
bmN0aW9uKCl7cmV0dXJuIE1hdGguZXhwKG4oKSl9fSxiYXRlczpmdW5jdGlvbihuKXt2YXIgdD1a
by5yYW5kb20uaXJ3aW5IYWxsKG4pO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KCkvbn19LGly
d2luSGFsbDpmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPTA7bj5l
O2UrKyl0Kz1NYXRoLnJhbmRvbSgpO3JldHVybiB0fX19LFpvLnNjYWxlPXt9O3ZhciBzcz17Zmxv
b3I6d3QsY2VpbDp3dH07Wm8uc2NhbGUubGluZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIFVpKFswLDFd
LFswLDFdLGh1LCExKX07dmFyIGxzPXtzOjEsZzoxLHA6MSxyOjEsZToxfTtaby5zY2FsZS5sb2c9
ZnVuY3Rpb24oKXtyZXR1cm4gVmkoWm8uc2NhbGUubGluZWFyKCkuZG9tYWluKFswLDFdKSwxMCwh
MCxbMSwxMF0pfTt2YXIgZnM9Wm8uZm9ybWF0KCIuMGUiKSxocz17Zmxvb3I6ZnVuY3Rpb24obil7
cmV0dXJuLU1hdGguY2VpbCgtbil9LGNlaWw6ZnVuY3Rpb24obil7cmV0dXJuLU1hdGguZmxvb3Io
LW4pfX07Wm8uc2NhbGUucG93PWZ1bmN0aW9uKCl7cmV0dXJuIFhpKFpvLnNjYWxlLmxpbmVhcigp
LDEsWzAsMV0pfSxaby5zY2FsZS5zcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIFpvLnNjYWxlLnBvdygp
LmV4cG9uZW50KC41KX0sWm8uc2NhbGUub3JkaW5hbD1mdW5jdGlvbigpe3JldHVybiBCaShbXSx7
dDoicmFuZ2UiLGE6W1tdXX0pfSxaby5zY2FsZS5jYXRlZ29yeTEwPWZ1bmN0aW9uKCl7cmV0dXJu
IFpvLnNjYWxlLm9yZGluYWwoKS5yYW5nZShncyl9LFpvLnNjYWxlLmNhdGVnb3J5MjA9ZnVuY3Rp
b24oKXtyZXR1cm4gWm8uc2NhbGUub3JkaW5hbCgpLnJhbmdlKHBzKX0sWm8uc2NhbGUuY2F0ZWdv
cnkyMGI9ZnVuY3Rpb24oKXtyZXR1cm4gWm8uc2NhbGUub3JkaW5hbCgpLnJhbmdlKHZzKX0sWm8u
c2NhbGUuY2F0ZWdvcnkyMGM9ZnVuY3Rpb24oKXtyZXR1cm4gWm8uc2NhbGUub3JkaW5hbCgpLnJh
bmdlKGRzKX07dmFyIGdzPVsyMDYyMjYwLDE2NzQ0MjA2LDI5MjQ1ODgsMTQwMzQ3MjgsOTcyNTg4
NSw5MTk3MTMxLDE0OTA3MzMwLDgzNTU3MTEsMTIzNjkxODYsMTU1NjE3NV0ubWFwKHZ0KSxwcz1b
MjA2MjI2MCwxMTQ1NDQ0MCwxNjc0NDIwNiwxNjc1OTY3MiwyOTI0NTg4LDEwMDE4Njk4LDE0MDM0
NzI4LDE2NzUwNzQyLDk3MjU4ODUsMTI5NTU4NjEsOTE5NzEzMSwxMjg4NTE0MCwxNDkwNzMzMCwx
NjIzNDE5NCw4MzU1NzExLDEzMDkyODA3LDEyMzY5MTg2LDE0NDA4NTg5LDE1NTYxNzUsMTA0MTA3
MjVdLm1hcCh2dCksdnM9WzM3NTA3NzcsNTM5NTYxOSw3MDQwNzE5LDEwMjY0Mjg2LDY1MTkwOTcs
OTIxNjU5NCwxMTkxNTExNSwxMzU1NjYzNiw5MjAyOTkzLDEyNDI2ODA5LDE1MTg2NTE0LDE1MTkw
OTMyLDg2NjYxNjksMTEzNTY0OTAsMTQwNDk2NDMsMTUxNzczNzIsODA3NzY4MywxMDgzNDMyNCwx
MzUyODUwOSwxNDU4OTY1NF0ubWFwKHZ0KSxkcz1bMzI0NDczMyw3MDU3MTEwLDEwNDA2NjI1LDEz
MDMyNDMxLDE1MDk1MDUzLDE2NjE2NzY0LDE2NjI1MjU5LDE2NjM0MDE4LDMyNTMwNzYsNzY1MjQ3
MCwxMDYwNzAwMywxMzEwMTUwNCw3Njk1MjgxLDEwMzk0MzEyLDEyMzY5MzcyLDE0MzQyODkxLDY1
MTM1MDcsOTg2ODk1MCwxMjQzNDg3NywxNDI3NzA4MV0ubWFwKHZ0KTtaby5zY2FsZS5xdWFudGls
ZT1mdW5jdGlvbigpe3JldHVybiBXaShbXSxbXSl9LFpvLnNjYWxlLnF1YW50aXplPWZ1bmN0aW9u
KCl7cmV0dXJuIEppKDAsMSxbMCwxXSl9LFpvLnNjYWxlLnRocmVzaG9sZD1mdW5jdGlvbigpe3Jl
dHVybiBHaShbLjVdLFswLDFdKX0sWm8uc2NhbGUuaWRlbnRpdHk9ZnVuY3Rpb24oKXtyZXR1cm4g
S2koWzAsMV0pfSxaby5zdmc9e30sWm8uc3ZnLmFyYz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt2
YXIgbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLG89
ci5hcHBseSh0aGlzLGFyZ3VtZW50cykrbXMsYT11LmFwcGx5KHRoaXMsYXJndW1lbnRzKSttcyxj
PShvPmEmJihjPW8sbz1hLGE9YyksYS1vKSxzPWJhPmM/IjAiOiIxIixsPU1hdGguY29zKG8pLGY9
TWF0aC5zaW4obyksaD1NYXRoLmNvcyhhKSxnPU1hdGguc2luKGEpOwotcmV0dXJuIGM+PXlzP24/
Ik0wLCIraSsiQSIraSsiLCIraSsiIDAgMSwxIDAsIistaSsiQSIraSsiLCIraSsiIDAgMSwxIDAs
IitpKyJNMCwiK24rIkEiK24rIiwiK24rIiAwIDEsMCAwLCIrLW4rIkEiK24rIiwiK24rIiAwIDEs
MCAwLCIrbisiWiI6Ik0wLCIraSsiQSIraSsiLCIraSsiIDAgMSwxIDAsIistaSsiQSIraSsiLCIr
aSsiIDAgMSwxIDAsIitpKyJaIjpuPyJNIitpKmwrIiwiK2kqZisiQSIraSsiLCIraSsiIDAgIitz
KyIsMSAiK2kqaCsiLCIraSpnKyJMIituKmgrIiwiK24qZysiQSIrbisiLCIrbisiIDAgIitzKyIs
MCAiK24qbCsiLCIrbipmKyJaIjoiTSIraSpsKyIsIitpKmYrIkEiK2krIiwiK2krIiAwICIrcysi
LDEgIitpKmgrIiwiK2kqZysiTDAsMCIrIloifXZhciB0PVFpLGU9bm8scj10byx1PWVvO3JldHVy
biBuLmlubmVyUmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWJ0
KGUpLG4pOnR9LG4ub3V0ZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGU9YnQodCksbik6ZX0sbi5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhyPWJ0KHQpLG4pOnJ9LG4uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHU9YnQodCksbik6dX0sbi5jZW50cm9pZD1mdW5jdGlvbigpe3ZhciBu
PSh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMixpPShy
LmFwcGx5KHRoaXMsYXJndW1lbnRzKSt1LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMittcztyZXR1
cm5bTWF0aC5jb3MoaSkqbixNYXRoLnNpbihpKSpuXX0sbn07dmFyIG1zPS1TYSx5cz13YS1rYTta
by5zdmcubGluZT1mdW5jdGlvbigpe3JldHVybiBybyh3dCl9O3ZhciB4cz1aby5tYXAoe2xpbmVh
cjp1bywibGluZWFyLWNsb3NlZCI6aW8sc3RlcDpvbywic3RlcC1iZWZvcmUiOmFvLCJzdGVwLWFm
dGVyIjpjbyxiYXNpczpwbywiYmFzaXMtb3BlbiI6dm8sImJhc2lzLWNsb3NlZCI6bW8sYnVuZGxl
OnlvLGNhcmRpbmFsOmZvLCJjYXJkaW5hbC1vcGVuIjpzbywiY2FyZGluYWwtY2xvc2VkIjpsbyxt
b25vdG9uZTpTb30pO3hzLmZvckVhY2goZnVuY3Rpb24obix0KXt0LmtleT1uLHQuY2xvc2VkPS8t
Y2xvc2VkJC8udGVzdChuKX0pO3ZhciBNcz1bMCwyLzMsMS8zLDBdLF9zPVswLDEvMywyLzMsMF0s
YnM9WzAsMS82LDIvMywxLzZdO1pvLnN2Zy5saW5lLnJhZGlhbD1mdW5jdGlvbigpe3ZhciBuPXJv
KGtvKTtyZXR1cm4gbi5yYWRpdXM9bi54LGRlbGV0ZSBuLngsbi5hbmdsZT1uLnksZGVsZXRlIG4u
eSxufSxhby5yZXZlcnNlPWNvLGNvLnJldmVyc2U9YW8sWm8uc3ZnLmFyZWE9ZnVuY3Rpb24oKXty
ZXR1cm4gRW8od3QpfSxaby5zdmcuYXJlYS5yYWRpYWw9ZnVuY3Rpb24oKXt2YXIgbj1Fbyhrbyk7
cmV0dXJuIG4ucmFkaXVzPW4ueCxkZWxldGUgbi54LG4uaW5uZXJSYWRpdXM9bi54MCxkZWxldGUg
bi54MCxuLm91dGVyUmFkaXVzPW4ueDEsZGVsZXRlIG4ueDEsbi5hbmdsZT1uLnksZGVsZXRlIG4u
eSxuLnN0YXJ0QW5nbGU9bi55MCxkZWxldGUgbi55MCxuLmVuZEFuZ2xlPW4ueTEsZGVsZXRlIG4u
eTEsbn0sWm8uc3ZnLmNob3JkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLGEpe3ZhciBjPXQodGhp
cyxpLG4sYSkscz10KHRoaXMsbyxuLGEpO3JldHVybiJNIitjLnAwK3IoYy5yLGMucDEsYy5hMS1j
LmEwKSsoZShjLHMpP3UoYy5yLGMucDEsYy5yLGMucDApOnUoYy5yLGMucDEscy5yLHMucDApK3Io
cy5yLHMucDEscy5hMS1zLmEwKSt1KHMucixzLnAxLGMucixjLnAwKSkrIloifWZ1bmN0aW9uIHQo
bix0LGUscil7dmFyIHU9dC5jYWxsKG4sZSxyKSxpPWEuY2FsbChuLHUsciksbz1jLmNhbGwobix1
LHIpK21zLGw9cy5jYWxsKG4sdSxyKSttcztyZXR1cm57cjppLGEwOm8sYTE6bCxwMDpbaSpNYXRo
LmNvcyhvKSxpKk1hdGguc2luKG8pXSxwMTpbaSpNYXRoLmNvcyhsKSxpKk1hdGguc2luKGwpXX19
ZnVuY3Rpb24gZShuLHQpe3JldHVybiBuLmEwPT10LmEwJiZuLmExPT10LmExfWZ1bmN0aW9uIHIo
bix0LGUpe3JldHVybiJBIituKyIsIituKyIgMCAiKyArKGU+YmEpKyIsMSAiK3R9ZnVuY3Rpb24g
dShuLHQsZSxyKXtyZXR1cm4iUSAwLDAgIityfXZhciBpPWdyLG89cHIsYT1BbyxjPXRvLHM9ZW87
cmV0dXJuIG4ucmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWJ0
KHQpLG4pOmF9LG4uc291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhp
PWJ0KHQpLG4pOml9LG4udGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhvPWJ0KHQpLG4pOm99LG4uc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oYz1idCh0KSxuKTpjfSxuLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhzPWJ0KHQpLG4pOnN9LG59LFpvLnN2Zy5kaWFnb25hbD1mdW5jdGlvbigp
e2Z1bmN0aW9uIG4obix1KXt2YXIgaT10LmNhbGwodGhpcyxuLHUpLG89ZS5jYWxsKHRoaXMsbix1
KSxhPShpLnkrby55KS8yLGM9W2kse3g6aS54LHk6YX0se3g6by54LHk6YX0sb107cmV0dXJuIGM9
Yy5tYXAociksIk0iK2NbMF0rIkMiK2NbMV0rIiAiK2NbMl0rIiAiK2NbM119dmFyIHQ9Z3IsZT1w
cixyPUNvO3JldHVybiBuLnNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odD1idChlKSxuKTp0fSxuLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oZT1idCh0KSxuKTplfSxuLnByb2plY3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxufSxaby5zdmcuZGlhZ29uYWwucmFkaWFsPWZ1bmN0aW9u
KCl7dmFyIG49Wm8uc3ZnLmRpYWdvbmFsKCksdD1DbyxlPW4ucHJvamVjdGlvbjtyZXR1cm4gbi5w
cm9qZWN0aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoTm8odD1uKSk6
dH0sbn0sWm8uc3ZnLnN5bWJvbD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixyKXtyZXR1cm4od3Mu
Z2V0KHQuY2FsbCh0aGlzLG4scikpfHxUbykoZS5jYWxsKHRoaXMsbixyKSl9dmFyIHQ9TG8sZT16
bztyZXR1cm4gbi50eXBlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWJ0
KGUpLG4pOnR9LG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1i
dCh0KSxuKTplfSxufTt2YXIgd3M9Wm8ubWFwKHtjaXJjbGU6VG8sY3Jvc3M6ZnVuY3Rpb24obil7
dmFyIHQ9TWF0aC5zcXJ0KG4vNSkvMjtyZXR1cm4iTSIrLTMqdCsiLCIrLXQrIkgiKy10KyJWIist
Myp0KyJIIit0KyJWIistdCsiSCIrMyp0KyJWIit0KyJIIit0KyJWIiszKnQrIkgiKy10KyJWIit0
KyJIIistMyp0KyJaIn0sZGlhbW9uZDpmdW5jdGlvbihuKXt2YXIgdD1NYXRoLnNxcnQobi8oMipB
cykpLGU9dCpBcztyZXR1cm4iTTAsIistdCsiTCIrZSsiLDAiKyIgMCwiK3QrIiAiKy1lKyIsMCIr
IloifSxzcXVhcmU6ZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5zcXJ0KG4pLzI7cmV0dXJuIk0iKy10
KyIsIistdCsiTCIrdCsiLCIrLXQrIiAiK3QrIiwiK3QrIiAiKy10KyIsIit0KyJaIn0sInRyaWFu
Z2xlLWRvd24iOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChuL0VzKSxlPXQqRXMvMjtyZXR1
cm4iTTAsIitlKyJMIit0KyIsIistZSsiICIrLXQrIiwiKy1lKyJaIn0sInRyaWFuZ2xlLXVwIjpm
dW5jdGlvbihuKXt2YXIgdD1NYXRoLnNxcnQobi9FcyksZT10KkVzLzI7cmV0dXJuIk0wLCIrLWUr
IkwiK3QrIiwiK2UrIiAiKy10KyIsIitlKyJaIn19KTtaby5zdmcuc3ltYm9sVHlwZXM9d3Mua2V5
cygpO3ZhciBTcyxrcyxFcz1NYXRoLnNxcnQoMyksQXM9TWF0aC50YW4oMzAqQWEpLENzPVtdLE5z
PTA7Q3MuY2FsbD1wYS5jYWxsLENzLmVtcHR5PXBhLmVtcHR5LENzLm5vZGU9cGEubm9kZSxDcy5z
aXplPXBhLnNpemUsWm8udHJhbnNpdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD9Tcz9uLnRyYW5zaXRpb24oKTpuOm1hLnRyYW5zaXRpb24oKX0sWm8udHJhbnNpdGlvbi5w
cm90b3R5cGU9Q3MsQ3Muc2VsZWN0PWZ1bmN0aW9uKG4pe3ZhciB0LGUscix1PXRoaXMuaWQsaT1b
XTtuPWIobik7Zm9yKHZhciBvPS0xLGE9dGhpcy5sZW5ndGg7KytvPGE7KXtpLnB1c2godD1bXSk7
Zm9yKHZhciBjPXRoaXNbb10scz0tMSxsPWMubGVuZ3RoOysrczxsOykocj1jW3NdKSYmKGU9bi5j
YWxsKHIsci5fX2RhdGFfXyxzLG8pKT8oIl9fZGF0YV9fImluIHImJihlLl9fZGF0YV9fPXIuX19k
YXRhX18pLFBvKGUscyx1LHIuX190cmFuc2l0aW9uX19bdV0pLHQucHVzaChlKSk6dC5wdXNoKG51
bGwpfXJldHVybiBxbyhpLHUpfSxDcy5zZWxlY3RBbGw9ZnVuY3Rpb24obil7dmFyIHQsZSxyLHUs
aSxvPXRoaXMuaWQsYT1bXTtuPXcobik7Zm9yKHZhciBjPS0xLHM9dGhpcy5sZW5ndGg7KytjPHM7
KWZvcih2YXIgbD10aGlzW2NdLGY9LTEsaD1sLmxlbmd0aDsrK2Y8aDspaWYocj1sW2ZdKXtpPXIu
X190cmFuc2l0aW9uX19bb10sZT1uLmNhbGwocixyLl9fZGF0YV9fLGYsYyksYS5wdXNoKHQ9W10p
O2Zvcih2YXIgZz0tMSxwPWUubGVuZ3RoOysrZzxwOykodT1lW2ddKSYmUG8odSxnLG8saSksdC5w
dXNoKHUpfXJldHVybiBxbyhhLG8pfSxDcy5maWx0ZXI9ZnVuY3Rpb24obil7dmFyIHQsZSxyLHU9
W107ImZ1bmN0aW9uIiE9dHlwZW9mIG4mJihuPVIobikpO2Zvcih2YXIgaT0wLG89dGhpcy5sZW5n
dGg7bz5pO2krKyl7dS5wdXNoKHQ9W10pO2Zvcih2YXIgZT10aGlzW2ldLGE9MCxjPWUubGVuZ3Ro
O2M+YTthKyspKHI9ZVthXSkmJm4uY2FsbChyLHIuX19kYXRhX18sYSxpKSYmdC5wdXNoKHIpfXJl
dHVybiBxbyh1LHRoaXMuaWQpfSxDcy50d2Vlbj1mdW5jdGlvbihuLHQpe3ZhciBlPXRoaXMuaWQ7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj90aGlzLm5vZGUoKS5fX3RyYW5zaXRpb25fX1tlXS50
d2Vlbi5nZXQobik6UCh0aGlzLG51bGw9PXQ/ZnVuY3Rpb24odCl7dC5fX3RyYW5zaXRpb25fX1tl
XS50d2Vlbi5yZW1vdmUobil9OmZ1bmN0aW9uKHIpe3IuX190cmFuc2l0aW9uX19bZV0udHdlZW4u
c2V0KG4sdCl9KX0sQ3MuYXR0cj1mdW5jdGlvbihuLHQpe2Z1bmN0aW9uIGUoKXt0aGlzLnJlbW92
ZUF0dHJpYnV0ZShhKX1mdW5jdGlvbiByKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhhLnNwYWNl
LGEubG9jYWwpfWZ1bmN0aW9uIHUobil7cmV0dXJuIG51bGw9PW4/ZToobis9IiIsZnVuY3Rpb24o
KXt2YXIgdCxlPXRoaXMuZ2V0QXR0cmlidXRlKGEpO3JldHVybiBlIT09biYmKHQ9byhlLG4pLGZ1
bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlKGEsdChuKSl9KX0pfWZ1bmN0aW9uIGkobil7cmV0
dXJuIG51bGw9PW4/cjoobis9IiIsZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuZ2V0QXR0cmlidXRl
TlMoYS5zcGFjZSxhLmxvY2FsKTtyZXR1cm4gZSE9PW4mJih0PW8oZSxuKSxmdW5jdGlvbihuKXt0
aGlzLnNldEF0dHJpYnV0ZU5TKGEuc3BhY2UsYS5sb2NhbCx0KG4pKX0pfSl9aWYoYXJndW1lbnRz
Lmxlbmd0aDwyKXtmb3IodCBpbiBuKXRoaXMuYXR0cih0LG5bdF0pO3JldHVybiB0aGlzfXZhciBv
PSJ0cmFuc2Zvcm0iPT1uP0R1Omh1LGE9Wm8ubnMucXVhbGlmeShuKTtyZXR1cm4gUm8odGhpcywi
YXR0ci4iK24sdCxhLmxvY2FsP2k6dSl9LENzLmF0dHJUd2Vlbj1mdW5jdGlvbihuLHQpe2Z1bmN0
aW9uIGUobixlKXt2YXIgcj10LmNhbGwodGhpcyxuLGUsdGhpcy5nZXRBdHRyaWJ1dGUodSkpO3Jl
dHVybiByJiZmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZSh1LHIobikpfX1mdW5jdGlvbiBy
KG4sZSl7dmFyIHI9dC5jYWxsKHRoaXMsbixlLHRoaXMuZ2V0QXR0cmlidXRlTlModS5zcGFjZSx1
LmxvY2FsKSk7cmV0dXJuIHImJmZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModS5zcGFj
ZSx1LmxvY2FsLHIobikpfX12YXIgdT1aby5ucy5xdWFsaWZ5KG4pO3JldHVybiB0aGlzLnR3ZWVu
KCJhdHRyLiIrbix1LmxvY2FsP3I6ZSl9LENzLnN0eWxlPWZ1bmN0aW9uKG4sdCxlKXtmdW5jdGlv
biByKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKX1mdW5jdGlvbiB1KHQpe3JldHVybiBu
dWxsPT10P3I6KHQrPSIiLGZ1bmN0aW9uKCl7dmFyIHIsdT1Xby5nZXRDb21wdXRlZFN0eWxlKHRo
aXMsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShuKTtyZXR1cm4gdSE9PXQmJihyPWh1KHUsdCksZnVu
Y3Rpb24odCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLHIodCksZSl9KX0pfXZhciBpPWFyZ3Vt
ZW50cy5sZW5ndGg7aWYoMz5pKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pezI+aSYmKHQ9IiIpO2Zv
cihlIGluIG4pdGhpcy5zdHlsZShlLG5bZV0sdCk7cmV0dXJuIHRoaXN9ZT0iIn1yZXR1cm4gUm8o
dGhpcywic3R5bGUuIituLHQsdSl9LENzLnN0eWxlVHdlZW49ZnVuY3Rpb24obix0LGUpe2Z1bmN0
aW9uIHIocix1KXt2YXIgaT10LmNhbGwodGhpcyxyLHUsV28uZ2V0Q29tcHV0ZWRTdHlsZSh0aGlz
LG51bGwpLmdldFByb3BlcnR5VmFsdWUobikpO3JldHVybiBpJiZmdW5jdGlvbih0KXt0aGlzLnN0
eWxlLnNldFByb3BlcnR5KG4saSh0KSxlKX19cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MyYmKGU9
IiIpLHRoaXMudHdlZW4oInN0eWxlLiIrbixyKX0sQ3MudGV4dD1mdW5jdGlvbihuKXtyZXR1cm4g
Um8odGhpcywidGV4dCIsbixEbyl9LENzLnJlbW92ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVh
Y2goImVuZC50cmFuc2l0aW9uIixmdW5jdGlvbigpe3ZhciBuO3RoaXMuX190cmFuc2l0aW9uX18u
Y291bnQ8MiYmKG49dGhpcy5wYXJlbnROb2RlKSYmbi5yZW1vdmVDaGlsZCh0aGlzKX0pfSxDcy5l
YXNlPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMuaWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MT90
aGlzLm5vZGUoKS5fX3RyYW5zaXRpb25fX1t0XS5lYXNlOigiZnVuY3Rpb24iIT10eXBlb2YgbiYm
KG49Wm8uZWFzZS5hcHBseShabyxhcmd1bWVudHMpKSxQKHRoaXMsZnVuY3Rpb24oZSl7ZS5fX3Ry
YW5zaXRpb25fX1t0XS5lYXNlPW59KSl9LENzLmRlbGF5PWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMu
aWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MT90aGlzLm5vZGUoKS5fX3RyYW5zaXRpb25fX1t0
XS5kZWxheTpQKHRoaXMsImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVuY3Rpb24oZSxyLHUpe2UuX190
cmFuc2l0aW9uX19bdF0uZGVsYXk9K24uY2FsbChlLGUuX19kYXRhX18scix1KX06KG49K24sZnVu
Y3Rpb24oZSl7ZS5fX3RyYW5zaXRpb25fX1t0XS5kZWxheT1ufSkpfSxDcy5kdXJhdGlvbj1mdW5j
dGlvbihuKXt2YXIgdD10aGlzLmlkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/dGhpcy5ub2Rl
KCkuX190cmFuc2l0aW9uX19bdF0uZHVyYXRpb246UCh0aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiBu
P2Z1bmN0aW9uKGUscix1KXtlLl9fdHJhbnNpdGlvbl9fW3RdLmR1cmF0aW9uPU1hdGgubWF4KDEs
bi5jYWxsKGUsZS5fX2RhdGFfXyxyLHUpKX06KG49TWF0aC5tYXgoMSxuKSxmdW5jdGlvbihlKXtl
Ll9fdHJhbnNpdGlvbl9fW3RdLmR1cmF0aW9uPW59KSl9LENzLmVhY2g9ZnVuY3Rpb24obix0KXt2
YXIgZT10aGlzLmlkO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIHI9a3MsdT1TcztTcz1lLFAo
dGhpcyxmdW5jdGlvbih0LHIsdSl7a3M9dC5fX3RyYW5zaXRpb25fX1tlXSxuLmNhbGwodCx0Ll9f
ZGF0YV9fLHIsdSl9KSxrcz1yLFNzPXV9ZWxzZSBQKHRoaXMsZnVuY3Rpb24ocil7dmFyIHU9ci5f
X3RyYW5zaXRpb25fX1tlXTsodS5ldmVudHx8KHUuZXZlbnQ9Wm8uZGlzcGF0Y2goInN0YXJ0Iiwi
ZW5kIikpKS5vbihuLHQpfSk7cmV0dXJuIHRoaXN9LENzLnRyYW5zaXRpb249ZnVuY3Rpb24oKXtm
b3IodmFyIG4sdCxlLHIsdT10aGlzLmlkLGk9KytOcyxvPVtdLGE9MCxjPXRoaXMubGVuZ3RoO2M+
YTthKyspe28ucHVzaChuPVtdKTtmb3IodmFyIHQ9dGhpc1thXSxzPTAsbD10Lmxlbmd0aDtsPnM7
cysrKShlPXRbc10pJiYocj1PYmplY3QuY3JlYXRlKGUuX190cmFuc2l0aW9uX19bdV0pLHIuZGVs
YXkrPXIuZHVyYXRpb24sUG8oZSxzLGkscikpLG4ucHVzaChlKX1yZXR1cm4gcW8obyxpKX0sWm8u
c3ZnLmF4aXM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4pe24uZWFjaChmdW5jdGlvbigpe3ZhciBu
LHM9Wm8uc2VsZWN0KHRoaXMpLGw9dGhpcy5fX2NoYXJ0X198fGUsZj10aGlzLl9fY2hhcnRfXz1l
LmNvcHkoKSxoPW51bGw9PWM/Zi50aWNrcz9mLnRpY2tzLmFwcGx5KGYsYSk6Zi5kb21haW4oKTpj
LGc9bnVsbD09dD9mLnRpY2tGb3JtYXQ/Zi50aWNrRm9ybWF0LmFwcGx5KGYsYSk6d3Q6dCxwPXMu
c2VsZWN0QWxsKCIudGljayIpLmRhdGEoaCxmKSx2PXAuZW50ZXIoKS5pbnNlcnQoImciLCIuZG9t
YWluIikuYXR0cigiY2xhc3MiLCJ0aWNrIikuc3R5bGUoIm9wYWNpdHkiLGthKSxkPVpvLnRyYW5z
aXRpb24ocC5leGl0KCkpLnN0eWxlKCJvcGFjaXR5IixrYSkucmVtb3ZlKCksbT1aby50cmFuc2l0
aW9uKHAub3JkZXIoKSkuc3R5bGUoIm9wYWNpdHkiLDEpLHk9VGkoZikseD1zLnNlbGVjdEFsbCgi
LmRvbWFpbiIpLmRhdGEoWzBdKSxNPSh4LmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xh
c3MiLCJkb21haW4iKSxaby50cmFuc2l0aW9uKHgpKTt2LmFwcGVuZCgibGluZSIpLHYuYXBwZW5k
KCJ0ZXh0Iik7dmFyIF89di5zZWxlY3QoImxpbmUiKSxiPW0uc2VsZWN0KCJsaW5lIiksdz1wLnNl
bGVjdCgidGV4dCIpLnRleHQoZyksUz12LnNlbGVjdCgidGV4dCIpLGs9bS5zZWxlY3QoInRleHQi
KTtzd2l0Y2gocil7Y2FzZSJib3R0b20iOm49VW8sXy5hdHRyKCJ5MiIsdSksUy5hdHRyKCJ5IixN
YXRoLm1heCh1LDApK28pLGIuYXR0cigieDIiLDApLmF0dHIoInkyIix1KSxrLmF0dHIoIngiLDAp
LmF0dHIoInkiLE1hdGgubWF4KHUsMCkrbyksdy5hdHRyKCJkeSIsIi43MWVtIikuc3R5bGUoInRl
eHQtYW5jaG9yIiwibWlkZGxlIiksTS5hdHRyKCJkIiwiTSIreVswXSsiLCIraSsiVjBIIit5WzFd
KyJWIitpKTticmVhaztjYXNlInRvcCI6bj1VbyxfLmF0dHIoInkyIiwtdSksUy5hdHRyKCJ5Iiwt
KE1hdGgubWF4KHUsMCkrbykpLGIuYXR0cigieDIiLDApLmF0dHIoInkyIiwtdSksay5hdHRyKCJ4
IiwwKS5hdHRyKCJ5IiwtKE1hdGgubWF4KHUsMCkrbykpLHcuYXR0cigiZHkiLCIwZW0iKS5zdHls
ZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxNLmF0dHIoImQiLCJNIit5WzBdKyIsIistaSsiVjBI
Iit5WzFdKyJWIistaSk7YnJlYWs7Y2FzZSJsZWZ0IjpuPWpvLF8uYXR0cigieDIiLC11KSxTLmF0
dHIoIngiLC0oTWF0aC5tYXgodSwwKStvKSksYi5hdHRyKCJ4MiIsLXUpLmF0dHIoInkyIiwwKSxr
LmF0dHIoIngiLC0oTWF0aC5tYXgodSwwKStvKSkuYXR0cigieSIsMCksdy5hdHRyKCJkeSIsIi4z
MmVtIikuc3R5bGUoInRleHQtYW5jaG9yIiwiZW5kIiksTS5hdHRyKCJkIiwiTSIrLWkrIiwiK3lb
MF0rIkgwViIreVsxXSsiSCIrLWkpO2JyZWFrO2Nhc2UicmlnaHQiOm49am8sXy5hdHRyKCJ4MiIs
dSksUy5hdHRyKCJ4IixNYXRoLm1heCh1LDApK28pLGIuYXR0cigieDIiLHUpLmF0dHIoInkyIiww
KSxrLmF0dHIoIngiLE1hdGgubWF4KHUsMCkrbykuYXR0cigieSIsMCksdy5hdHRyKCJkeSIsIi4z
MmVtIikuc3R5bGUoInRleHQtYW5jaG9yIiwic3RhcnQiKSxNLmF0dHIoImQiLCJNIitpKyIsIit5
WzBdKyJIMFYiK3lbMV0rIkgiK2kpfWlmKGYucmFuZ2VCYW5kKXt2YXIgRT1mLEE9RS5yYW5nZUJh
bmQoKS8yO2w9Zj1mdW5jdGlvbihuKXtyZXR1cm4gRShuKStBfX1lbHNlIGwucmFuZ2VCYW5kP2w9
ZjpkLmNhbGwobixmKTt2LmNhbGwobixsKSxtLmNhbGwobixmKX0pfXZhciB0LGU9Wm8uc2NhbGUu
bGluZWFyKCkscj16cyx1PTYsaT02LG89MyxhPVsxMF0sYz1udWxsO3JldHVybiBuLnNjYWxlPWZ1
bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsbik6ZX0sbi5vcmllbnQ9ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCBpbiBMcz90KyIiOnpzLG4pOnJ9
LG4udGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1hcmd1bWVudHMs
bik6YX0sbi50aWNrVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhj
PXQsbik6Y30sbi50aWNrRm9ybWF0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh0PWUsbik6dH0sbi50aWNrU2l6ZT1mdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3Ro
O3JldHVybiBlPyh1PSt0LGk9K2FyZ3VtZW50c1tlLTFdLG4pOnV9LG4uaW5uZXJUaWNrU2l6ZT1m
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0rdCxuKTp1fSxuLm91dGVyVGlj
a1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3Qsbik6aX0sbi50
aWNrUGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxuKTpv
fSxuLnRpY2tTdWJkaXZpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCYmbn0s
bn07dmFyIHpzPSJib3R0b20iLExzPXt0b3A6MSxyaWdodDoxLGJvdHRvbToxLGxlZnQ6MX07Wm8u
c3ZnLmJydXNoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihpKXtpLmVhY2goZnVuY3Rpb24oKXt2YXIg
aT1aby5zZWxlY3QodGhpcykuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc3R5bGUoIi13
ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKS5vbigibW91c2Vkb3du
LmJydXNoIix1KS5vbigidG91Y2hzdGFydC5icnVzaCIsdSksbz1pLnNlbGVjdEFsbCgiLmJhY2tn
cm91bmQiKS5kYXRhKFswXSk7by5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwi
YmFja2dyb3VuZCIpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIikuc3R5bGUoImN1cnNvciIs
ImNyb3NzaGFpciIpLGkuc2VsZWN0QWxsKCIuZXh0ZW50IikuZGF0YShbMF0pLmVudGVyKCkuYXBw
ZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJleHRlbnQiKS5zdHlsZSgiY3Vyc29yIiwibW92ZSIp
O3ZhciBhPWkuc2VsZWN0QWxsKCIucmVzaXplIikuZGF0YShwLHd0KTthLmV4aXQoKS5yZW1vdmUo
KSxhLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKG4pe3JldHVybiJy
ZXNpemUgIitufSkuc3R5bGUoImN1cnNvciIsZnVuY3Rpb24obil7cmV0dXJuIFRzW25dfSkuYXBw
ZW5kKCJyZWN0IikuYXR0cigieCIsZnVuY3Rpb24obil7cmV0dXJuL1tld10kLy50ZXN0KG4pPy0z
Om51bGx9KS5hdHRyKCJ5IixmdW5jdGlvbihuKXtyZXR1cm4vXltuc10vLnRlc3Qobik/LTM6bnVs
bH0pLmF0dHIoIndpZHRoIiw2KS5hdHRyKCJoZWlnaHQiLDYpLnN0eWxlKCJ2aXNpYmlsaXR5Iiwi
aGlkZGVuIiksYS5zdHlsZSgiZGlzcGxheSIsbi5lbXB0eSgpPyJub25lIjpudWxsKTt2YXIgbCxm
PVpvLnRyYW5zaXRpb24oaSksaD1aby50cmFuc2l0aW9uKG8pO2MmJihsPVRpKGMpLGguYXR0cigi
eCIsbFswXSkuYXR0cigid2lkdGgiLGxbMV0tbFswXSksZShmKSkscyYmKGw9VGkocyksaC5hdHRy
KCJ5IixsWzBdKS5hdHRyKCJoZWlnaHQiLGxbMV0tbFswXSkscihmKSksdChmKX0pfWZ1bmN0aW9u
IHQobil7bi5zZWxlY3RBbGwoIi5yZXNpemUiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKG4p
e3JldHVybiJ0cmFuc2xhdGUoIitsWysvZSQvLnRlc3QobildKyIsIitmWysvXnMvLnRlc3Qobild
KyIpIn0pfWZ1bmN0aW9uIGUobil7bi5zZWxlY3QoIi5leHRlbnQiKS5hdHRyKCJ4IixsWzBdKSxu
LnNlbGVjdEFsbCgiLmV4dGVudCwubj5yZWN0LC5zPnJlY3QiKS5hdHRyKCJ3aWR0aCIsbFsxXS1s
WzBdKX1mdW5jdGlvbiByKG4pe24uc2VsZWN0KCIuZXh0ZW50IikuYXR0cigieSIsZlswXSksbi5z
ZWxlY3RBbGwoIi5leHRlbnQsLmU+cmVjdCwudz5yZWN0IikuYXR0cigiaGVpZ2h0IixmWzFdLWZb
MF0pfWZ1bmN0aW9uIHUoKXtmdW5jdGlvbiB1KCl7MzI9PVpvLmV2ZW50LmtleUNvZGUmJihDfHwo
eD1udWxsLHpbMF0tPWxbMV0selsxXS09ZlsxXSxDPTIpLHkoKSl9ZnVuY3Rpb24gcCgpezMyPT1a
by5ldmVudC5rZXlDb2RlJiYyPT1DJiYoelswXSs9bFsxXSx6WzFdKz1mWzFdLEM9MCx5KCkpfWZ1
bmN0aW9uIHYoKXt2YXIgbj1aby5tb3VzZShfKSx1PSExO00mJihuWzBdKz1NWzBdLG5bMV0rPU1b
MV0pLEN8fChaby5ldmVudC5hbHRLZXk/KHh8fCh4PVsobFswXStsWzFdKS8yLChmWzBdK2ZbMV0p
LzJdKSx6WzBdPWxbKyhuWzBdPHhbMF0pXSx6WzFdPWZbKyhuWzFdPHhbMV0pXSk6eD1udWxsKSxF
JiZkKG4sYywwKSYmKGUoUyksdT0hMCksQSYmZChuLHMsMSkmJihyKFMpLHU9ITApLHUmJih0KFMp
LHcoe3R5cGU6ImJydXNoIixtb2RlOkM/Im1vdmUiOiJyZXNpemUifSkpfWZ1bmN0aW9uIGQobix0
LGUpe3ZhciByLHUsYT1UaSh0KSxjPWFbMF0scz1hWzFdLHA9eltlXSx2PWU/ZjpsLGQ9dlsxXS12
WzBdO3JldHVybiBDJiYoYy09cCxzLT1kK3ApLHI9KGU/ZzpoKT9NYXRoLm1heChjLE1hdGgubWlu
KHMsbltlXSkpOm5bZV0sQz91PShyKz1wKStkOih4JiYocD1NYXRoLm1heChjLE1hdGgubWluKHMs
Mip4W2VdLXIpKSkscj5wPyh1PXIscj1wKTp1PXApLHZbMF0hPXJ8fHZbMV0hPXU/KGU/bz1udWxs
Omk9bnVsbCx2WzBdPXIsdlsxXT11LCEwKTp2b2lkIDB9ZnVuY3Rpb24gbSgpe3YoKSxTLnN0eWxl
KCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLnNlbGVjdEFsbCgiLnJlc2l6ZSIpLnN0eWxlKCJkaXNw
bGF5IixuLmVtcHR5KCk/Im5vbmUiOm51bGwpLFpvLnNlbGVjdCgiYm9keSIpLnN0eWxlKCJjdXJz
b3IiLG51bGwpLEwub24oIm1vdXNlbW92ZS5icnVzaCIsbnVsbCkub24oIm1vdXNldXAuYnJ1c2gi
LG51bGwpLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLG51bGwpLm9uKCJ0b3VjaGVuZC5icnVzaCIsbnVs
bCkub24oImtleWRvd24uYnJ1c2giLG51bGwpLm9uKCJrZXl1cC5icnVzaCIsbnVsbCksTigpLHco
e3R5cGU6ImJydXNoZW5kIn0pfXZhciB4LE0sXz10aGlzLGI9Wm8uc2VsZWN0KFpvLmV2ZW50LnRh
cmdldCksdz1hLm9mKF8sYXJndW1lbnRzKSxTPVpvLnNlbGVjdChfKSxrPWIuZGF0dW0oKSxFPSEv
XihufHMpJC8udGVzdChrKSYmYyxBPSEvXihlfHcpJC8udGVzdChrKSYmcyxDPWIuY2xhc3NlZCgi
ZXh0ZW50IiksTj1JKCksej1aby5tb3VzZShfKSxMPVpvLnNlbGVjdChXbykub24oImtleWRvd24u
YnJ1c2giLHUpLm9uKCJrZXl1cC5icnVzaCIscCk7aWYoWm8uZXZlbnQuY2hhbmdlZFRvdWNoZXM/
TC5vbigidG91Y2htb3ZlLmJydXNoIix2KS5vbigidG91Y2hlbmQuYnJ1c2giLG0pOkwub24oIm1v
dXNlbW92ZS5icnVzaCIsdikub24oIm1vdXNldXAuYnJ1c2giLG0pLFMuaW50ZXJydXB0KCkuc2Vs
ZWN0QWxsKCIqIikuaW50ZXJydXB0KCksQyl6WzBdPWxbMF0telswXSx6WzFdPWZbMF0telsxXTtl
bHNlIGlmKGspe3ZhciBUPSsvdyQvLnRlc3QoaykscT0rL15uLy50ZXN0KGspO009W2xbMS1UXS16
WzBdLGZbMS1xXS16WzFdXSx6WzBdPWxbVF0selsxXT1mW3FdfWVsc2UgWm8uZXZlbnQuYWx0S2V5
JiYoeD16LnNsaWNlKCkpO1Muc3R5bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLnNlbGVjdEFs
bCgiLnJlc2l6ZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKSxaby5zZWxlY3QoImJvZHkiKS5zdHls
ZSgiY3Vyc29yIixiLnN0eWxlKCJjdXJzb3IiKSksdyh7dHlwZToiYnJ1c2hzdGFydCJ9KSx2KCl9
dmFyIGksbyxhPU0obiwiYnJ1c2hzdGFydCIsImJydXNoIiwiYnJ1c2hlbmQiKSxjPW51bGwscz1u
dWxsLGw9WzAsMF0sZj1bMCwwXSxoPSEwLGc9ITAscD1xc1swXTtyZXR1cm4gbi5ldmVudD1mdW5j
dGlvbihuKXtuLmVhY2goZnVuY3Rpb24oKXt2YXIgbj1hLm9mKHRoaXMsYXJndW1lbnRzKSx0PXt4
OmwseTpmLGk6aSxqOm99LGU9dGhpcy5fX2NoYXJ0X198fHQ7dGhpcy5fX2NoYXJ0X189dCxTcz9a
by5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmVhY2goInN0YXJ0LmJydXNoIixmdW5jdGlvbigp
e2k9ZS5pLG89ZS5qLGw9ZS54LGY9ZS55LG4oe3R5cGU6ImJydXNoc3RhcnQifSl9KS50d2Vlbigi
YnJ1c2g6YnJ1c2giLGZ1bmN0aW9uKCl7dmFyIGU9Z3UobCx0LngpLHI9Z3UoZix0LnkpO3JldHVy
biBpPW89bnVsbCxmdW5jdGlvbih1KXtsPXQueD1lKHUpLGY9dC55PXIodSksbih7dHlwZToiYnJ1
c2giLG1vZGU6InJlc2l6ZSJ9KX19KS5lYWNoKCJlbmQuYnJ1c2giLGZ1bmN0aW9uKCl7aT10Lmks
bz10Lmosbih7dHlwZToiYnJ1c2giLG1vZGU6InJlc2l6ZSJ9KSxuKHt0eXBlOiJicnVzaGVuZCJ9
KX0pOihuKHt0eXBlOiJicnVzaHN0YXJ0In0pLG4oe3R5cGU6ImJydXNoIixtb2RlOiJyZXNpemUi
fSksbih7dHlwZToiYnJ1c2hlbmQifSkpfSl9LG4ueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYz10LHA9cXNbIWM8PDF8IXNdLG4pOmN9LG4ueT1mdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LHA9cXNbIWM8PDF8IXNdLG4pOnN9LG4uY2xhbXA9ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGMmJnM/KGg9ISF0WzBdLGc9ISF0WzFd
KTpjP2g9ISF0OnMmJihnPSEhdCksbik6YyYmcz9baCxnXTpjP2g6cz9nOm51bGx9LG4uZXh0ZW50
PWZ1bmN0aW9uKHQpe3ZhciBlLHIsdSxhLGg7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGMmJihl
PXRbMF0scj10WzFdLHMmJihlPWVbMF0scj1yWzBdKSxpPVtlLHJdLGMuaW52ZXJ0JiYoZT1jKGUp
LHI9YyhyKSksZT5yJiYoaD1lLGU9cixyPWgpLChlIT1sWzBdfHxyIT1sWzFdKSYmKGw9W2Uscl0p
KSxzJiYodT10WzBdLGE9dFsxXSxjJiYodT11WzFdLGE9YVsxXSksbz1bdSxhXSxzLmludmVydCYm
KHU9cyh1KSxhPXMoYSkpLHU+YSYmKGg9dSx1PWEsYT1oKSwodSE9ZlswXXx8YSE9ZlsxXSkmJihm
PVt1LGFdKSksbik6KGMmJihpPyhlPWlbMF0scj1pWzFdKTooZT1sWzBdLHI9bFsxXSxjLmludmVy
dCYmKGU9Yy5pbnZlcnQoZSkscj1jLmludmVydChyKSksZT5yJiYoaD1lLGU9cixyPWgpKSkscyYm
KG8/KHU9b1swXSxhPW9bMV0pOih1PWZbMF0sYT1mWzFdLHMuaW52ZXJ0JiYodT1zLmludmVydCh1
KSxhPXMuaW52ZXJ0KGEpKSx1PmEmJihoPXUsdT1hLGE9aCkpKSxjJiZzP1tbZSx1XSxbcixhXV06
Yz9bZSxyXTpzJiZbdSxhXSl9LG4uY2xlYXI9ZnVuY3Rpb24oKXtyZXR1cm4gbi5lbXB0eSgpfHwo
bD1bMCwwXSxmPVswLDBdLGk9bz1udWxsKSxufSxuLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuISFj
JiZsWzBdPT1sWzFdfHwhIXMmJmZbMF09PWZbMV19LFpvLnJlYmluZChuLGEsIm9uIil9O3ZhciBU
cz17bjoibnMtcmVzaXplIixlOiJldy1yZXNpemUiLHM6Im5zLXJlc2l6ZSIsdzoiZXctcmVzaXpl
IixudzoibndzZS1yZXNpemUiLG5lOiJuZXN3LXJlc2l6ZSIsc2U6Im53c2UtcmVzaXplIixzdzoi
bmVzdy1yZXNpemUifSxxcz1bWyJuIiwiZSIsInMiLCJ3IiwibnciLCJuZSIsInNlIiwic3ciXSxb
ImUiLCJ3Il0sWyJuIiwicyJdLFtdXSxScz1RYS5mb3JtYXQ9aWMudGltZUZvcm1hdCxEcz1Scy51
dGMsUHM9RHMoIiVZLSVtLSVkVCVIOiVNOiVTLiVMWiIpO1JzLmlzbz1EYXRlLnByb3RvdHlwZS50
b0lTT1N0cmluZyYmK25ldyBEYXRlKCIyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMFoiKT9IbzpQcyxI
by5wYXJzZT1mdW5jdGlvbihuKXt2YXIgdD1uZXcgRGF0ZShuKTtyZXR1cm4gaXNOYU4odCk/bnVs
bDp0fSxIby50b1N0cmluZz1Qcy50b1N0cmluZyxRYS5zZWNvbmQ9RHQoZnVuY3Rpb24obil7cmV0
dXJuIG5ldyBuYygxZTMqTWF0aC5mbG9vcihuLzFlMykpfSxmdW5jdGlvbihuLHQpe24uc2V0VGlt
ZShuLmdldFRpbWUoKSsxZTMqTWF0aC5mbG9vcih0KSl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdl
dFNlY29uZHMoKX0pLFFhLnNlY29uZHM9UWEuc2Vjb25kLnJhbmdlLFFhLnNlY29uZHMudXRjPVFh
LnNlY29uZC51dGMucmFuZ2UsUWEubWludXRlPUR0KGZ1bmN0aW9uKG4pe3JldHVybiBuZXcgbmMo
NmU0Kk1hdGguZmxvb3Iobi82ZTQpKX0sZnVuY3Rpb24obix0KXtuLnNldFRpbWUobi5nZXRUaW1l
KCkrNmU0Kk1hdGguZmxvb3IodCkpfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRNaW51dGVzKCl9
KSxRYS5taW51dGVzPVFhLm1pbnV0ZS5yYW5nZSxRYS5taW51dGVzLnV0Yz1RYS5taW51dGUudXRj
LnJhbmdlLFFhLmhvdXI9RHQoZnVuY3Rpb24obil7dmFyIHQ9bi5nZXRUaW1lem9uZU9mZnNldCgp
LzYwO3JldHVybiBuZXcgbmMoMzZlNSooTWF0aC5mbG9vcihuLzM2ZTUtdCkrdCkpfSxmdW5jdGlv
bihuLHQpe24uc2V0VGltZShuLmdldFRpbWUoKSszNmU1Kk1hdGguZmxvb3IodCkpfSxmdW5jdGlv
bihuKXtyZXR1cm4gbi5nZXRIb3VycygpfSksUWEuaG91cnM9UWEuaG91ci5yYW5nZSxRYS5ob3Vy
cy51dGM9UWEuaG91ci51dGMucmFuZ2UsUWEubW9udGg9RHQoZnVuY3Rpb24obil7cmV0dXJuIG49
UWEuZGF5KG4pLG4uc2V0RGF0ZSgxKSxufSxmdW5jdGlvbihuLHQpe24uc2V0TW9udGgobi5nZXRN
b250aCgpK3QpfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRNb250aCgpfSksUWEubW9udGhzPVFh
Lm1vbnRoLnJhbmdlLFFhLm1vbnRocy51dGM9UWEubW9udGgudXRjLnJhbmdlO3ZhciBVcz1bMWUz
LDVlMywxNWUzLDNlNCw2ZTQsM2U1LDllNSwxOGU1LDM2ZTUsMTA4ZTUsMjE2ZTUsNDMyZTUsODY0
ZTUsMTcyOGU1LDYwNDhlNSwyNTkyZTYsNzc3NmU2LDMxNTM2ZTZdLGpzPVtbUWEuc2Vjb25kLDFd
LFtRYS5zZWNvbmQsNV0sW1FhLnNlY29uZCwxNV0sW1FhLnNlY29uZCwzMF0sW1FhLm1pbnV0ZSwx
XSxbUWEubWludXRlLDVdLFtRYS5taW51dGUsMTVdLFtRYS5taW51dGUsMzBdLFtRYS5ob3VyLDFd
LFtRYS5ob3VyLDNdLFtRYS5ob3VyLDZdLFtRYS5ob3VyLDEyXSxbUWEuZGF5LDFdLFtRYS5kYXks
Ml0sW1FhLndlZWssMV0sW1FhLm1vbnRoLDFdLFtRYS5tb250aCwzXSxbUWEueWVhciwxXV0sSHM9
UnMubXVsdGkoW1siLiVMIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRNaWxsaXNlY29uZHMoKX1d
LFsiOiVTIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRTZWNvbmRzKCl9XSxbIiVJOiVNIixmdW5j
dGlvbihuKXtyZXR1cm4gbi5nZXRNaW51dGVzKCl9XSxbIiVJICVwIixmdW5jdGlvbihuKXtyZXR1
cm4gbi5nZXRIb3VycygpfV0sWyIlYSAlZCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0RGF5KCkm
JjEhPW4uZ2V0RGF0ZSgpfV0sWyIlYiAlZCIsZnVuY3Rpb24obil7cmV0dXJuIDEhPW4uZ2V0RGF0
ZSgpfV0sWyIlQiIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0TW9udGgoKX1dLFsiJVkiLHdlXV0p
LEZzPXtyYW5nZTpmdW5jdGlvbihuLHQsZSl7cmV0dXJuIFpvLnJhbmdlKE1hdGguY2VpbChuL2Up
KmUsK3QsZSkubWFwKE9vKX0sZmxvb3I6d3QsY2VpbDp3dH07anMueWVhcj1RYS55ZWFyLFFhLnNj
YWxlPWZ1bmN0aW9uKCl7cmV0dXJuIEZvKFpvLnNjYWxlLmxpbmVhcigpLGpzLEhzKX07dmFyIE9z
PWpzLm1hcChmdW5jdGlvbihuKXtyZXR1cm5bblswXS51dGMsblsxXV19KSxZcz1Ecy5tdWx0aShb
WyIuJUwiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ01pbGxpc2Vjb25kcygpfV0sWyI6JVMi
LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ1NlY29uZHMoKX1dLFsiJUk6JU0iLGZ1bmN0aW9u
KG4pe3JldHVybiBuLmdldFVUQ01pbnV0ZXMoKX1dLFsiJUkgJXAiLGZ1bmN0aW9uKG4pe3JldHVy
biBuLmdldFVUQ0hvdXJzKCl9XSxbIiVhICVkIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENE
YXkoKSYmMSE9bi5nZXRVVENEYXRlKCl9XSxbIiViICVkIixmdW5jdGlvbihuKXtyZXR1cm4gMSE9
bi5nZXRVVENEYXRlKCl9XSxbIiVCIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENNb250aCgp
fV0sWyIlWSIsd2VdXSk7T3MueWVhcj1RYS55ZWFyLnV0YyxRYS5zY2FsZS51dGM9ZnVuY3Rpb24o
KXtyZXR1cm4gRm8oWm8uc2NhbGUubGluZWFyKCksT3MsWXMpfSxaby50ZXh0PVN0KGZ1bmN0aW9u
KG4pe3JldHVybiBuLnJlc3BvbnNlVGV4dH0pLFpvLmpzb249ZnVuY3Rpb24obix0KXtyZXR1cm4g
a3QobiwiYXBwbGljYXRpb24vanNvbiIsWW8sdCl9LFpvLmh0bWw9ZnVuY3Rpb24obix0KXtyZXR1
cm4ga3QobiwidGV4dC9odG1sIixJbyx0KX0sWm8ueG1sPVN0KGZ1bmN0aW9uKG4pe3JldHVybiBu
LnJlc3BvbnNlWE1MfSksImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZp
bmUoWm8pOiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cyYmKG1vZHVsZS5l
eHBvcnRzPVpvKSx0aGlzLmQzPVpvfSgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dy
YXBoLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvZ3Jh
cGguanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMWY1ZjVkNjY5ZGUwMGZlZjM5
ZDJlOTJjY2IzOWJjMDQ2NTVjMWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMv
Z3JhcGguanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotZnVuY3Rpb24gZ3JhcGgo
c2VsZWN0b3IsIG1hcmdpbnMsIGF4ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkKLXsK
LSAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwotICAg
IGVsZW1lbnQuaW5uZXJIVE1MID0gJyc7Ci0KLSAgICB2YXIgc2l6ZSA9IFBvaW50LmVsZW1lbnRD
bGllbnRTaXplKGVsZW1lbnQpLnN1YnRyYWN0KG1hcmdpbnMuc2l6ZSk7Ci0KLSAgICB2YXIgeCA9
IGQzLnNjYWxlLmxpbmVhcigpCi0gICAgICAgICAgICAucmFuZ2UoWzAsIHNpemUud2lkdGhdKQot
ICAgICAgICAgICAgLmRvbWFpbihkMy5leHRlbnQoc2FtcGxlcywgZnVuY3Rpb24oZCkgeyByZXR1
cm4gZC50aW1lT2Zmc2V0OyB9KSk7ICAgICAgICAgICAgCi0KLSAgICB2YXIgeUxlZnQgPSBkMy5z
Y2FsZS5saW5lYXIoKQotICAgICAgICAgICAgLnJhbmdlKFtzaXplLmhlaWdodCwgMF0pCi0gICAg
ICAgICAgICAuZG9tYWluKFswLCBkMy5tYXgoc2FtcGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4g
ZC52YWx1ZXNbMF07IH0pXSk7Ci0KLSAgICB2YXIgeVJpZ2h0ID0gZDMuc2NhbGUubGluZWFyKCkK
LSAgICAgICAgICAgIC5yYW5nZShbc2l6ZS5oZWlnaHQsIDBdKQotICAgICAgICAgICAgLmRvbWFp
bihbMCwgZDMubWF4KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVzWzFdOyB9
KV0pOwotCi0gICAgdmFyIHhBeGlzID0gZDMuc3ZnLmF4aXMoKQotICAgICAgICAgICAgLnNjYWxl
KHgpCi0gICAgICAgICAgICAub3JpZW50KCJib3R0b20iKTsKLQotICAgIHZhciB5QXhpc0xlZnQg
PSBkMy5zdmcuYXhpcygpCi0gICAgICAgICAgICAuc2NhbGUoeUxlZnQpCi0gICAgICAgICAgICAu
b3JpZW50KCJsZWZ0Iik7Ci0KLSAgICB2YXIgeUF4aXNSaWdodCA9IGQzLnN2Zy5heGlzKCkKLSAg
ICAgICAgICAgIC5zY2FsZSh5UmlnaHQpCi0gICAgICAgICAgICAub3JpZW50KCJyaWdodCIpOwot
Ci0gICAgdmFyIGxpbmVMZWZ0ID0gZDMuc3ZnLmxpbmUoKQotICAgICAgICAgICAgLngoZnVuY3Rp
b24oZCkgeyByZXR1cm4geChkLnRpbWVPZmZzZXQpOyB9KQotICAgICAgICAgICAgLnkoZnVuY3Rp
b24oZCkgeyByZXR1cm4geUxlZnQoZC52YWx1ZXNbMF0pOyB9KTsKLQotICAgIHZhciBsaW5lUmln
aHQgPSBkMy5zdmcubGluZSgpCi0gICAgICAgICAgICAueChmdW5jdGlvbihkKSB7IHJldHVybiB4
KGQudGltZU9mZnNldCk7IH0pCi0gICAgICAgICAgICAueShmdW5jdGlvbihkKSB7IHJldHVybiB5
UmlnaHQoZC52YWx1ZXNbMV0pOyB9KTsKLQotICAgIHNhbXBsZXMuZm9yRWFjaChmdW5jdGlvbihk
KSB7Ci0gICAgICAgIGQudGltZU9mZnNldCA9ICtkLnRpbWVPZmZzZXQ7Ci0gICAgICAgIGQudmFs
dWVzWzBdID0gK2QudmFsdWVzWzBdOwotICAgICAgICBkLnZhbHVlc1sxXSA9ICtkLnZhbHVlc1sx
XTsgICAgICAgIAotICAgIH0pOyAgICAKLQotICAgIHZhciBzYW1wbGVkU2FtcGxlcyA9IHNhbXBs
ZXMuZmlsdGVyKGZ1bmN0aW9uKGQpIHsKLSAgICAgICAgcmV0dXJuIGQudGltZU9mZnNldCA+PSBz
YW1wbGluZ1RpbWVPZmZzZXQ7Ci0gICAgfSk7Ci0gICAgCi0gICAgdmFyIG1lYW5MZWZ0ID0gZDMu
bWVhbihzYW1wbGVkU2FtcGxlcywgZnVuY3Rpb24oZCkgewotICAgICAgICByZXR1cm4gK2QudmFs
dWVzWzBdOwotICAgIH0pOwotCi0gICAgdmFyIG1lYW5SaWdodCA9IGQzLm1lYW4oc2FtcGxlZFNh
bXBsZXMsIGZ1bmN0aW9uKGQpIHsKLSAgICAgICAgcmV0dXJuICtkLnZhbHVlc1sxXTsKLSAgICB9
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICB2YXIgc3ZnID0gZDMuc2VsZWN0
KHNlbGVjdG9yKS5hcHBlbmQoInN2ZyIpCi0gICAgICAgIC5hdHRyKCJ3aWR0aCIsIHNpemUud2lk
dGggKyBtYXJnaW5zLmxlZnQgKyBtYXJnaW5zLnJpZ2h0KQotICAgICAgICAuYXR0cigiaGVpZ2h0
Iiwgc2l6ZS5oZWlnaHQgKyBtYXJnaW5zLnRvcCArIG1hcmdpbnMuYm90dG9tKQotICAgICAgICAu
YXBwZW5kKCJnIikKLSAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKCIg
KyBtYXJnaW5zLmxlZnQgKyAiLCIgKyBtYXJnaW5zLnRvcCArICIpIik7Ci0KLSAgICAvLyB4LWF4
aXMKLSAgICBzdmcuYXBwZW5kKCJnIikKLSAgICAgICAgLmF0dHIoImNsYXNzIiwgInggYXhpcyIp
Ci0gICAgICAgIC5hdHRyKCJmaWxsIiwgInJnYigyMzUsIDIzNSwgMjM1KSIpCi0gICAgICAgIC5h
dHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKDAsIiArIHNpemUuaGVpZ2h0ICsgIikiKQotICAg
ICAgICAuY2FsbCh4QXhpcykKLSAgICAgICAgLmFwcGVuZCgidGV4dCIpCi0gICAgICAgICAgICAu
YXR0cigiY2xhc3MiLCAibGFiZWwiKQotICAgICAgICAgICAgLmF0dHIoIngiLCBzaXplLndpZHRo
KQotICAgICAgICAgICAgLmF0dHIoInkiLCAtNikKLSAgICAgICAgICAgIC5hdHRyKCJmaWxsIiwg
InJnYigyMzUsIDIzNSwgMjM1KSIpCi0gICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9yIiwg
ImVuZCIpCi0gICAgICAgICAgICAudGV4dCgidGltZSIpOwotICAgICAgICAgICAgICAgICAKLSAg
ICAvLyB5TGVmdC1heGlzCi0gICAgc3ZnLmFwcGVuZCgiZyIpCi0gICAgICAgIC5hdHRyKCJjbGFz
cyIsICJ5IGF4aXMiKQotICAgICAgICAuYXR0cigiZmlsbCIsICIjN0FERDQ5IikKLSAgICAgICAg
LmNhbGwoeUF4aXNMZWZ0KQotICAgICAgICAuYXBwZW5kKCJ0ZXh0IikKLSAgICAgICAgICAgIC5h
dHRyKCJjbGFzcyIsICJsYWJlbCIpCi0gICAgICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInJv
dGF0ZSgtOTApIikKLSAgICAgICAgICAgIC5hdHRyKCJ5IiwgNikKLSAgICAgICAgICAgIC5hdHRy
KCJmaWxsIiwgIiM3QURENDkiKQotICAgICAgICAgICAgLmF0dHIoImR5IiwgIi43MWVtIikKLSAg
ICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikKLSAgICAgICAgICAgIC50ZXh0
KGF4ZXNbMF0pOwotCi0gICAgLy8geVJpZ2h0LWF4aXMKLSAgICBzdmcuYXBwZW5kKCJnIikKLSAg
ICAgICAgLmF0dHIoImNsYXNzIiwgInkgYXhpcyIpCi0gICAgICAgIC5hdHRyKCJmaWxsIiwgIiNG
QTQ5MjUiKQotICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgc2l6ZS53
aWR0aCArICIsIDApIikKLSAgICAgICAgLmNhbGwoeUF4aXNSaWdodCkKLSAgICAgICAgLmFwcGVu
ZCgidGV4dCIpCi0gICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQotICAgICAgICAg
ICAgLmF0dHIoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCi0gICAgICAgICAgICAuYXR0cigi
eSIsIDYpCi0gICAgICAgICAgICAuYXR0cigiZmlsbCIsICIjRkE0OTI1IikKLSAgICAgICAgICAg
IC5hdHRyKCJkeSIsICIuNzFlbSIpCi0gICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9yIiwg
ImVuZCIpCi0gICAgICAgICAgICAudGV4dChheGVzWzFdKTsKLQotICAgIC8vIGxlZnQtbWVhbgot
ICAgIHN2Zy5hcHBlbmQoInN2ZzpsaW5lIikKLSAgICAgICAgLmF0dHIoIngxIiwgeCgwKSkKLSAg
ICAgICAgLmF0dHIoIngyIiwgc2l6ZS53aWR0aCkKLSAgICAgICAgLmF0dHIoInkxIiwgeUxlZnQo
bWVhbkxlZnQpKQotICAgICAgICAuYXR0cigieTIiLCB5TGVmdChtZWFuTGVmdCkpCi0gICAgICAg
IC5hdHRyKCJjbGFzcyIsICJsZWZ0LW1lYW4iKTsKLQotICAgIC8vIHJpZ2h0LW1lYW4KLSAgICBz
dmcuYXBwZW5kKCJzdmc6bGluZSIpCi0gICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkpCi0gICAgICAg
IC5hdHRyKCJ4MiIsIHNpemUud2lkdGgpCi0gICAgICAgIC5hdHRyKCJ5MSIsIHlSaWdodChtZWFu
UmlnaHQpKQotICAgICAgICAuYXR0cigieTIiLCB5UmlnaHQobWVhblJpZ2h0KSkKLSAgICAgICAg
LmF0dHIoImNsYXNzIiwgInJpZ2h0LW1lYW4iKTsgICAgICAgIAotCi0gICAgLy8gc2FtcGxpbmdU
aW1lT2Zmc2V0Ci0gICAgc3ZnLmFwcGVuZCgibGluZSIpCi0gICAgICAgIC5hdHRyKCJ4MSIsIHgo
c2FtcGxpbmdUaW1lT2Zmc2V0KSkKLSAgICAgICAgLmF0dHIoIngyIiwgeChzYW1wbGluZ1RpbWVP
ZmZzZXQpKQotICAgICAgICAuYXR0cigieTEiLCB5TGVmdCgwKSkKLSAgICAgICAgLmF0dHIoInky
IiwgeUxlZnQoeUF4aXNMZWZ0LnNjYWxlKCkuZG9tYWluKClbMV0pKQotICAgICAgICAuYXR0cigi
Y2xhc3MiLCAic2FtcGxlLXRpbWUiKTsKLQotICAgIC8vIGxlZnQtc2FtcGxlcwotICAgIHN2Zy5h
cHBlbmQoInBhdGgiKQotICAgICAgICAuZGF0dW0oc2FtcGxlcykKLSAgICAgICAgLmF0dHIoImNs
YXNzIiwgImxlZnQtc2FtcGxlcyIpCi0gICAgICAgIC5hdHRyKCJkIiwgbGluZUxlZnQpOwotICAg
ICAgICAKLSAgICAvLyByaWdodC1zYW1wbGVzCi0gICAgc3ZnLmFwcGVuZCgicGF0aCIpCi0gICAg
ICAgIC5kYXR1bShzYW1wbGVzKQotICAgICAgICAuYXR0cigiY2xhc3MiLCAicmlnaHQtc2FtcGxl
cyIpCi0gICAgICAgIC5hdHRyKCJkIiwgbGluZVJpZ2h0KTsKLX0KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ODdmODk2NmFhN2VlZmFhNGVlYmJiMjExMGVlZjhkMTM4
ZDQ4NWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNTYgKzAsMCBAQAotdmFyIEhlYWRlcnMgPSBbCi0gICAgewotICAgICAg
ICB0ZXh0OiBTdHJpbmdzLnRleHQudGVzdE5hbWUsCi0gICAgICAgIHdpZHRoOiAyNywKLSAgICAg
ICAgY2hpbGRyZW46IFtdCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIHRleHQ6IFN0cmluZ3MudGV4
dC5zY29yZSwKLSAgICAgICAgd2lkdGg6IDcsCi0gICAgICAgIGNoaWxkcmVuOiBbXQotICAgIH0s
Ci0gICAgewotICAgICAgICB0ZXh0OiBTdHJpbmdzLnRleHQuZXhwZXJpbWVudHMuY29tcGxleGl0
eSwKLSAgICAgICAgd2lkdGg6IDI3LAotICAgICAgICBjaGlsZHJlbjoKLSAgICAgICAgWwotICAg
ICAgICAgICAgeyB0ZXh0OiBTdHJpbmdzLnRleHQubWVhc3VyZW1lbnRzLmF2ZXJhZ2UsIHdpZHRo
OiA3LCBjaGlsZHJlbjogW10gfSwKLSAgICAgICAgICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1l
YXN1cmVtZW50cy5jb25jZXJuLCB3aWR0aDogNywgY2hpbGRyZW46IFtdIH0sCi0gICAgICAgICAg
ICB7IHRleHQ6IFN0cmluZ3MudGV4dC5tZWFzdXJlbWVudHMuc3RkZXYsIHdpZHRoOiA3LCBjaGls
ZHJlbjogW10gfSwKLSAgICAgICAgICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1lYXN1cmVtZW50
cy5wZXJjZW50LCB3aWR0aDogNiwgY2hpbGRyZW46IFtdIH0sCi0gICAgICAgIF0KLSAgICB9LAot
ICAgIHsKLSAgICAgICAgdGV4dDogU3RyaW5ncy50ZXh0LmV4cGVyaW1lbnRzLmZyYW1lUmF0ZSwK
LSAgICAgICAgd2lkdGg6IDI0LAotICAgICAgICBjaGlsZHJlbjoKLSAgICAgICAgWwotICAgICAg
ICAgICAgeyB0ZXh0OiBTdHJpbmdzLnRleHQubWVhc3VyZW1lbnRzLmF2ZXJhZ2UsIHdpZHRoOiA2
LCBjaGlsZHJlbjogW10gfSwKLSAgICAgICAgICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1lYXN1
cmVtZW50cy5jb25jZXJuLCB3aWR0aDogNiwgY2hpbGRyZW46IFtdIH0sCi0gICAgICAgICAgICB7
IHRleHQ6IFN0cmluZ3MudGV4dC5tZWFzdXJlbWVudHMuc3RkZXYsIHdpZHRoOiA2LCBjaGlsZHJl
bjogW10gfSwKLSAgICAgICAgICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1lYXN1cmVtZW50cy5w
ZXJjZW50LCB3aWR0aDogNiwgY2hpbGRyZW46IFtdIH0sCi0gICAgICAgIF0KLSAgICB9LAotICAg
IHsKLSAgICAgICAgdGV4dDogU3RyaW5ncy50ZXh0LnNhbXBsZXMsCi0gICAgICAgIHdpZHRoOiAx
NSwKLSAgICAgICAgY2hpbGRyZW46Ci0gICAgICAgIFsKLSAgICAgICAgICAgIHsgdGV4dDogU3Ry
aW5ncy50ZXh0LnJlc3VsdHMuZ3JhcGgsIHdpZHRoOiA4LCBjaGlsZHJlbjogW10gfSwKLSAgICAg
ICAgICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0LnJlc3VsdHMuanNvbiwgd2lkdGg6IDcsIGNoaWxk
cmVuOiBbXSB9LAotICAgICAgICBdCi0gICAgfQotXTsKLQotdmFyIFN1aXRlID0gZnVuY3Rpb24o
bmFtZSwgdGVzdHMpIHsKLSAgICB0aGlzLm5hbWUgPSBuYW1lOwotICAgIHRoaXMudGVzdHMgPSB0
ZXN0czsKLX07Ci1TdWl0ZS5wcm90b3R5cGUucHJlcGFyZSA9IGZ1bmN0aW9uKHJ1bm5lciwgY29u
dGVudFdpbmRvdywgY29udGVudERvY3VtZW50KQotewotICAgIHJldHVybiBydW5uZXIud2FpdEZv
ckVsZW1lbnQoIiNzdGFnZSIpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKLSAgICAgICAgcmV0
dXJuIGVsZW1lbnQ7Ci0gICAgfSk7Ci19OwotU3VpdGUucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9u
KGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikK
LXsKLSAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKLX07Ci0KLXZhciBTdWl0ZXMgPSBbXTsK
LQotU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJIVE1MIHN1aXRlIiwKLSAgICBbCi0gICAgICAgIHsg
Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBl
cy5odG1sP3BhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwK
LSAgICAgICAgICAgIG5hbWU6ICJDU1MgYm91bmNpbmcgY2lyY2xlcyIKLSAgICAgICAgfSwKLSAg
ICAgICAgeyAKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
c3Mtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1y
ZWN0JmNsaXA9c3RhciIsCi0gICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGNsaXBwZWQg
cmVjdHMiCi0gICAgICAgIH0sCi0gICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NTAmcGFy
dGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAotICAgICAgICAgICAg
bmFtZTogIkNTUyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVzIgotICAgICAgICB9LAotICAgICAg
ICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWlt
YWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4v
cmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCi0gICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5n
IFNWRyBpbWFnZXMiCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04
MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwK
LSAgICAgICAgICAgIG5hbWU6ICJDU1MgYm91bmNpbmcgUE5HIGltYWdlcyIKLSAgICAgICAgfSwK
LSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAidGV4dC9sYXllcmluZy10ZXh0Lmh0bWwiLAot
ICAgICAgICAgICAgbmFtZTogIkNTUyBsYXllcmluZyB0ZXh0IgotICAgICAgICB9LAotICAgIF0K
LSkpOwotCi1TdWl0ZXMucHVzaChuZXcgU3VpdGUoIkNhbnZhcyBzdWl0ZSIsCi0gICAgWwotICAg
ICAgICB7IAotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNh
bnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBl
PWNpcmNsZSIsCi0gICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNpcmNsZXMiCi0g
ICAgICAgIH0sCi0gICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVI
ZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAotICAgICAgICAgICAgbmFtZTogImNhbnZh
cyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIgotICAgICAgICB9LAotICAgICAgICB7IAotICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRt
bD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdy
YWRpZW50IiwKLSAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgZ3JhZGllbnQgY2ly
Y2xlcyIKLSAgICAgICAgfSwKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZw
YXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKLSAg
ICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgU1ZHIGltYWdlcyIKLSAgICAgICAgfSwK
LSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5n
LWNhbnZhcy1pbWFnZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmlt
YWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAotICAgICAgICAgICAgbmFtZTogImNh
bnZhcyBib3VuY2luZyBQTkcgaW1hZ2VzIgotICAgICAgICB9LAotICAgIF0KLSkpOwotCi1TdWl0
ZXMucHVzaChuZXcgU3VpdGUoIlNWRyBzdWl0ZSIsCi0gICAgWwotICAgICAgICB7Ci0gICAgICAg
ICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP3Bh
cnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKLSAgICAgICAg
ICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgY2lyY2xlcyIsCi0gICAgICAgIH0sCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVz
Lmh0bWw/cGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9
c3RhciIsCi0gICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiLAot
ICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWln
aHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAotICAgICAgICAgICAgbmFtZTogIlNW
RyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVzIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAg
ICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1s
P3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2Vz
L3lpbi15YW5nLnN2ZyIsCi0gICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFNWRyBpbWFn
ZXMiCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0aWNs
ZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKLSAgICAgICAg
ICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgUE5HIGltYWdlcyIKLSAgICAgICAgfSwKLSAgICBdCi0p
KTsKLQotU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJCYXNpYyBjYW52YXMgcGF0aCBzdWl0ZSIsCi0g
ICAgWwotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1w
YXRocy5odG1sP3BhdGhUeXBlPWxpbmUmbGluZUNhcD1idXR0IiwKLSAgICAgICAgICAgIG5hbWU6
ICJDYW52YXMgbGluZSBzZWdtZW50cywgYnV0dCBjYXBzIgotICAgICAgICB9LAotICAgICAgICB7
Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhU
eXBlPWxpbmUmbGluZUNhcD1yb3VuZCIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGxpbmUg
c2VnbWVudHMsIHJvdW5kIGNhcHMiCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZSZsaW5l
Q2FwPXNxdWFyZSIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGxpbmUgc2VnbWVudHMsIHNx
dWFyZSBjYXBzIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1w
bGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWxpbmVQYXRoJmxpbmVKb2luPWJl
dmVsIiwKLSAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgbGluZSBwYXRoLCBiZXZlbCBqb2luIgot
ICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNh
bnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWxpbmVQYXRoJmxpbmVKb2luPXJvdW5kIiwKLSAgICAg
ICAgICAgIG5hbWU6ICJDYW52YXMgbGluZSBwYXRoLCByb3VuZCBqb2luIgotICAgICAgICB9LAot
ICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5o
dG1sP3BhdGhUeXBlPWxpbmVQYXRoJmxpbmVKb2luPW1pdGVyIiwKLSAgICAgICAgICAgIG5hbWU6
ICJDYW52YXMgbGluZSBwYXRoLCBtaXRlciBqb2luIgotICAgICAgICB9LAotICAgICAgICB7Ci0g
ICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBl
PWxpbmVQYXRoJmxpbmVEYXNoPTEiLAotICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHBh
dGggd2l0aCBkYXNoIHBhdHRlcm4iCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9cXVhZHJhdGlj
IiwKLSAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgcXVhZHJhdGljIHNlZ21lbnRzIgotICAgICAg
ICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1w
YXRocy5odG1sP3BhdGhUeXBlPXF1YWRyYXRpY1BhdGgiLAotICAgICAgICAgICAgbmFtZTogIkNh
bnZhcyBxdWFkcmF0aWMgcGF0aCIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAg
dXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1iZXppZXIiLAot
ICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBiZXppZXIgc2VnbWVudHMiCi0gICAgICAgIH0sCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0
bWw/cGF0aFR5cGU9YmV6aWVyUGF0aCIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGJlemll
ciBwYXRoIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUv
c2ltcGxlLWNhbnZhcy1wYXRocy5odG1sPyZwYXRoVHlwZT1hcmNUbyIsCi0gICAgICAgICAgICBu
YW1lOiAiQ2FudmFzIGFyY1RvIHNlZ21lbnRzIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAg
ICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWFy
YyIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGFyYyBzZWdtZW50cyIKLSAgICAgICAgfSwK
LSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMu
aHRtbD9wYXRoVHlwZT1yZWN0IiwKLSAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgcmVjdHMiCi0g
ICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2Fu
dmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZUZpbGwiLAotICAgICAgICAgICAgbmFtZTogIkNh
bnZhcyBsaW5lIHBhdGgsIGZpbGwiCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9cXVhZHJhdGlj
RmlsbCIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIHF1YWRyYXRpYyBwYXRoLCBmaWxsIgot
ICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNh
bnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWJlemllckZpbGwiLAotICAgICAgICAgICAgbmFtZTog
IkNhbnZhcyBiZXppZXIgcGF0aCwgZmlsbCIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAg
ICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD8mcGF0aFR5cGU9YXJj
VG9GaWxsIiwKLSAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgYXJjVG8gc2VnbWVudHMsIGZpbGwi
Ci0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUt
Y2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9YXJjRmlsbCIsCi0gICAgICAgICAgICBuYW1lOiAi
Q2FudmFzIGFyYyBzZWdtZW50cywgZmlsbCIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAg
ICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1yZWN0
RmlsbCIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIHJlY3RzLCBmaWxsIgotICAgICAgICB9
Ci0gICAgXQotKSk7Ci0KLVN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiQ29tcGxleCBleGFtcGxlcyIs
Ci0gICAgWwotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJleGFtcGxlcy9jYW52YXMtZWxl
Y3Ryb25zLmh0bWwiLAotICAgICAgICAgICAgbmFtZTogImNhbnZhcyBlbGVjdHJvbnMiCi0gICAg
ICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImV4YW1wbGVzL2NhbnZhcy1zdGFy
cy5odG1sIiwKLSAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgc3RhcnMiCi0gICAgICAgIH0sCi0g
ICAgXQotKSk7Ci0KLVN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiTWlzY2VsbGFuZW91cyBUZXN0cyIs
Ci0gICAgWwotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJtaXNjL2NvbXBvc2l0aW5nLXRy
YW5zZm9ybXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJmZpbHRlcnM9
eWVzJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAotICAgICAgICAgICAgbmFt
ZTogIkNvbXBvc2l0ZWQgVHJhbnNmb3JtcyIKLSAgICAgICAgfSwKLSAgICBdCi0pKTsKLQotZnVu
Y3Rpb24gc3VpdGVGcm9tTmFtZShuYW1lKQotewotICAgIHJldHVybiBTdWl0ZXMuZmluZChmdW5j
dGlvbihzdWl0ZSkgeyByZXR1cm4gc3VpdGUubmFtZSA9PSBuYW1lOyB9KTsKLX0KLQotZnVuY3Rp
b24gdGVzdEZyb21OYW1lKHN1aXRlLCBuYW1lKQotewotICAgIHJldHVybiBzdWl0ZS50ZXN0cy5m
aW5kKGZ1bmN0aW9uKHRlc3QpIHsgcmV0dXJuIHRlc3QubmFtZSA9PSBuYW1lOyB9KTsKLX0KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0
bWwKaW5kZXggNDViYWY0ZDE4NTg1MjRiMDUxZGQyZWVmZjZiYjVhOGEwNzRlZmFjYS4uYWQ4MDZk
YmRjOGI0MjM5ZjJhYzlhYjZmNmVhMjI0YTk1OWM0OGRkNSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52
YXMtaW1hZ2VzLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwKQEAgLTEzLDcgKzEz
LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAg
IAogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKICAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1s
CmluZGV4IDcyNTU4NzNmN2FkODMwYjg4ZjVkN2I4ODkyODQxNjY3MWY2YjFjNTAuLmQxZDdjMDY3
ODNkYTRhZWE4ZGNhODE5MGNkYTFkMWIyMTY4NDVjMjUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFz
LXNoYXBlcy5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sCkBAIC03LDcgKzcsNiBA
QAogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCiAg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAogICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctY3NzLWltYWdlcy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWwKaW5kZXggZGZi
NWJhNjMwNmFlYmJmOWUwYjY1YzU2NGEzOGU0ZmNkZTNlNmM5YS4uOTYxYmNmYzkxYTFiOWUzMzE0
NDg1OWUxODljOWUyYmIxNDZjNDA1ZCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWwKQEAgLTEyLDcgKzEyLDYgQEAKICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAogICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1z
aGFwZXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sCmluZGV4IDBjZmM2ZmE4ZGRlOWI1MjZi
NDljNmZhY2M4MDk2ZjI0MmQ5ZDQyYTMuLjRlYWIxYzJhZWJkZmJlNThhZTA2NTZiMzUyMGE4ODVk
Y2FjODllMTggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3Nz
LXNoYXBlcy5odG1sCkBAIC0yMyw3ICsyMyw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91
dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L21haW4uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2Uu
anMiPjwvc2NyaXB0PiAgCiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0
aWNsZXMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLXN2Zy1pbWFnZXMuaHRtbAppbmRleCA1YThjZTQzNGIxZTkyMGVlYjUyOGYxNGMxYTJkYTdk
ODEzOWI0ODNmLi41MmRjMTU1Zjk0YzM4NGViMDI5MGJlOWE3MWY5NDNmYjFiYjdjNDlhIDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbApA
QCAtNyw3ICs3LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9u
cy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9z
Y3JpcHQ+ICAgIAogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAK
ICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5o
dG1sCmluZGV4IDU1YjhlZGIyMzhiZDRmOTBkZWIzOTZjOWUzZmYzOTljZDhlMjBjYTEuLmQ1Nzli
NzFlY2EzYTE3MGY5ZDBiYTVjZjhhZmY0MThlNGZmNmIyYzMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3Zn
LXNoYXBlcy5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sCkBAIC03LDcgKzcsNiBAQAog
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCiAgICAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAogICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVz
b3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMt
aW1hZ2VzLmpzCmluZGV4IDI1OGNjZDcyNmQ1M2JhM2M2ZmJkZDI2ZGMyYzI3NjdiYTljYmIwMzUu
LjI4YTc4MTE1NDk3YjEyZTk0ZjE5OGNjYzg3YTNjOWU3MjU4YzMzYWYgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFz
LWltYWdlcy5qcwpAQCAtMzIsOSArMzIsOSBAQCBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLnBy
b3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4gbmV3IEJvdW5j
aW5nQ2FudmFzSW1hZ2UodGhpcyk7CiB9CiAKLWZ1bmN0aW9uIEJvdW5jaW5nQ2FudmFzSW1hZ2Vz
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
CitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1h
cmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKTsKKyAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiAKIEJvdW5jaW5nQ2FudmFzSW1h
Z2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdDYW52YXNQYXJ0
aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgQm91bmNpbmdDYW52
YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVu
dCkKICAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgdGhp
cy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rp
b24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3dpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHByb2dyZXNzQmFyKQogewotICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNCZW5j
aG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cisg
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2Fu
dmFzLXBhcnRpY2xlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMKaW5k
ZXggNGNmN2NkNTI2YjBkODk3NmQ2OWVmNWU4OGNjNzZlYmNhMDY1YzU0YS4uMGI0MGRhMjY5NTI2
ZjJkY2ZmZDVmMWY1NjIxYWZmNDdhMGJkN2I4YiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
Y2FudmFzLXBhcnRpY2xlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVz
LmpzCkBAIC05MSw5ICs5MSw5IEBAIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCiAgICAgcmV0dXJuIEJvdW5jaW5nUGFydGljbGVz
QW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKIH0KIAotZnVuY3Rpb24gQm91
bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVu
Y2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICBTdGFnZUJl
bmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpOworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1h
cmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLWNhbnZhcy1zaGFwZXMuanMKaW5kZXggZjIyYTc1NzFjNmUwYTM3NTgwOTU0NGQ1YWU4NWZk
NDA4YTM2OGViOC4uYmU0YTFkOWNiYjNlNTFiYWUxMzRlYjE1Yzk3ODg2YWU3NDljNzZlNyAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcworKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1jYW52YXMtc2hhcGVzLmpzCkBAIC03MSw5ICs3MSw5IEBAIEJvdW5jaW5nQ2FudmFzU2hh
cGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKQogICAgIHJldHVy
biBuZXcgQm91bmNpbmdDYW52YXNTaGFwZSh0aGlzKTsKIH0KIAotZnVuY3Rpb24gQm91bmNpbmdD
YW52YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICBCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpOworICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLmNh
bGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogQm91bmNp
bmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtODQsNyArODQsNyBAQCBC
b3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5j
dGlvbihlbGVtZW50KQogICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZShl
bGVtZW50LCB0aGlzLl9vcHRpb25zKTsKIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVh
dGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKQord2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZh
c1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKTsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1jc3MtaW1hZ2VzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcwppbmRl
eCA5NmYwZTU5YjdhZmE4NGZjNGU1Mjc0MjgyOThiMWVjODgzZTQ1MTlmLi4wZDNhZTI0MTI1Yzgw
OGFjMTY5NzU4YjJlZjExZTFlN2I2Nzg2M2Y0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1j
c3MtaW1hZ2VzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMuanMKQEAgLTQ0LDkg
KzQ0LDkgQEAgQm91bmNpbmdDc3NJbWFnZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVS
ZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUpCiAgICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUo
KTsKIH0KIAotZnVuY3Rpb24gQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nQ3Nz
SW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAg
ICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIEJvdW5jaW5nUGFydGljbGVzQmVu
Y2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0K
IAogQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShC
b3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtNTcsNyArNTcsNyBAQCBC
b3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlv
bihlbGVtZW50KQogICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NJbWFnZXNTdGFnZShlbGVtZW50
LCB0aGlzLl9vcHRpb25zKTsKIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBm
dW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQor
d2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc0ltYWdlc0Jl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsK
KyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mt
c2hhcGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcwppbmRleCA2ZWRhZWQ4Mzg4
ZWZhODc5ODgyMTA4OWE1M2FmMTM2NjNkN2UxZjA2Li42Zjk0MzM1NTVhOTc5NjZhNzJlMGRiNWMz
YWNkOWRlNjJhYjQ0OTU1IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpz
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanMKQEAgLTYyLDkgKzYyLDkgQEAgQm91
bmNpbmdDc3NTaGFwZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVu
Y3Rpb24ocGFydGljbGUpCiAgICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUoKTsKIH0KIAotZnVu
Y3Rpb24gQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJl
Y29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2ht
YXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwo
dGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogQm91bmNpbmdD
c3NTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtNzUsNyArNzUsNyBAQCBCb3VuY2luZ0Nzc1No
YXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQog
ICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NTaGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRp
b25zKTsKIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2luZG93LmJlbmNo
bWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jl
c3NCYXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4g
bmV3IEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9n
cmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMKaW5kZXggZDBmOTRjYTVlZTgzZmZjMGQwOWY4YmVk
ZDRjYmI1ZTI3MDBhYWM2OC4uYTBmN2JmZDBiZDUzZmMxNWM4ZTBmNTFmOTliZGY5MTZlYzI1ODhm
NiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXBhcnRpY2xlcy5qcwpAQCAtMTI0LDkgKzEyNCw5IEBAIEJvdW5jaW5nUGFydGljbGVz
U3RhZ2UucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKICAgICByZXR1cm4gdGhpcy5f
cGFydGljbGVzLmxlbmd0aDsKIH0KIAotZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1bmN0
aW9uIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9n
cmVzc0JhcikKIHsKLSAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIFN0YWdlQmVuY2htYXJrLmNh
bGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogQm91bmNp
bmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNo
bWFyay5wcm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMKaW5kZXggYzY4YmNlMGExYmZjY2Y0MDdm
OTFiMTFkOGEwMzQ2MTYxODI3YWNhNy4uNDM1ZjJjZTU2MzQ0OGZmMjQ0NjlmZmQ1YTAwZTliYjE0
NTdhOWJiNiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcworKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCkBAIC0yNiw5ICsyNiw5IEBAIEJvdW5jaW5nU3Zn
SW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKQogICAgIHJl
dHVybiBuZXcgQm91bmNpbmdTdmdJbWFnZSh0aGlzKTsKIH0KIAotZnVuY3Rpb24gQm91bmNpbmdT
dmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFy
ay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpOworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1h
cmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5w
cm90b3R5cGUpOwpAQCAtMzksNyArMzksNyBAQCBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQogICAgIHJldHVybiBuZXcg
Qm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKIH0KIAotd2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2luZG93LmJlbmNobWFya0NsaWVudC5jcmVh
dGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAg
cmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3Zn
SW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
c3ZnLXNoYXBlcy5qcwppbmRleCA3NmRjOWVlNTUzNzA5NDc2MzE3ZWM5NTQ0NDQ5MGI0ODQ4OTcy
NmYxLi5kMDI4MDFhYWMyOTZkZGU4ZGUzNTA0YmJjYmE2OWI2MjAwODEyOGFjIDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1z
aGFwZXMuanMKQEAgLTg1LDkgKzg1LDkgQEAgQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5
cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUpCiAgICAgdGhpcy5f
ZW5zdXJlRGVmc0lzQ3JlYXRlZCgpLnJlbW92ZUNoaWxkKGdyYWRpZW50KTsKIH0KIAotZnVuY3Rp
b24gQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICBCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpOworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhp
cywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogQm91bmNpbmdTdmdT
aGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtOTgsNyArOTgsNyBAQCBCb3VuY2luZ1N2Z1NoYXBl
c0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQogICAg
IHJldHVybiBuZXcgQm91bmNpbmdTdmdTaGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25z
KTsKIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2luZG93LmJlbmNobWFy
a0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NC
YXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayhzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4gbmV3
IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVz
c0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
ZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbAppbmRleCBjYzg3ODkxNTc0
NTBmZDQwZmE0NGEwZWQ2OTdmZGU4Mzg4ZTQ0NDgyLi4wOTA5NzMyZTFhNDM1YmNkZTk5NjBkNzc1
ZGFmN2VkY2QxMTMzMmNhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWwKQEAgLTcs
NyArNyw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0
PiAgICAKICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcyI+PC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFz
LXN0YXJzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMv
Y2FudmFzLXN0YXJzLmh0bWwKaW5kZXggMzgyNzQ4YWM3ZWMyZDc0MTMyZmViYzEwOTQzNmFlNTQx
ZWQ1NmQ2MC4uNTJhZDhmODNmZjM4MDM4ZjdlZGFlZjQ4ZGIyYTlkMWNkNzFhZDA1NSAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1z
dGFycy5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxl
cy9jYW52YXMtc3RhcnMuaHRtbApAQCAtNyw3ICs3LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
dGFnZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYW52YXMtc3Rh
cnMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ry
b25zLmpzCmluZGV4IDRlOTMyMDQ4ZDdjNDA5ZDdiYjk1M2MzMzE0MzRjNjlkYTQ0YWY4OTYuLjhk
ZTU4NDAxODdjNTllNjVjMDAyMTJhOTliMzA4YjA0YjJiM2MxYmYgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVs
ZWN0cm9ucy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBs
ZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMKQEAgLTEwNCw5ICsxMDQsOSBAQCBDYW52
YXNFbGVjdHJvbnNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkKICAgICBy
ZXR1cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpOwogfQogCi1m
dW5jdGlvbiBDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJl
Y29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIENhbnZhc0VsZWN0cm9uc0JlbmNobWFy
ayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgU3RhZ2VCZW5jaG1h
cmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKTsKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCBwcm9ncmVzc0Jhcik7CiB9CiAKIENhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CkBAIC0xMjQsOSArMTI0
LDkgQEAgQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9
IGZ1bmN0aW9uKCkKICAgICByZXR1cm4gbmV3IENhbnZhc0VsZWN0cm9uc0FuaW1hdG9yKHRoaXMs
IHRoaXMuX29wdGlvbnMpOwogfQogCi13aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1
bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCBwcm9ncmVzc0JhcikKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9t
IHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQogICAgIC8vIHRlc3QgYnkgY3JlYXRp
bmcgeW91ciBiZW5jaG1hcmsgb2JqZWN0LgotICAgIHJldHVybiBuZXcgQ2FudmFzRWxlY3Ryb25z
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
OworICAgIHJldHVybiBuZXcgQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0
YXJzLmpzCmluZGV4IGZiZGJiNGY5NWQ1NDEwZjEwNDcwZjI0OTMzNjAzNjYxZGI2N2RhYWMuLmQz
N2MyYTJjYmE1MDBiYzQ1NzQ5ZDQ3NjU1NjYwNzA2NTY3MTFmYTkgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0
YXJzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9y
ZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCkBAIC0xMDEsOSArMTAxLDkgQEAgQ2FudmFzU3RhcnNB
bmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkKICAgIHJldHVybiBTdGFnZUFu
aW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7CiB9CiAKLWZ1bmN0aW9uIENhbnZh
c1N0YXJzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jl
c3NCYXIpCitmdW5jdGlvbiBDYW52YXNTdGFyc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgU3RhZ2VCZW5jaG1h
cmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQogCiBD
YW52YXNTdGFyc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2ht
YXJrLnByb3RvdHlwZSk7CkBAIC0xMjEsOSArMTIxLDkgQEAgQ2FudmFzU3RhcnNCZW5jaG1hcmsu
cHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQogICAgcmV0dXJuIG5ldyBDYW52
YXNTdGFyc0FuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlvbnMpOwogfQogCi13aW5kb3cuYmVuY2ht
YXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0
aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKICAgIC8vIFRoaXMgZnVu
Y3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCiAg
ICAvLyB0ZXN0IGJ5IGNyZWF0aW5nIHlvdXIgYmVuY2htYXJrIG9iamVjdC4KLSAgIHJldHVybiBu
ZXcgQ2FudmFzU3RhcnNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0Jhcik7CisgICByZXR1cm4gbmV3IENhbnZhc1N0YXJzQmVuY2htYXJrKHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rl
ci9jYW52YXMtc3RhZ2UuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9t
YXN0ZXIvY2FudmFzLXN0YWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y0NmFlOTRiNWJmNWQ4NWUzMDhk
NzgxNjU5NDZkMjU3MGZhODRhYgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWwKQEAgLTAsMCArMSwxOCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InJlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy9jYW52YXMtc3RhZ2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y2FudmFzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMg
aWQ9InN0YWdlIj48L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFn
ZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2Vz
L2NhbnZhcy1zdGFnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWU4ZmNhNWNjYTQ0Y2YzMzBkMTUxYTJjODJl
ZDQ5Nzk5OTQ3ODcxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzCkBAIC0wLDAgKzEsNjEg
QEAKK2Z1bmN0aW9uIFNpbXBsZUNhbnZhc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMsIGNhbnZhc09i
amVjdCkKK3sKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRo
aXMub3B0aW9ucyA9IG9wdGlvbnM7CisgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50Lmdl
dENvbnRleHQoIjJkIik7CisgICAgdGhpcy5jYW52YXNPYmplY3QgPSBjYW52YXNPYmplY3Q7Cisg
ICAgdGhpcy5fb2JqZWN0cyA9IFtdOworfQorU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gU2ltcGxlQ2FudmFzU3RhZ2U7CitTaW1wbGVDYW52YXNTdGFnZS5w
cm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIGlmIChjb3VudCA9PSAwKQor
ICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0cy5sZW5ndGg7CisKKyAgICBpZiAoY291bnQgPiAw
KSB7CisgICAgICAgIC8vIEZvciBwYXRoLWJhc2VkIHRlc3RzLCB1c2UgdGhlIG9iamVjdCBsZW5n
dGggYXMgYSBtYXhpbXVtIGNvb3JkaW5hdGUgdmFsdWUKKyAgICAgICAgLy8gdG8gbWFrZSBpdCBl
YXNpZXIgdG8gc2VlIHdoYXQgdGhlIHRlc3QgaXMgZG9pbmcKKyAgICAgICAgdmFyIGNvb3JkaW5h
dGVNYXhpbXVtID0gTWF0aC5tYXgodGhpcy5fb2JqZWN0cy5sZW5ndGgsIDIwMCk7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgdGhpcy5fb2Jq
ZWN0cy5wdXNoKG5ldyB0aGlzLmNhbnZhc09iamVjdCh0aGlzLCBjb29yZGluYXRlTWF4aW11bSkp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKKyAgICB9
CisKKyAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5fb2JqZWN0cy5sZW5ndGgpOwor
ICAgIHRoaXMuX29iamVjdHMuc3BsaWNlKDAsIGNvdW50KTsKKyAgICByZXR1cm4gdGhpcy5fb2Jq
ZWN0cy5sZW5ndGg7Cit9CitTaW1wbGVDYW52YXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1
bmN0aW9uKCkKK3sKKyAgICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKKyAgICB0aGlzLl9v
YmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgICAgIG9iamVjdC5kcmF3KGNv
bnRleHQpOworICAgIH0pOworfQorCitmdW5jdGlvbiBTaW1wbGVDYW52YXNBbmltYXRvcihiZW5j
aG1hcmssIG9wdGlvbnMpCit7CisgICAgU3RhZ2VBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFy
aywgb3B0aW9ucyk7CisgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4
dDsKK30KKworU2ltcGxlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShT
dGFnZUFuaW1hdG9yLnByb3RvdHlwZSk7CitTaW1wbGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNBbmltYXRvcjsKK1NpbXBsZUNhbnZhc0FuaW1hdG9y
LnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2NvbnRleHQuY2xl
YXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9iZW5jaG1h
cmsuX3N0YWdlLnNpemUueSk7CisgICAgcmV0dXJuIFN0YWdlQW5pbWF0b3IucHJvdG90eXBlLmFu
aW1hdGUuY2FsbCh0aGlzLCB0aGlzLl9vcHRpb25zKTsKK30KKworCitmdW5jdGlvbiBTaW1wbGVD
YW52YXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKSB7CisgICAg
U3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NC
YXIpOworfQorU2ltcGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
U3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKK1NpbXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNCZW5jaG1hcms7CitTaW1wbGVDYW52YXNCZW5j
aG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IG5ldyBTaW1wbGVDYW52YXNBbmltYXRvcih0aGlzLCB0aGlzLl9vcHRpb25zKTsKK30KKwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJj
ZXMvY2FudmFzLXRlc3RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21h
c3Rlci9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4MDRlYzc2MjNiMWM1
YzFhNGVhZjVlMjU2YjUzZjYyOWQ1YzA4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMK
QEAgLTAsMCArMSwyMTEgQEAKKyhmdW5jdGlvbigpIHsKKworLy8gPT09IFBBSU5UIE9CSkVDVFMg
PT09CisKK2Z1bmN0aW9uIENhbnZhc0xpbmVTZWdtZW50KHN0YWdlKSB7CisgICAgdmFyIGNpcmNs
ZSA9IHN0YWdlLnJhbmRvbUludCgwLCAyKTsKKyAgICB0aGlzLl9jb2xvciA9IFsiI2UwMTA0MCIs
ICIjMTBjMDMwIiwgIiNlMDUwMTAiXVtjaXJjbGVdOworICAgIHRoaXMuX2xpbmVXaWR0aCA9IE1h
dGgucG93KE1hdGgucmFuZG9tKCksIDEyKSAqIDIwICsgMzsKKyAgICB0aGlzLl9vbWVnYSA9IE1h
dGgucmFuZG9tKCkgKiAzICsgMC4yOworICAgIHZhciB0aGV0YSA9IHN0YWdlLnJhbmRvbUFuZ2xl
KCk7CisgICAgdGhpcy5fY29zVGhldGEgPSBNYXRoLmNvcyh0aGV0YSk7CisgICAgdGhpcy5fc2lu
VGhldGEgPSBNYXRoLnNpbih0aGV0YSk7CisgICAgdGhpcy5fc3RhcnRYID0gc3RhZ2UuY2lyY2xl
UmFkaXVzICogdGhpcy5fY29zVGhldGEgKyAoMC41ICsgY2lyY2xlKSAvIDMgKiBzdGFnZS5zaXpl
Lng7CisgICAgdGhpcy5fc3RhcnRZID0gc3RhZ2UuY2lyY2xlUmFkaXVzICogdGhpcy5fc2luVGhl
dGEgKyBzdGFnZS5zaXplLnkgLyAyOworICAgIHRoaXMuX2xlbmd0aCA9IE1hdGgucG93KE1hdGgu
cmFuZG9tKCksIDgpICogNDAgKyAyMDsKKyAgICB0aGlzLl9zZWdtZW50RGlyZWN0aW9uID0gTWF0
aC5yYW5kb20oKSA+IDAuNSA/IC0xIDogMTsKK30KKworQ2FudmFzTGluZVNlZ21lbnQucHJvdG90
eXBlLmRyYXcgPSBmdW5jdGlvbihjb250ZXh0KSB7CisgICAgY29udGV4dC5zdHJva2VTdHlsZSA9
IHRoaXMuX2NvbG9yOworICAgIGNvbnRleHQubGluZVdpZHRoID0gdGhpcy5fbGluZVdpZHRoOwor
CisgICAgdGhpcy5fbGVuZ3RoKz1NYXRoLnNpbihEYXRlLm5vdygpLzEwMCp0aGlzLl9vbWVnYSk7
CisKKyAgICBjb250ZXh0LmJlZ2luUGF0aCgpOworICAgIGNvbnRleHQubW92ZVRvKHRoaXMuX3N0
YXJ0WCwgdGhpcy5fc3RhcnRZKTsKKyAgICBjb250ZXh0LmxpbmVUbyh0aGlzLl9zdGFydFggKyB0
aGlzLl9zZWdtZW50RGlyZWN0aW9uICogdGhpcy5fbGVuZ3RoICogdGhpcy5fY29zVGhldGEsCisg
ICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRZICsgdGhpcy5fc2VnbWVudERpcmVjdGlvbiAq
IHRoaXMuX2xlbmd0aCAqIHRoaXMuX3NpblRoZXRhKTsKKyAgICBjb250ZXh0LnN0cm9rZSgpOwor
fTsKKworZnVuY3Rpb24gQ2FudmFzQXJjKHN0YWdlKSB7CisgICAgdmFyIG1heFggPSA2LCBtYXhZ
ID0gMzsKKyAgICB2YXIgZGlzdGFuY2VYID0gc3RhZ2Uuc2l6ZS54IC8gbWF4WDsKKyAgICB2YXIg
ZGlzdGFuY2VZID0gc3RhZ2Uuc2l6ZS55IC8gKG1heFkgKyAxKTsKKyAgICB2YXIgcmFuZFkgPSBz
dGFnZS5yYW5kb21JbnQoMCwgbWF4WSk7CisgICAgdmFyIHJhbmRYID0gc3RhZ2UucmFuZG9tSW50
KDAsIG1heFggLSAxICogKHJhbmRZICUgMikpOworCisgICAgdGhpcy5fcG9pbnQgPSBuZXcgUG9p
bnQoZGlzdGFuY2VYICogKHJhbmRYICsgKHJhbmRZICUgMikgLyAyKSwgZGlzdGFuY2VZICogKHJh
bmRZICsgLjUpKTsKKworICAgIHRoaXMuX3JhZGl1cyA9IDIwICsgTWF0aC5wb3coTWF0aC5yYW5k
b20oKSwgNSkgKiAoTWF0aC5taW4oZGlzdGFuY2VYLCBkaXN0YW5jZVkpIC8gMS42KTsKKyAgICB0
aGlzLl9zdGFydEFuZ2xlID0gc3RhZ2UucmFuZG9tQW5nbGUoKTsKKyAgICB0aGlzLl9lbmRBbmds
ZSA9IHN0YWdlLnJhbmRvbUFuZ2xlKCk7CisgICAgdGhpcy5fb21lZ2EgPSAoTWF0aC5yYW5kb20o
KSAtIDAuNSkgKiAwLjM7CisgICAgdGhpcy5fY291bnRlcmNsb2Nrd2lzZSA9IHN0YWdlLnJhbmRv
bUJvb2woKTsKKyAgICB2YXIgY29sb3JzID0gWyIjMTAxMDEwIiwgIiM4MDgwODAiLCAiI2MwYzBj
MCJdOworICAgIGNvbG9ycy5wdXNoKFsiI2UwMTA0MCIsICIjMTBjMDMwIiwgIiNlMDUwMTAiXVso
cmFuZFggKyBNYXRoLmNlaWwocmFuZFkgLyAyKSkgJSAzXSk7CisgICAgdGhpcy5fY29sb3IgPSBj
b2xvcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY29sb3JzLmxlbmd0aCldOworICAgIHRo
aXMuX2xpbmVXaWR0aCA9IDEgKyBNYXRoLnBvdyhNYXRoLnJhbmRvbSgpLCA1KSAqIDMwOworICAg
IHRoaXMuX2RvU3Ryb2tlID0gc3RhZ2UucmFuZG9tSW50KDAsIDMpICE9IDA7Cit9OworCitDYW52
YXNBcmMucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjb250ZXh0KSB7CisgICAgdGhpcy5fc3Rh
cnRBbmdsZSArPSB0aGlzLl9vbWVnYTsKKyAgICB0aGlzLl9lbmRBbmdsZSArPSB0aGlzLl9vbWVn
YSAvIDI7CisKKyAgICBpZiAodGhpcy5fZG9TdHJva2UpIHsKKyAgICAgICAgY29udGV4dC5zdHJv
a2VTdHlsZSA9IHRoaXMuX2NvbG9yOworICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRoaXMu
X2xpbmVXaWR0aDsKKyAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgY29udGV4
dC5hcmModGhpcy5fcG9pbnQueCwgdGhpcy5fcG9pbnQueSwgdGhpcy5fcmFkaXVzLCB0aGlzLl9z
dGFydEFuZ2xlLCB0aGlzLl9lbmRBbmdsZSwgdGhpcy5fY291bnRlcmNsb2Nrd2lzZSk7CisgICAg
ICAgIGNvbnRleHQuc3Ryb2tlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29udGV4dC5maWxs
U3R5bGUgPSB0aGlzLl9jb2xvcjsKKyAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAg
ICAgY29udGV4dC5saW5lVG8odGhpcy5fcG9pbnQueCwgdGhpcy5fcG9pbnQueSk7CisgICAgICAg
IGNvbnRleHQuYXJjKHRoaXMuX3BvaW50LngsIHRoaXMuX3BvaW50LnksIHRoaXMuX3JhZGl1cywg
dGhpcy5fc3RhcnRBbmdsZSwgdGhpcy5fZW5kQW5nbGUsIHRoaXMuX2NvdW50ZXJjbG9ja3dpc2Up
OworICAgICAgICBjb250ZXh0LmxpbmVUbyh0aGlzLl9wb2ludC54LCB0aGlzLl9wb2ludC55KTsK
KyAgICAgICAgY29udGV4dC5maWxsKCk7CisgICAgfQorfTsKKworZnVuY3Rpb24gQ2FudmFzTGlu
ZVBvaW50KHN0YWdlLCBjb29yZGluYXRlTWF4aW11bSkgeworICAgIHZhciBYX0xPT1BTID0gNDA7
CisgICAgdmFyIFlfTE9PUFMgPSAyMDsKKworICAgIHZhciBvZmZzZXRzID0gW1stMiwgLTFdLCBb
MiwgMV0sIFstMSwgMF0sIFsxLCAwXSwgWy0xLCAyXSwgWzEsIC0yXV07CisgICAgdmFyIG9mZnNl
dCA9IG9mZnNldHNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogb2Zmc2V0cy5sZW5ndGgpXTsK
KworICAgIHRoaXMuY29vcmRpbmF0ZSA9IG5ldyBQb2ludChYX0xPT1BTLzIsIFlfTE9PUFMvMik7
CisgICAgaWYgKHN0YWdlLl9vYmplY3RzLmxlbmd0aCkgeworICAgICAgICB2YXIgaGVhZCA9IHN0
YWdlLl9vYmplY3RzW3N0YWdlLl9vYmplY3RzLmxlbmd0aCAtIDFdLmNvb3JkaW5hdGU7CisgICAg
ICAgIHRoaXMuY29vcmRpbmF0ZS54ID0gaGVhZC54OworICAgICAgICB0aGlzLmNvb3JkaW5hdGUu
eSA9IGhlYWQueTsKKyAgICB9CisKKyAgICB2YXIgbmV4dENvb3JkaW5hdGUgPSB0aGlzLmNvb3Jk
aW5hdGUueCArIG9mZnNldFswXTsKKyAgICBpZiAobmV4dENvb3JkaW5hdGUgPCAwIHx8IG5leHRD
b29yZGluYXRlID4gWF9MT09QUykKKyAgICAgICAgdGhpcy5jb29yZGluYXRlLnggLT0gb2Zmc2V0
WzBdOworICAgIGVsc2UKKyAgICAgICAgdGhpcy5jb29yZGluYXRlLnggPSBuZXh0Q29vcmRpbmF0
ZTsKKyAgICBuZXh0Q29vcmRpbmF0ZSA9IHRoaXMuY29vcmRpbmF0ZS55ICsgb2Zmc2V0WzFdOwor
ICAgIGlmIChuZXh0Q29vcmRpbmF0ZSA8IDAgfHwgbmV4dENvb3JkaW5hdGUgPiBZX0xPT1BTKQor
ICAgICAgICB0aGlzLmNvb3JkaW5hdGUueSAtPSBvZmZzZXRbMV07CisgICAgZWxzZQorICAgICAg
ICB0aGlzLmNvb3JkaW5hdGUueSA9IG5leHRDb29yZGluYXRlOworCisgICAgdmFyIHhPZmYgPSAu
MjUgKiAodGhpcy5jb29yZGluYXRlLnkgJSAyKTsKKyAgICB2YXIgcmFuZFggPSAoeE9mZiArIHRo
aXMuY29vcmRpbmF0ZS54KSAqIHN0YWdlLnNpemUueCAvIFhfTE9PUFM7CisgICAgdmFyIHJhbmRZ
ID0gdGhpcy5jb29yZGluYXRlLnkgKiBzdGFnZS5zaXplLnkgLyBZX0xPT1BTOworICAgIHZhciBj
b2xvcnMgPSBbIiMxMDEwMTAiLCAiIzgwODA4MCIsICIjYzBjMGMwIiwgIiNlMDEwNDAiXTsKKyAg
ICB0aGlzLl9jb2xvciA9IGNvbG9yc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjb2xvcnMu
bGVuZ3RoKV07CisKKyAgICB0aGlzLl93aWR0aCA9IE1hdGgucG93KE1hdGgucmFuZG9tKCksIDUp
ICogMjAgKyAxOworICAgIHRoaXMuX2lzU3BsaXQgPSBNYXRoLnJhbmRvbSgpID4gMC45OworICAg
IHRoaXMuX3BvaW50ID0gbmV3IFBvaW50KHJhbmRYLCByYW5kWSk7CisKK30KKworQ2FudmFzTGlu
ZVBvaW50LnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY29udGV4dCwgc3RhZ2UpIHsKKyAgICBj
b250ZXh0LmxpbmVUbyh0aGlzLl9wb2ludC54LCB0aGlzLl9wb2ludC55KTsKK307CisKKworLy8g
PT09IFNUQUdFUyA9PT0KKworZnVuY3Rpb24gU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlKGVs
ZW1lbnQsIG9wdGlvbnMsIGNhbnZhc09iamVjdCkgeworICAgIFNpbXBsZUNhbnZhc1N0YWdlLmNh
bGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KTsKKyAgICB0aGlzLmNvbnRl
eHQubGluZUNhcCA9IG9wdGlvbnNbImxpbmVDYXAiXSB8fCAiYnV0dCI7CisgICAgdGhpcy5jb250
ZXh0LmxpbmVKb2luID0gb3B0aW9uc1sibGluZUpvaW4iXSB8fCAiYmV2ZWwiOworfQorU2ltcGxl
Q2FudmFzUGF0aFN0cm9rZVN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2ltcGxlQ2Fu
dmFzU3RhZ2UucHJvdG90eXBlKTsKK1NpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2U7CitTaW1wbGVDYW52
YXNQYXRoU3Ryb2tlU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsKKyAgICB2
YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKKyAgICB2YXIgc3RhZ2UgPSB0aGlzOworCisgICAg
Y29udGV4dC5iZWdpblBhdGgoKTsKKyAgICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVuY3Rpb24o
b2JqZWN0LCBpbmRleCkgeworICAgICAgICBpZiAoaW5kZXggPT0gMCkgeworICAgICAgICAgICAg
Y29udGV4dC5saW5lV2lkdGggPSBvYmplY3QuX3dpZHRoOworICAgICAgICAgICAgY29udGV4dC5z
dHJva2VTdHlsZSA9IG9iamVjdC5fY29sb3I7CisgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhv
YmplY3QuX3BvaW50LngsIG9iamVjdC5fcG9pbnQueSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAob2JqZWN0Ll9pc1NwbGl0KSB7CisgICAgICAgICAgICAgICAgY29udGV4dC5z
dHJva2UoKTsKKworICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gb2JqZWN0Ll93
aWR0aDsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gb2JqZWN0Ll9jb2xv
cjsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoTWF0aC5yYW5kb20oKSA+IDAuOTk5KQorICAgICAgICAgICAgICAg
IG9iamVjdC5faXNTcGxpdCA9ICFvYmplY3QuX2lzU3BsaXQ7CisKKyAgICAgICAgICAgIG9iamVj
dC5kcmF3KGNvbnRleHQpOworICAgICAgICB9CisgICAgfSk7CisgICAgY29udGV4dC5zdHJva2Uo
KTsKK30KKworZnVuY3Rpb24gQ2FudmFzTGluZVNlZ21lbnRTdGFnZShlbGVtZW50LCBvcHRpb25z
KQoreworICAgIFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywg
Q2FudmFzTGluZVNlZ21lbnQpOworICAgIHRoaXMuY29udGV4dC5saW5lQ2FwID0gb3B0aW9uc1si
bGluZUNhcCJdIHx8ICJidXR0IjsKKyAgICB0aGlzLmNpcmNsZVJhZGl1cyA9IHRoaXMuc2l6ZS54
IC8gMyAvIDIgLSAyMDsKK30KK0NhbnZhc0xpbmVTZWdtZW50U3RhZ2UucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShTaW1wbGVDYW52YXNTdGFnZS5wcm90b3R5cGUpOworQ2FudmFzTGluZVNlZ21l
bnRTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNMaW5lU2VnbWVudFN0YWdlOwor
Q2FudmFzTGluZVNlZ21lbnRTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkgewor
ICAgIHZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OworICAgIHZhciBzdGFnZSA9IHRoaXM7CisK
KyAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDMwOworICAgIGZvcih2YXIgaSA9IDA7IGkgPCAzOyBp
KyspIHsKKyAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IFsiI2UwMTA0MCIsICIjMTBjMDMw
IiwgIiNlMDUwMTAiXVtpXTsKKyAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBbIiM3MDA1MWQi
LCAiIzAxNjExMiIsICIjNzAyNzAxIl1baV07CisgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7
CisgICAgICAgICAgICBjb250ZXh0LmFyYygoMC41ICsgaSkgLyAzICogc3RhZ2Uuc2l6ZS54LCBz
dGFnZS5zaXplLnkvMiwgc3RhZ2UuY2lyY2xlUmFkaXVzLCAwLCBNYXRoLlBJKjIpOworICAgICAg
ICBjb250ZXh0LnN0cm9rZSgpOworICAgICAgICBjb250ZXh0LmZpbGwoKTsKKyAgICB9CisKKyAg
ICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgICAgIG9iamVj
dC5kcmF3KGNvbnRleHQpOworICAgIH0pOworfQorCitmdW5jdGlvbiBDYW52YXNMaW5lUGF0aFN0
YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdl
LmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywgQ2FudmFzTGluZVBvaW50KTsKKyAgICB0aGlz
LmNvbnRleHQubGluZUpvaW4gPSBvcHRpb25zWyJsaW5lSm9pbiJdIHx8ICJiZXZlbCI7CisgICAg
dGhpcy5jb250ZXh0LmxpbmVDYXAgPSBvcHRpb25zWyJsaW5lQ2FwIl0gfHwgImJ1dHQiOworfQor
Q2FudmFzTGluZVBhdGhTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNpbXBsZUNhbnZh
c1BhdGhTdHJva2VTdGFnZS5wcm90b3R5cGUpOworQ2FudmFzTGluZVBhdGhTdGFnZS5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBDYW52YXNMaW5lUGF0aFN0YWdlOworCisvLyA9PT0gQkVOQ0hNQVJL
ID09PQorCitmdW5jdGlvbiBDYW52YXNQYXRoQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCBwcm9ncmVzc0JhcikgeworICAgIFNpbXBsZUNhbnZhc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Cit9CitDYW52YXNQYXRoQmVuY2htYXJr
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2ltcGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlw
ZSk7CitDYW52YXNQYXRoQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENhbnZhc1Bh
dGhCZW5jaG1hcms7CitDYW52YXNQYXRoQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9
IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgc3dpdGNoICh0aGlzLl9vcHRpb25zWyJwYXRoVHlw
ZSJdKSB7CisgICAgY2FzZSAibGluZSI6CisgICAgICAgIHJldHVybiBuZXcgQ2FudmFzTGluZVNl
Z21lbnRTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKKyAgICBjYXNlICJhcmNzIjoKKyAg
ICAgICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25z
LCBDYW52YXNBcmMpOworICAgIGNhc2UgImxpbmVQYXRoIjoKKyAgICAgICAgcmV0dXJuIG5ldyBD
YW52YXNMaW5lUGF0aFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworICAgIH0KK30KKwor
d2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcHJvZ3Jlc3NCYXIpIHsKKyAgICByZXR1cm4gbmV3IENhbnZhc1BhdGhCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKK30KKworfSkoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9zdGFnZS5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9zdGFnZS5jc3MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I1
ZjgxY2YxZWU4ODVkYzg0NTFiYzhhMzRjMWI0NWVkNzlhN2FjYQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL3N0YWdl
LmNzcwpAQCAtMCwwICsxLDE3IEBACitodG1sIHsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9Citib2R5
IHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgb3ZlcmZsb3c6IGhp
ZGRlbjsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2IoMjQxLCAyNDEsIDI0MSk7Cit9CisKKyNzdGFnZSB7CisgIHdpZHRoOiAxMDAlOwor
ICBoZWlnaHQ6IDEwMCU7CisgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDEsIDI0MSwgMjQxKTsK
K30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL2Nv
bXBvc2l0aW5nLXRyYW5zZm9ybXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9taXNjL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuaHRtbAppbmRleCBkMGZmZjUyYTUwZTVi
NWEzM2JiYzUwMWU3ZDI0YTRiZGZjMWQ4MjA0Li5kZWJmNTgyNjI0MmFmYzg1ZmU0ZGFiNGJlOTNj
OGRiNDUzMzNiZTliIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvbWlzYy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5odG1sCkBAIC0x
NCw3ICsxNCw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PiAgICAKICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCiAg
ICAgPHNjcmlwdCBzcmM9Ii4uL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
cGFydGljbGVzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0
aW5nLXRyYW5zZm9ybXMuanMKaW5kZXggOWJlOTllYzJmNWJhZTk3ZDUxYWEyZGViOTBlYWJmMTI2
NWYzYmE3MS4uNjI0OWZkNmNkNjBiNDQ1OWNkNGUwN2IxZWRlMTA0YTM5OWE0ZGYyOCAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2Nv
bXBvc2l0aW5nLXRyYW5zZm9ybXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuanMKQEAgLTQ4LDkg
KzQ4LDkgQEAgQ29tcG9zaXRpbmdUcmFuc2Zvcm1zU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2ls
bEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKQogICAgIHBhcnRpY2xlLmVsZW1lbnQucmVt
b3ZlKCk7CiB9CiAKLWZ1bmN0aW9uIENvbXBvc2l0ZWRUcmFuc2Zvcm1zQmVuY2htYXJrKHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBDb21w
b3NpdGVkVHJhbnNmb3Jtc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NC
YXIpCiB7Ci0gICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVz
c0Jhcik7CiB9CiAKIENvbXBvc2l0ZWRUcmFuc2Zvcm1zQmVuY2htYXJrLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKQEAgLTYx
LDcgKzYxLDcgQEAgQ29tcG9zaXRlZFRyYW5zZm9ybXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0
ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKICAgICByZXR1cm4gbmV3IENvbXBvc2l0aW5nVHJh
bnNmb3Jtc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwogfQogCi13aW5kb3cuYmVuY2ht
YXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0
aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICByZXR1cm4gbmV3
IENvbXBvc2l0ZWRUcmFuc2Zvcm1zQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIHJldHVybiBuZXcgQ29tcG9zaXRlZFRyYW5zZm9y
bXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcwpp
bmRleCBiYzM5NTQxZDBjMWUyZmRhM2Y1YTE0ZDNlMjEzNDk0ZTkxZTVjMWVlLi40OTEzYTJlNmRk
NzE0YmExZTQ5MTEwNDA5ZmU2M2VjZWYyNGNjMGY0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzCkBAIC0xOTUsNyArMTk1LDcg
QEAgQmVuY2htYXJrLnByb3RvdHlwZSA9CiAgICAgICAgIGlmIChzdGFnZSAhPSBCZW5jaG1hcmtT
dGF0ZS5zdGFnZXMuRklOSVNIRUQgJiYgY3VycmVudFRpbWVPZmZzZXQgPCB0aGlzLl9yZWNvcmRU
aW1lT2Zmc2V0ICsgdGhpcy5fcmVjb3JkSW50ZXJ2YWwpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgdGhpcy5zaG93UmVzdWx0cyh0aGlzLl9zdGF0ZS5jdXJyZW50TWVzc2FnZSgpLCB0
aGlzLl9zdGF0ZS5jdXJyZW50UHJvZ3Jlc3MoKSk7CisgICAgICAgIHRoaXMuc2hvd1Jlc3VsdHMo
dGhpcy5fc3RhdGUuY3VycmVudFByb2dyZXNzKCksIHRoaXMuX3N0YXRlLmN1cnJlbnRNZXNzYWdl
KCkpOwogICAgICAgICB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7
CiAgICAgfSwKICAgICAKQEAgLTIyOCwxMSArMjI4LDExIEBAIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgZnVuY3Rpb24oKQogfSk7CiAKIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk
IGZyb20gdGhlIHN1aXRlIGNvbnRyb2xsZXIgcnVuLWNhbGxiYWNrIHdoZW4gcnVubmluZyB0aGUg
YmVuY2htYXJrIHJ1bm5lci4KLXdpbmRvdy5ydW5CZW5jaG1hcmsgPSBmdW5jdGlvbihzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2luZG93LnJ1bkJlbmNo
bWFyayA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKICAg
ICB2YXIgYmVuY2htYXJrT3B0aW9ucyA9IHsgY29tcGxleGl0eTogdGVzdC5jb21wbGV4aXR5IH07
CiAgICAgYmVuY2htYXJrT3B0aW9ucyA9IFV0aWxpdGllcy5tZXJnZU9iamVjdHMoYmVuY2htYXJr
T3B0aW9ucywgb3B0aW9ucyk7CiAgICAgYmVuY2htYXJrT3B0aW9ucyA9IFV0aWxpdGllcy5tZXJn
ZU9iamVjdHMoYmVuY2htYXJrT3B0aW9ucywgVXRpbGl0aWVzLnBhcnNlUGFyYW1ldGVycygpKTsK
LSAgICB3aW5kb3cuYmVuY2htYXJrID0gd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUoc3Vp
dGUsIHRlc3QsIGJlbmNobWFya09wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cisg
ICAgd2luZG93LmJlbmNobWFyayA9IHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKHN1aXRl
LCB0ZXN0LCBiZW5jaG1hcmtPcHRpb25zLCBwcm9ncmVzc0Jhcik7CiAgICAgcmV0dXJuIHdpbmRv
dy5iZW5jaG1hcmsucnVuKCk7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwppbmRleCBhZGIzMjMwZWVjYzEzN2I2ZjE5ZTgx
ZGI3NGVjYzdiMWM3NDE2YWI1Li43YjBiMTE0MGVhN2M5YWE2YmJkNGI5ZGU1YWQzYTRhMDI5Y2Uy
Y2UyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3Vy
Y2VzL3N0YWdlLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMvc3RhZ2UuanMKQEAgLTEyOCw3ICsxMjgsNyBAQCBTdGFnZUFuaW1hdG9yLnByb3RvdHlw
ZS5hbmltYXRlID0gZnVuY3Rpb24oKQogICAgIHJldHVybiB0cnVlOwogfQogCi1mdW5jdGlvbiBT
dGFnZUJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKQorZnVuY3Rpb24gU3RhZ2VCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dy
ZXNzQmFyKQogewogICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG9wdGlvbnMpOwogICAgIApAQCAt
MTQwLDcgKzE0MCw2IEBAIGZ1bmN0aW9uIFN0YWdlQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCiAgICAgdGhpcy5fYW5pbWF0b3IgPSB0aGlz
LmNyZWF0ZUFuaW1hdG9yKCk7CiAgICAgdGhpcy5fc3VpdGUgPSBzdWl0ZTsKICAgICB0aGlzLl90
ZXN0ID0gdGVzdDsKLSAgICB0aGlzLl9yZWNvcmRUYWJsZSA9IHJlY29yZFRhYmxlOwogICAgIHRo
aXMuX3Byb2dyZXNzQmFyID0gcHJvZ3Jlc3NCYXI7CiB9CiAKQEAgLTE2NywxMyArMTY2LDEwIEBA
IFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4g
dGhpcy5fc3RhZ2UuY2xlYXIoKTsKIH0KIAotU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNob3dS
ZXN1bHRzID0gZnVuY3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpCitTdGFnZUJlbmNobWFyay5wcm90
b3R5cGUuc2hvd1Jlc3VsdHMgPSBmdW5jdGlvbihwcm9ncmVzcywgbWVzc2FnZSkKIHsKLSAgICBp
ZiAoIXRoaXMuX3JlY29yZFRhYmxlIHx8ICF0aGlzLl9wcm9ncmVzc0JhciB8fCAhdGhpcy5fdGVz
dCkKKyAgICBpZiAoIXRoaXMuX3Byb2dyZXNzQmFyIHx8ICF0aGlzLl90ZXN0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAodGhpcy5fb3B0aW9uc1siZGlzcGxheSJdID09ICJzdGF0aXN0aWNz
LXRhYmxlIikKLSAgICAgICAgdGhpcy5fcmVjb3JkVGFibGUuc2hvd1JlY29yZCh0aGlzLl90ZXN0
Lm5hbWUsIG1lc3NhZ2UsIHRoaXMuX3NhbXBsZXIudG9KU09OKHRydWUsIGZhbHNlKSwgdGhpcy5f
b3B0aW9ucyk7Ci0KICAgICB0aGlzLl9wcm9ncmVzc0Jhci5zZXRQb3MocHJvZ3Jlc3MpOwogfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91
dGlsaXRpZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L3V0aWxpdGllcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjNzY0OWRjNzdh
NDJhNDUyYTZhY2MzNWI2OTg2OGUxOGI3MzJkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzL3V0aWxpdGllcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLXdpbmRv
dy5VdGlsaXRpZXMgPQotewotICAgIF9wYXJzZTogZnVuY3Rpb24oc3RyLCBzZXApCi0gICAgewot
ICAgICAgICB2YXIgb3V0cHV0ID0ge307Ci0gICAgICAgIHN0ci5zcGxpdChzZXApLmZvckVhY2go
ZnVuY3Rpb24ocGFydCkgewotICAgICAgICAgICAgdmFyIGl0ZW0gPSBwYXJ0LnNwbGl0KCI9Iik7
Ci0gICAgICAgICAgICB2YXIgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoaXRlbVsxXSk7Ci0g
ICAgICAgICAgICBpZiAodmFsdWVbMF0gPT0gIiciICkKLSAgICAgICAgICAgICAgICBvdXRwdXRb
aXRlbVswXV0gPSB2YWx1ZS5zdWJzdHIoMSwgdmFsdWUubGVuZ3RoIC0gMik7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgb3V0cHV0W2l0ZW1bMF1dID0gdmFsdWU7ICAgICAgICAg
ICAgICAgIAotICAgICAgICAgIH0pOwotICAgICAgICByZXR1cm4gb3V0cHV0OwotICAgIH0sCi0g
ICAgCi0gICAgcGFyc2VQYXJhbWV0ZXJzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fcGFyc2Uod2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSksICImIik7Ci0g
ICAgfSwKLSAgICAKLSAgICBwYXJzZUFyZ3VtZW50czogZnVuY3Rpb24oc3RyKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlKHN0ciwgIiAiKTsKLSAgICB9LAotICAgIAotICAgIGV4
dGVuZE9iamVjdDogZnVuY3Rpb24ob2JqMSwgb2JqMikKLSAgICB7Ci0gICAgICAgIGZvciAodmFy
IGF0dHJuYW1lIGluIG9iajIpCi0gICAgICAgICAgICBvYmoxW2F0dHJuYW1lXSA9IG9iajJbYXR0
cm5hbWVdOwotICAgICAgICByZXR1cm4gb2JqMTsKLSAgICB9LAotICAgIAotICAgIGNvcHlPYmpl
Y3Q6IGZ1bmN0aW9uKG9iaikKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmV4dGVuZE9iamVj
dCh7fSwgb2JqKTsKLSAgICB9LAotICAgIAotICAgIG1lcmdlT2JqZWN0czogZnVuY3Rpb24ob2Jq
MSwgb2JqMikKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmV4dGVuZE9iamVjdCh0aGlzLmNv
cHlPYmplY3Qob2JqMSksIG9iajIpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMtcGF0
aHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNl
cy9zaW1wbGUtY2FudmFzLXBhdGhzLmpzCmluZGV4IDM3MjE1ZWE0OGVkODNiM2U1MDUzZjhkMjZh
NjVhMjIxMjgyYmIyYjEuLjFkYWQyMDViZmVhNDczNWMwN2E2ZjM4NmZkMjA1YmE4YzhkNjg0MWIg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVz
b3VyY2VzL3NpbXBsZS1jYW52YXMtcGF0aHMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRocy5qcwpAQCAt
MjQ0LDggKzI0NCw4IEBAIENhbnZhc0xpbmVEYXNoU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBm
dW5jdGlvbigpIHsKIAogLy8gPT09IEJFTkNITUFSSyA9PT0KIAotZnVuY3Rpb24gQ2FudmFzUGF0
aEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KSB7Ci0gICAgU2ltcGxlQ2FudmFzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CitmdW5jdGlvbiBDYW52YXNQYXRoQmVu
Y2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikgeworICAgIFNpbXBsZUNh
bnZhc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jh
cik7CiB9CiBDYW52YXNQYXRoQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2lt
cGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZSk7CiBDYW52YXNQYXRoQmVuY2htYXJrLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IENhbnZhc1BhdGhCZW5jaG1hcms7CkBAIC0yOTAsNiArMjkwLDYg
QEAgQ2FudmFzUGF0aEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihl
bGVtZW50KQogICAgIH0KIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5j
dGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7Ci0g
ICAgcmV0dXJuIG5ldyBDYW52YXNQYXRoQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUg
PSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpIHsKKyAgICByZXR1
cm4gbmV3IENhbnZhc1BhdGhCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNz
QmFyKTsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9z
aW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzCmluZGV4IGFkZWVm
MTgyMzRhNDFjMzhkYmE4Y2IwNTU2OWNkNTk2ZDFiYzc5MmUuLjU1ZjRhODZiMzhiOGZiYTVjMDgw
MDU1NWUxOWVkZmRjNzk0MDFkM2EgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanMKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZh
cy5qcwpAQCAtNTEsMTEgKzUxLDggQEAgU2ltcGxlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlLmFu
aW1hdGUgPSBmdW5jdGlvbigpCiB9CiAKIAotZnVuY3Rpb24gU2ltcGxlQ2FudmFzQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKLSAgICBv
cHRpb25zWyJnYWluIl0gPSA2OwotICAgIG9wdGlvbnNbImFkZExpbWl0Il0gPSAxMDA7Ci0gICAg
b3B0aW9uc1sicmVtb3ZlTGltaXQiXSA9IDEwMDA7Ci0gICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0
aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK2Z1
bmN0aW9uIFNpbXBsZUNhbnZhc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jl
c3NCYXIpIHsKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCBwcm9ncmVzc0Jhcik7CiB9CiBTaW1wbGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOwogU2ltcGxlQ2FudmFzQmVu
Y2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNpbXBsZUNhbnZhc0JlbmNobWFyazsKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvc2ltcGxl
LWNhbnZhcy1wYXRocy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Np
bXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWwKaW5kZXggNjRkNzEwOWM0NjZhN2U0ODA3MjM4
Y2JjNGI4NDY5ZTFjNGJhMjJlZS4uMGQ1OTdmYjg4NjE0Njc1NTQ4ZGMxZjRjZDFlNzM2OWMxODg2
NjhkZiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBs
ZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3NpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWwKQEAgLTcsNyArNyw2IEBA
CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaW1wbGUtY2FudmFzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2Fu
dmFzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291
cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMKaW5kZXggYzZhNjAwZDU2Y2ExODgwZWExNDJiNTEzZjEw
YzU0ZDVhN2JhZGQxZC4uM2M4ODllZTc3N2YwMGVkZDY4MmQ1NmY2M2Q4MDlmNjQwMjI3NDlhNSAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jl
c291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMKQEAgLTc2LDkg
Kzc2LDkgQEAgVGVtcGxhdGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0
aW9uKCkKICAgICByZXR1cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRo
aXMpOwogfQogCi1mdW5jdGlvbiBUZW1wbGF0ZUNhbnZhc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQorZnVuY3Rpb24gVGVtcGxhdGVDYW52
YXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewotICAgIFN0
YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0Jhcik7CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQogCiBUZW1wbGF0ZUNhbnZhc0JlbmNobWFyay5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CkBAIC05
Niw5ICs5Niw5IEBAIFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmlt
YXRvciA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ2FudmFzQW5pbWF0b3Io
dGhpcywgdGhpcy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRl
ID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cikKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk
IGZyb20gdGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCiAgICAgLy8gdGVzdCBieSBj
cmVhdGluZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCi0gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNh
bnZhc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKTsKKyAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxh
dGUtY3NzLmpzCmluZGV4IDExY2U5NjE1MzdkYTI3OWJiYzA1YzJiMWMzN2YyZGU3ODRhYzZiOTUu
LjJlM2M5NTU0NGU2YzkxNzI1MmRlMTRjNDM0MjJkMTg3OGFmMjY2M2EgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxh
dGUtY3NzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0
ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzCkBAIC0zMiw5ICszMiw5IEBAIFRlbXBsYXRlQ3Nz
U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCiAgICAgLy8gTG9v
cCB0aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMgYW5kIGFzayB0aGVtIHRvIGFuaW1hdGUuCiB9CiAK
LWZ1bmN0aW9uIFRlbXBsYXRlQ3NzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBUZW1wbGF0ZUNzc0JlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgU3RhZ2VCZW5jaG1hcmsuY2Fs
bCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsK
KyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9n
cmVzc0Jhcik7CiB9CiAKIFRlbXBsYXRlQ3NzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKQEAgLTQ3LDkgKzQ3LDkgQEAgVGVtcGxh
dGVDc3NCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkK
ICAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ3NzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7
CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3dpbmRvdy5iZW5jaG1hcmtD
bGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFy
KQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHRlc3QgaGFybmVz
cyB3aGljaCBzdGFydHMgdGhlCiAgICAgLy8gdGVzdCBieSBjcmVhdGluZyB5b3VyIGJlbmNobWFy
ayBvYmplY3QuCi0gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNzc0JlbmNobWFyayhzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4gbmV3IFRl
bXBsYXRlQ3NzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUv
cmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzCmluZGV4IDQ4YTg0ZmFkNTBi
MWU0Y2NmY2UwNjBhYTg5NGQ2NGQ2MGVkZmM5MWEuLmE4OGFkZDc2Njc4OTNmNzQzNmRiOTAwODky
YWI3YmY1YmM4MTAxYTYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpz
CkBAIC0zMiw5ICszMiw5IEBAIFRlbXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBm
dW5jdGlvbih0aW1lRGVsdGEpCiAgICAgLy8gVE9ETzogTG9vcCB0aHJvdWdoIGFsbCB5b3VyIG9i
amVjdHMgYW5kIGFzayB0aGVtIHRvIGFuaW1hdGUuCiB9CiAKLWZ1bmN0aW9uIFRlbXBsYXRlU3Zn
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
CitmdW5jdGlvbiBUZW1wbGF0ZVN2Z0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJv
Z3Jlc3NCYXIpCiB7Ci0gICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICBTdGFnZUJlbmNobWFyay5j
YWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiAKIFRlbXBs
YXRlU3ZnQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsu
cHJvdG90eXBlKTsKQEAgLTQ3LDkgKzQ3LDkgQEAgVGVtcGxhdGVTdmdCZW5jaG1hcmsucHJvdG90
eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKICAgICByZXR1cm4gbmV3IFRlbXBs
YXRlU3ZnU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1h
cmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0JhcikKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rp
b24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCiAg
ICAgLy8gdGVzdCBieSBjcmVhdGluZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCi0gICAgcmV0dXJu
IG5ldyBUZW1wbGF0ZVN2Z0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4gbmV3IFRlbXBsYXRlU3ZnQmVuY2htYXJrKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2Fu
dmFzLmh0bWwKaW5kZXggNmNlNWRhYjkxZDVjZjFhOTM3YmUxZDJiYzM5NWE3OTdjNWIyMTY2Mi4u
YzE3ZDdmOTg4ZmU1NWE0ZWExYzE3MDdhOGFiYjUyY2YwZmVmNjAwNyAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5o
dG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1w
bGF0ZS1jYW52YXMuaHRtbApAQCAtNyw3ICs3LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFn
ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZW1wbGF0ZS1jYW52
YXMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sCmluZGV4IDJhYTgwZGI3MGNi
ZjFkOWMwY2ExNTk0ZTE5NzA1NTZhOTFlYzUyOGMuLjFiOWIwZmJkZDhlM2Y4NTZlMmUxYThlOGUz
ZWVkZjA5NmVlOGY2MzEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY3NzLmh0bWwKQEAgLTcsNyArNyw2IEBA
CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKICAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbCBi
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcu
aHRtbAppbmRleCBiOWM4ZmNlYjM1NWU3ZjlhZTYwN2RlNjVjMjZjNmFiYzk3NTliZTAxLi5hODFm
ODA4Mjg3ZjJhYzdiNGY3ZmU5ZWRiNDVmZGVmODFlNDllM2I4IDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2
Zy5odG1sCkBAIC03LDcgKzcsNiBAQAogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
c2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9l
eHRlbnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21h
dGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVz
LmpzIj48L3NjcmlwdD4gICAgCiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9s
YXllcmluZy10ZXh0Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4
dC9sYXllcmluZy10ZXh0Lmh0bWwKaW5kZXggZDUxZjMwMzE3YmM1YmU1NzgxZTQzYmRmZTk0MmYx
ZTNjYzQ0ZGViMy4uMzJkYTJhYzU1ZDNmZTAxNjc0NGIwNjQ5NjY1ZDcwMzIyYjkwYzY2YSAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmct
dGV4dC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xh
eWVyaW5nLXRleHQuaHRtbApAQCAtMjQsNyArMjQsNiBAQAogICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0
YWdlLmpzIj48L3NjcmlwdD4gIAogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGF5ZXJpbmct
dGV4dC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzCmluZGV4
IGY1ZjJhZjQwMGRkMDEwYjc2MDZkMGMwNTcxNGU3N2Q3MTI0MTUyMzkuLmUyYjdiYTk5Mjg4ZjAw
NmNmMTA2Y2I2YzEzNDlmOWNkZmE4ZTQwYjggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10
ZXh0LmpzCkBAIC0yMzYsOSArMjM2LDkgQEAgTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLnR1
bmUgPSBmdW5jdGlvbihjb3VudCkKICAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0
aDsKIH0KIAotZnVuY3Rpb24gTGF5ZXJpbmdUZXh0QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBMYXllcmluZ1RleHRCZW5j
aG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewotICAgIFN0YWdlQmVu
Y2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0Jhcik7CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQogCiBMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtMjQ5LDcgKzI0
OSw3IEBAIExheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5j
dGlvbihlbGVtZW50KQogICAgIHJldHVybiBuZXcgTGF5ZXJpbmdUZXh0U3RhZ2UoZWxlbWVudCwg
dGhpcy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVu
Y3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3dp
bmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHByb2dyZXNzQmFyKQogewotICAgIHJldHVybiBuZXcgTGF5ZXJpbmdUZXh0QmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIHJl
dHVybiBuZXcgTGF5ZXJpbmdUZXh0QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9n
cmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZhOTdiZjIyZmQxYmRjZjczMmIyNmRjZDEx
NTkxODE3YWE4OTViODAuLjQyOWUxODAwMmM0MWUzYjEyM2YzYTBhZGZmMjAwZmExZDljYzY1YWUg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzc3IEBACisyMDE1LTEyLTIzICBKb24gTGVlICA8
am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlm
ZmVyZW50IHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTI0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb3ZlIEFycmF5IGZ1bmN0aW9ucyB0byBleHRlbnNpb25zLmpzIHNpbmNlIHRoYXQgaXMg
aW5jbHVkZWQgYnkgdGhlIGhhcm5lc3MuCisgICAgICAgIEFkZCBFUzYgQXJyYXkgcG9seWZpbGxz
LgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzOgorICAgICAg
ICAoQXJyYXkucHJvdG90eXBlLnN3YXApOiBNb3ZlZCB0byBleHRlbnNpb25zLmpzLgorICAgICAg
ICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanM6CisgICAgICAgIChBcnJheS5w
cm90b3R5cGUuc3dhcCk6CisgICAgICAgIChBcnJheS5wcm90b3R5cGUuZmlsbCk6IEFkZGVkLgor
ICAgICAgICAoQXJyYXkucHJvdG90eXBlLmZpbmQpOiBBZGRlZC4KKworMjAxNS0xMi0yMyAgSm9u
IExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgYmVuY2htYXJrIGludG8g
dHdvIGRpZmZlcmVudCBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUyNDU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRqdXN0IHN0eWxlcyBmb3IgaVBhZC4KKworICAgICAgICAqIEFuaW1vbWV0
ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzczoKKyAgICAgICAgKEBtZWRpYSBzY3Jl
ZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoOiA3NjhweCkpOiBBcHBseSB0byBpUGFkIGFzIHdlbGwu
CisgICAgICAgIChAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogMTAyNHB4KSk6
IFVwZGF0ZSB3aWR0aCBmb3IgaVBhZHMuCisKKzIwMTUtMTItMjMgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IGJlbmNobWFyayBpbnRvIHR3byBkaWZmZXJlbnQg
cGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
anVzdG1lbnQgc3R5bGVzIGZvciBpT1MuCisKKyAgICAgICAgKiBBbmltb21ldGVyL2RldmVsb3Bl
ci5odG1sOiBEaWZmZXJlbnQgZGl2cyBjb250YWluIHRoZSBpZnJhbWUsIHNvIHVzZSBhIGNsYXNz
IGluc3RlYWQgYW5kCisgICAgICAgIHVwZGF0ZSB0aGUgc3R5bGUgcnVsZXMuCisgICAgICAgICog
QW5pbW9tZXRlci9pbmRleC5odG1sOgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2Rl
YnVnLXJ1bm5lci9hbmltb21ldGVyLmNzczogUmVtb3ZlIGV4dHJhbmVvdXMgcnVsZXMuCisgICAg
ICAgIChAbWVkaWEgc2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0aDogMTgwMHB4KSk6IE1vdmUg
dGhpcyB1cC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRl
ci5jc3M6IEFkZCBydWxlcyB0byBhY2NvbW9kYXRlIGlPUy4KKworMjAxNS0xMi0yMyAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgYmVuY2htYXJrIGludG8gdHdv
IGRpZmZlcmVudCBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUyNDU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgR2V0IHJpZCBvZiBwcmVmaXhlZCBmbGV4IHByb3BlcnRpZXMgZm9yIG5vdy4KKwor
ICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNz
czoKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3M6
CisKKzIwMTUtMTItMjMgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFNw
bGl0IGJlbmNobWFyayBpbnRvIHR3byBkaWZmZXJlbnQgcGFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgc3RydWN0dXJlIG9mIHRo
ZSBoYXJuZXNzLiBSZW1vdmUgdGhlIEpTT04tcGVyLXRlc3QgYnV0IGtlZXAKKyAgICAgICAgdGhl
IEpTT04gb2YgdGhlIHdob2xlIHRlc3QgcnVuLiBVc2UgdGhlIGZ1bGwgcGFnZSBpbiBvcmRlciB0
byBkaXNwbGF5CisgICAgICAgIHRoZSBncmFwaC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvZGV2
ZWxvcGVyLmh0bWw6IFVwZGF0ZSBzZXZlcmFsIG9mIHRoZSBKUyBmaWxlIGluY2x1ZGVzIHRvIFVU
Ri04LiBSZW1vdmUgaGVhZGVyIGFuZCBmb290ZXIuIFRlc3QgcmVzdWx0cyBzY3JlZW4gaW5jbHVk
ZXMgc2NvcmUsCisgICAgICAgIGF2ZXJhZ2UsIGFuZCB3b3JzdCA1JSBzdGF0aXN0aWNzLgorICAg
ICAgICAqIEFuaW1vbWV0ZXIvaW5kZXguaHRtbDogTWFrZSBzdHJ1Y3R1cmUgc2ltaWxhciB0byBk
ZXZlbG9wZXIuaHRtbC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5u
ZXIvYW5pbW9tZXRlci5jc3M6IFJlbW92ZSBtb3N0IG9mIHRoZQorICAgICAgICBidXR0b24gcnVs
ZXMgc2luY2UgdGhleSBhcmUgc3VwZXJmbHVvdXMuIE1vdmUgdGhlIHByb2dyZXNzIGJhciB0byB0
aGUKKyAgICAgICAgdG9wLCBmaXhlZC4gVXBkYXRlIHRoZSByZXN1bHRzIHBhZ2UgcnVsZXMuCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanM6
IFJlbW92ZSBtb3N0IG9mIHRoZQorICAgICAgICBhZGRpdGlvbnMgdG8gc2VjdGlvbnNNYW5hZ2Vy
IHNpbmNlIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIChzZXRTZWN0aW9uSGVh
ZGVyKTogVXBkYXRlcyBoZWFkZXIgb2YgdGhlIHNlY3Rpb24uCisgICAgICAgICh3aW5kb3cuc3Vp
dGVzTWFuYWdlci5fdXBkYXRlU3RhcnRCdXR0b25TdGF0ZSk6IFVwZGF0ZSBzZWxlY3Rvci4KKyAg
ICAgICAgKHNob3dSZXN1bHRzKTogQWRkIGtleXByZXNzIGV2ZW50IGZvciBzZWxlY3RpbmcgZGlm
ZmVyZW50IGRhdGEgZm9yCisgICAgICAgIGNvcHkvcGFzdGUuIFVwZGF0ZSBob3cgdGhlIHJlc3Vs
dHMgYXJlIHBvcHVsYXRlZC4gSW5jbHVkZSBmdWxsIHRlc3QKKyAgICAgICAgSlNPTiBpbiBhIHRl
eHRhcmVhLCByYXRoZXIgdGhhbiByZXF1aXJpbmcgYSBidXR0b24gcHJlc3MuCisgICAgICAgIChz
aG93VGVzdEdyYXBoKToKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5u
ZXIvdGVzdHMuanM6IFVwZGF0ZSBzdHJ1Y3R1cmUgb2YgSGVhZGVycy4gRGVmaW5lIGRpZmZlcmVu
dCBraW5kcyBvZiBoZWFkZXJzLiBIZWFkZXJzIGNhbiBjb250cm9sIHRoZWlyCisgICAgICAgIHRp
dGxlLCBhbmQgdGhlIHRleHQgdXNlZCBhcyB0aGUgY2VsbCBjb250ZW50cywgaW5jbHVkaW5nIGNs
YXNzIG5hbWUuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qczoK
KyAgICAgICAgKFJlc3VsdHNUYWJsZSk6IFVwZGF0ZSB0byBpbmNsdWRlIGEgZmxhdHRlbmVkIHZl
cnNpb24gb2YgdGhlIGhlYWRlcnMsCisgICAgICAgIHVzZWQgd2hpbGUgcG9wdWxhdGluZyB0YWJs
ZSBjb250ZW50cy4gUmVtb3ZlIHVubmVlZGVkIGhlbHBlciBmdW5jdGlvbnMKKyAgICAgICAgZm9y
IGNyZWF0aW5nIHRoZSB0YWJsZS4gUmVuYW1lICJzaG93IiB0byAiYWRkIi4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3M6IFVwZGF0ZSBydWxlcyB0
bworICAgICAgICBhY2NvbW1vZGF0ZSB0aGUgbmV3IHN0cnVjdHVyZS4KKyAgICAgICAgKiBBbmlt
b21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5qczoKKyAgICAgICAgKHdpbmRvdy5z
ZWN0aW9uc01hbmFnZXIuc2V0U2VjdGlvblNjb3JlKTogSGVscGVyIGZ1bmN0aW9uIHRvIHNldCB0
aGUKKyAgICAgICAgc2NvcmUgYW5kIG1lYW4gZm9yIGEgc2VjdGlvbi4KKyAgICAgICAgKHdpbmRv
dy5zZWN0aW9uc01hbmFnZXIucG9wdWxhdGVUYWJsZSk6IEhlbHBlciBmdW5jdGlvbiB0byBzZXQg
dGhlIHRhYmxlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3Vs
dHMpOiBSZWZhY3Rvci4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyLnNlbGVj
dFJlc3VsdHMpOiBVcGRhdGUgc2VsZWN0b3JzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL3J1bm5lci90ZXN0cy5qczogU2V0IEhlYWRlcnMuIERlYnVnIGhhcm5lc3MKKyAgICAgICAg
ZXh0ZW5kcyBpdC4KKworMjAxNS0xMi0xOSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisK
KyAgICAgICAgU3BsaXQgYmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDU4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSB0ZXN0
cy4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci90ZXN0cy5qczoKKyAg
ICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpz
OgorICAgICAgICAoU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBSZW1vdmUgYSBz
dHJheSBjb25zb2xlLmxvZywgYW5kCisgICAgICAgIHJlbW92ZSBvbGRlc3QgZWxlbWVudHMuCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5q
czoKKyAgICAgICAgKFNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZSk6IFNldCB0aGUgY29udGV4
dCdzIGxpbmUgY2FwIGFuZCBqb2luLgorICAgICAgICAoQ2FudmFzTGluZVBhdGhTdGFnZSk6IFNl
dCB0aGUgY29udGV4dCdzIGxpbmUgY2FwLgorCisyMDE1LTEyLTE5ICBKb24gTGVlICA8am9ubGVl
QGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlmZmVyZW50
IHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTI0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgZGVidWcgcnVubmVyIHRvIGhhdmUgc2ltaWxhciBuYW1lcyB0byB0aGUgYmFzaWMgcnVu
bmVyLiBJbmNsdWRlCisgICAgICAgIHRoYXQgcGFnZSdzIENTUyBhbmQgcmVtb3ZlIGV4dHJhbmVv
dXMgQ1NTIHJ1bGVzLgorCisgICAgICAgIEdldCByaWQgb2YgdGhlIHN0YXRpc3RpY3MgdGFibGUg
I3JlY29yZC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWw6IFJlbmFtZSAj
aG9tZSB0byAjaW50cm8uIFJlbmFtZSAuc3BhY2VyIHRvIGhyLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzczogU2V0IHRvIGZsZXhib3gg
d2hlbiBzZWxlY3RlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5u
ZXIvYW5pbW9tZXRlci5qczogUmVtb3ZlIHJlY29yZFRhYmxlLgorICAgICAgICAod2luZG93LnN1
aXRlc01hbmFnZXIuX3VwZGF0ZVN0YXJ0QnV0dG9uU3RhdGUpOiBVcGRhdGUgc2VsZWN0b3IgdG8g
I2ludHJvLgorICAgICAgICAoc2V0dXBSdW5uaW5nU2VjdGlvblN0eWxlKTogRGVsZXRlZC4KKwor
ICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzczoKKyAg
ICAgICAgKCN0ZXN0LWNvbnRhaW5lci5zZWxlY3RlZCk6IENoYW5nZSB0byBmbGV4LWJveCBvbmx5
IHdoZW4gdmlzaWJsZS4KKworICAgICAgICBSZW1vdmUgcmVjb3JkVGFibGUuCisgICAgICAgICog
QW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanM6Cisg
ICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0
cyk6CisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzOgorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1jYW52YXMtaW1hZ2VzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzOgorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1jYW52YXMtc2hhcGVzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmpzOgorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1j
c3Mtc2hhcGVzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanM6CisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMu
anM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9l
eGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qczoKKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanM6CisgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qczoKKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzOgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJh
bnNmb3Jtcy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpz
OgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzOgorICAgICAg
ICAoU3RhZ2VCZW5jaG1hcmspOiBSZW1vdmUgX3JlY29yZFRhYmxlLgorICAgICAgICAqIEFuaW1v
bWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpzOgorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpz
OgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRl
LWNhbnZhcy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNl
cy90ZW1wbGF0ZS1jc3MuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9y
ZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4
dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qczoKKworMjAxNS0xMi0xOSAgSm9uIExlZSAgPGpv
bmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgYmVuY2htYXJrIGludG8gdHdvIGRpZmZl
cmVudCBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUyNDU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qczoKKyAg
ICAgICAgKHdpbGxTdGFydEZpcnN0SXRlcmF0aW9uKTogRml4IHNlbGVjdG9yLCBzaW5jZSByZXN1
bHRzLXRhYmxlIGlzIHVzZWQKKyAgICAgICAgaW4gbXVsdGlwbGUgcGxhY2VzLCBzbyBpdCBjYW5u
b3QgYmUgYW4gaWQuCisKKzIwMTUtMTItMTkgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgor
CisgICAgICAgIFNwbGl0IGJlbmNobWFyayBpbnRvIHR3byBkaWZmZXJlbnQgcGFnZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byAn
YW5pbW9tZXRlcicgc3VpdGUuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5u
ZXIvdGVzdHMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvY2FudmFzLXN0
YWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291
cmNlcy9jYW52YXMtc3RhZ2UuanM6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMv
bWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanM6IEFkZGVkLgorICAgICAgICAqIEFuaW1v
bWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9zdGFnZS5jc3M6IEFkZGVkLgorCisyMDE1LTEy
LTE5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBiZW5jaG1h
cmsgaW50byB0d28gZGlmZmVyZW50IHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHNlbGVjdCB0aGUgc2NvcmVz
LCBvciB0aGUgd2hvbGUgdGFibGUgZGF0YSwKKyAgICAgICAgYnkgY3ljbGluZyB0aHJvdWdoIGRp
ZmZlcmVudCBzZWxlY3Rpb25zIHRocm91Z2gga2V5IHByZXNzIG9mICdzJy4KKworICAgICAgICAq
IEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpzOgorICAgICAgICAod2lu
ZG93LmJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMpOiBBdHRhY2ggYSBrZXlwcmVzcyBo
YW5kbGVyCisgICAgICAgIGlmIGl0IGhhc24ndCBiZWVuIGFkZGVkIGFscmVhZHkuCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5zZWxlY3RSZXN1bHRzKToKKyAgICAgICAgKiBB
bmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanM6IEN5Y2xlIHRocm91Z2ggZGlmZmVy
ZW50CisgICAgICAgIHJhbmdlcy4KKworMjAxNS0xMi0xOSAgSm9uIExlZSAgPGpvbmxlZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3BsaXQgYmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDU4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEg
ZmV3IGZseS1ieSBlcnJvcnMuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1
Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczoKKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0
YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVudFRlc3QpOiBVcGRhdGUgdGhlIGZyYW1lIHJlbGF0
aXZlIHBhdGgKKyAgICAgICAgc2luY2UgdGhlIGZpbGVzIGFyZSBub3cgaW4gdGhlIHRvcCBkaXJl
Y3RvcnkgaW5zdGVhZCBvZiBpbnNpZGUgcnVubmVyLy4KKyAgICAgICAgKEJlbmNobWFya1J1bm5l
ci5wcm90b3R5cGUuX3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzKTogSW5jb3JyZWN0IHJlZmVyZW5j
ZSB0byBmdW5jdGlvbi4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuc3RlcCk6
IE1lbWJlciB2YXJpYWJsZSBpcyBuZXZlciB1c2VkLgorCisyMDE1LTEyLTE5ICBKb24gTGVlICA8
am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlm
ZmVyZW50IHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTI0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBIGxpdHRsZSBzdHlsaXN0aWMgY2xlYW51cC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIv
cmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzOgorICAgICAgICAqIEFu
aW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanM6CisgICAgICAgICh3aW5kb3cuRG9jdW1l
bnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCk6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXMvbWFpbi5qczoKKyAgICAgICAgKEJlbmNobWFyay5wcm90b3R5cGUucmVjb3JkKToK
KyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczoKKyAgICAgICAg
KFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVzdWx0cyk6IFJldmVyc2UgcHJvZ3Jlc3Mg
YW5kIG1lc3NhZ2UuCisgICAgICAgIFRoZSBtZXNzYWdlIGFwcGVhcnMgbGVzcyBmcmVxdWVudGx5
IHRoYW4gdGhlIHByb2dyZXNzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jl
c291cmNlcy9zaW1wbGUtY2FudmFzLmpzOgorICAgICAgICAoU2ltcGxlQ2FudmFzQmVuY2htYXJr
KTogUmVtb3ZlIHVudXNlZCBvcHRpb25zLgorCisyMDE1LTEyLTE5ICBKb24gTGVlICA8am9ubGVl
QGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlmZmVyZW50
IHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTI0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbmV3ZXIgdmVyc2lvbiBvZiBoYXJuZXNzIGluIGEgbmV3IHBhZ2UuIENvbnNvbGlkYXRlIGRp
ZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3bworICAgICAgICBwYWdlcy4KKworICAgICAgICAqIEFu
aW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWw6IEluY2x1ZGUgcnVubmVyL2FuaW1vbWV0ZXIuanMuIFJl
bmFtZSB0aGUgSlMgZnVuY3Rpb24KKyAgICAgICAgdG8gcnVuIHRoZSBiZW5jaG1hcmsgdG8gc3Rh
cnRCZW5jaG1hcmsoKSBpbnN0ZWFkIG9mIHN0YXJ0VGVzdCgpLiBSZW5hbWUgI3J1bm5pbmcgdG8K
KyAgICAgICAgI3Rlc3QtY29udGFpbmVyLgorICAgICAgICAqIEFuaW1vbWV0ZXIvaW5kZXguaHRt
bDogQWRkZWQuIFNpbWlsYXJseSBjYWxscyBzdGFydEJlbmNobWFyaygpIGFuZCBoYXMgI3Rlc3Qt
Y29udGFpbmVyLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9h
bmltb21ldGVyLmNzczogTWFrZSB0aGUgY2FudmFzIDI6MSAoMTIwMHB4IHggODAwcHgpCisgICAg
ICAgIGluc3RlYWQgb2YgNDozLgorCisgICAgICAgIFNwbGl0IG91dCBiZW5jaG1hcmtSdW5uZXJD
bGllbnQgYW5kIGJlbmNobWFya0NvbnRyb2xsZXIuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Jl
c291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qczogTW92ZSBuZWVkZWQgZnVuY3Rpb25z
IG91dCBvZgorICAgICAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQsIGFuZCBsZWF2ZSB0aGUgcmVz
dCBoZXJlIHRvIGV4dGVuZCB0aGF0IG9iamVjdC4gR2V0IHJpZCBvZiBfcmVzdWx0c1RhYmxlCisg
ICAgICAgIGFuZCBtb3ZlIHBvcHVsYXRpbmcgdGhlIHJlc3VsdHMgdGFibGUgaW50byBiZW5jaG1h
cmtDb250cm9sbGVyLiBSZW5hbWUgX3Jlc3VsdHNEYXNoYm9hcmQKKyAgICAgICAgdG8gcmVzdWx0
cyBhbmQgbWFrZSBpdCBhY2Nlc3NpYmxlIGZvciBvdGhlciBvYmplY3RzIHRvIHVzZS4KKyAgICAg
ICAgKHdpbGxBZGRUZXN0RnJhbWUpOiBUaGlzIGlzIHVubmVjZXNzYXJ5LiBSZW1vdmUuCisKKyAg
ICAgICAgKHdpbmRvdy5zZWN0aW9uc01hbmFnZXIuc2hvd1Njb3JlKTogR3JhYiBpdCBmcm9tIHRo
ZSByZXN1bHRzIG9iamVjdCBpbnN0ZWFkIG9mCisgICAgICAgIGJlbmNobWFya1J1bm5lckNsaWVu
dC4KKyAgICAgICAgKHdpbmRvdy5zZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24pOiBEZWxldGVk
LiBNb3ZlZCB0byBydW5uZXIvYW5pbW9tZXRlci5qcy4KKworICAgICAgICAod2luZG93LmJlbmNo
bWFya0NvbnRyb2xsZXIuX3J1bkJlbmNobWFyayk6IERlbGV0ZWQuIE1vc3RseSBtb3ZlZCBpbnRv
IF9zdGFydEJlbmNobWFyay4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyLnN0
YXJ0QmVuY2htYXJrKTogUmVmYWN0b3IgdG8gY2FsbCBfc3RhcnRCZW5jaG1hcmsuCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVzdWx0cyk6IEluY2x1ZGUgbW9zdCBv
ZiBiZW5jaG1hcmtSdW5uZXJDbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbigpCisgICAgICAg
IGhlcmUuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVu
Y2htYXJrLXJ1bm5lci5qczoKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2Fw
cGVuZEZyYW1lKTogUmVtb3ZlIHVubmVlZGVkIGNhbGwgdG8gd2lsbEFkZFRlc3RGcmFtZS4KKyAg
ICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgorICAgICAgICAoUmVz
dWx0c0Rhc2hib2FyZCk6IENoYW5nZSB0aGUgY2xhc3MgdG8gcHJvY2VzcyB0aGUgc2FtcGxlciBk
YXRhIG9uLWRlbWFuZCBhbmQgaG9sZCBvbnRvIHRoYXQgZGF0YQorICAgICAgICBmb3IgbGF0ZXIg
cmVmZXJlbmNpbmcuCisgICAgICAgIChSZXN1bHRzRGFzaGJvYXJkLnByb3RvdHlwZS50b0pTT04p
OiBEZWxldGVkLgorICAgICAgICAoUmVzdWx0c0Rhc2hib2FyZC5wcm90b3R5cGUuX3Byb2Nlc3NE
YXRhKTogUmVuYW1lIHRvSlNPTiB0byBfcHJvY2Vzc0RhdGEgc2luY2UgaXQncyBub3QgcmVhbGx5
CisgICAgICAgIG91dHB1dHRpbmcgSlNPTi4gU3RvcmUgdGhlIHByb2Nlc3NlZCBkYXRhIGludG8g
YSBtZW1iZXIgdmFyaWFibGUgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBsYXRlci4KKyAgICAgICAg
KFJlc3VsdHNEYXNoYm9hcmQucHJvdG90eXBlLmdldCBkYXRhKTogUHJvY2VzcyB0aGUgZGF0YSBp
ZiBpdCBoYXNuJ3QgYWxyZWFkeS4KKyAgICAgICAgKFJlc3VsdHNEYXNoYm9hcmQucHJvdG90eXBl
LmdldCBzY29yZSk6IFByb2Nlc3MgdGhlIGRhdGEgaWYgaXQgaGFzbid0IGFscmVhZHksIHRoZW4g
cmV0dXJuIHRoZQorICAgICAgICBhZ2dyZWdhdGUgc2NvcmUuCisgICAgICAgIChSZXN1bHRzVGFi
bGUucHJvdG90eXBlLl9zaG93SGVhZGVyKTogV2hlbiBvdXRwdXR0aW5nIHRoZSByZXN1bHRzIHRv
IGEgdGFibGUsIGRvbid0IGZvcmNlIHRoZQorICAgICAgICBuZWVkIGZvciBhbiBlbXB0eSBjaGls
ZHJlbiBhcnJheS4gVGhpcyB3YXMgdG8gYWxsb3cgZm9yIGEgaGVhZGVyIHJvdyBpbiB0aGUgdGFi
bGUgdGhhdCBzcGFubmVkCisgICAgICAgIG11bHRpcGxlIGNvbHVtbnMuIEluIHRoZSBzaW1wbGVy
IGhhcm5lc3MsIHRoaXMgaXMgbm90IG5lZWRlZC4KKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90
b3R5cGUuX3Nob3dFbXB0eUNlbGxzKToKKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUu
X3Nob3dUZXN0KTogVGhpcyBoYXJkY29kZWQgdGhlIGNvbHVtbnMuIEF0IGxlYXN0IGZvciB0aGUg
bmFtZSBhbmQgc2NvcmUsCisgICAgICAgIHdoaWNoIGlzIHRoZSBiYXJlIG1pbmltdW0gbmVlZGVk
IGZvciB0aGUgc2ltcGxlciBoYXJuZXNzLCBrZXkgb2ZmIG9mIHRoZSBoZWFkZXIgbmFtZSBwcm92
aWRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5j
c3M6IEFkZGVkLiBVc2UgYSBzaW1pbGFyIDI6MSByYXRpby4gVGhlIHNjb3JlIHRhYmxlcyBhcmUK
KyAgICAgICAgc3BsaXQgaW50byB0aGUgZGF0YSBhbmQgdGhlIGhlYWRlcnMsIGFuZCBhcmUgYWxz
byBkaXNwbGF5ZWQgUlRMIHNvIHRoYXQgYSBsYXRlciBwYXRjaCBhbGxvd3MgYQorICAgICAgICB1
c2VyIHRvIGNvcHktcGFzdGUgdGhlIGRhdGEgZWFzaWx5LgorICAgICAgICAqIEFuaW1vbWV0ZXIv
cmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpzOiBBZGRlZC4gVXNlIGEgc2ltcGxlciB2ZXJz
aW9uIG9mIGJlbmNobWFya1J1bm5lckNsaWVudC4KKyAgICAgICAgVGhlIGRlYnVnIGhhcm5lc3Mg
d2lsbCBleHRlbmQgdGhlc2UgY2xhc3Nlcy4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDb250
cm9sbGVyLl9zdGFydEJlbmNobWFyayk6IFVzZWQgYnkgYm90aCBoYXJuZXNzZXMuCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5zdGFydEJlbmNobWFyayk6IFNldCBoYXJkLWNv
ZGVkIG9wdGlvbnMuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVz
dWx0cyk6IEluY2x1ZGVzIG1vc3Qgb2YgYmVuY2htYXJrUnVubmVyQ2xpZW50LmRpZEZpbmlzaExh
c3RJdGVyYXRpb24oKQorICAgICAgICBoZXJlLgorCisyMDE1LTEyLTE4ICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlmZmVy
ZW50IHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBHZXQgcmlkIG9mIHV0aWxpdGllcy5qcy4gTW92ZSBpdCBhbGwgaW50byBleHRlbnNpb25zLmpz
LgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qczoKKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanM6IFJlbW92ZWQuCisK
KyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
YW52YXMtaW1hZ2VzLmh0bWw6IFJlbW92ZSBzY3JpcHQgbGluay4KKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw6
IERpdHRvLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2Jv
dW5jaW5nLWNzcy1pbWFnZXMuaHRtbDogRGl0dG8uCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sOiBEaXR0by4KKyAg
ICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmct
aW1hZ2VzLmh0bWw6IERpdHRvLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbDogRGl0dG8uCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWw6IERpdHRvLgorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0bWw6IERpdHRv
LgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jb21wb3NpdGluZy10cmFuc2Zvcm1z
Lmh0bWw6IERpdHRvLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3NpbXBsZS1j
YW52YXMtcGF0aHMuaHRtbDogRGl0dG8uCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1w
bGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbDogRGl0dG8uCisgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbDogRGl0dG8uCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbDogRGl0dG8uCisgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbDogRGl0dG8uCisKKzIwMTUt
MTItMTggIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IGJlbmNo
bWFyayBpbnRvIHR3byBkaWZmZXJlbnQgcGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IHRlc3RzLmpzIGludG8gdHdvLiBBZGQgYSBuZXcg
c3VpdGUgdG8gcnVubmVyL3Rlc3RzLmpzLgorCisgICAgICAgICogQW5pbW9tZXRlci9kZXZlbG9w
ZXIuaHRtbDogVXBkYXRlIHRoZSBzY3JpcHQgb3JkZXIuIFNjcmlwdHMgZnJvbQorICAgICAgICBk
ZWJ1Zy1ydW5uZXIvIHdpbGwgYWx3YXlzIGJ1aWxkIG9uIHRob3NlIGZyb20gcnVubmVyLywgYW5k
IGhhdmUgdGhlCisgICAgICAgIHNhbWUgbmFtZS4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291
cmNlcy9kZWJ1Zy1ydW5uZXIvdGVzdHMuanM6IE1vdmUgImNvbXBsZXggZXhhbXBsZXMiCisgICAg
ICAgIHN1aXRlIGludG8gIm1pc2NlbGxhbmVvdXMgdGVzdHMiLgorICAgICAgICAoU3VpdGUpOiBE
ZWxldGVkLgorICAgICAgICAoU3VpdGUucHJvdG90eXBlLnByZXBhcmUpOiBEZWxldGVkLgorICAg
ICAgICAoU3VpdGUucHJvdG90eXBlLnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChzdWl0ZUZyb21O
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVz
dHMuanM6IEFkZGVkLiBUYWtlIGRlZmluaXRpb25zIGFuZAorICAgICAgICBmdW5jdGlvbnMgbmVl
ZGVkIGJ5IHRoZSB0ZXN0IGhhcm5lc3MuIExlYXZlIHRoZSB0ZXN0IHN1aXRlcyBiZWhpbmQuCisg
ICAgICAgIChTdWl0ZSk6IE1vdmVkIGZyb20gZGVidWcgc2NyaXB0LgorICAgICAgICAoU3VpdGUu
cHJvdG90eXBlLnByZXBhcmUpOiBEaXR0by4KKyAgICAgICAgKFN1aXRlLnByb3RvdHlwZS5ydW4p
OiBEaXR0by4KKyAgICAgICAgKHN1aXRlRnJvbU5hbWUpOiBEaXR0by4KKyAgICAgICAgKHRlc3RG
cm9tTmFtZSk6IERpdHRvLgorCisyMDE1LTEyLTE4ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNv
bT4KKworICAgICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlmZmVyZW50IHBhZ2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI0NTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGJlbmNo
bWFyayByZXNvdXJjZXMgb3V0IGludG8gcmVzb3VyY2VzL2RlYnVnLXJ1bm5lciwgYW5kIHVwZGF0
ZSBVUkxzLgorCisgICAgICAgICogQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbDogUmVuYW1lZCBm
cm9tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRlci5odG1sLgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNz
czogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL2FuaW1vbWV0ZXIuY3NzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVn
LXJ1bm5lci9hbmltb21ldGVyLmpzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcy4KKyAgICAgICAgKiBBbmltb21l
dGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczogUmVuYW1lZCBm
cm9tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2JlbmNobWFy
ay1ydW5uZXIuanMuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVy
L2QzLm1pbi5qczogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5u
ZXIvcmVzb3VyY2VzL2QzLm1pbi5qcy4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9k
ZWJ1Zy1ydW5uZXIvZ3JhcGguanM6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qcy4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jl
c291cmNlcy9kZWJ1Zy1ydW5uZXIvdGVzdHMuanM6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qcy4KKwogMjAxNS0xMi0xMSAg
Sm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSBBbmltb21ldGVy
IG9uIGlPUwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267859</attachid>
            <date>2015-12-23 15:27:07 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>1. Move benchmark resources out</desc>
            <filename>0001-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>411048</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBiMmU0ZWQ0Zjg5MzBkMTU1MDc2M2RhYzMzYzRjMzNmYjMxOGZjYzU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBGcmks
IDE4IERlYyAyMDE1IDIyOjU0OjM0IC0wODAwClN1YmplY3Q6IFtQQVRDSCAwMS8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpN
b3ZlIGJlbmNobWFyayByZXNvdXJjZXMgb3V0IGludG8gcmVzb3VyY2VzL2RlYnVnLXJ1bm5lciwg
YW5kIHVwZGF0ZSBVUkxzLgoKKiBBbmltb21ldGVyL2RldmVsb3Blci5odG1sOiBSZW5hbWVkIGZy
b20gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwuCiog
QW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzOiBSZW5hbWVk
IGZyb20gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9t
ZXRlci5jc3MuCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIu
anM6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291
cmNlcy9hbmltb21ldGVyLmpzLgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9i
ZW5jaG1hcmstcnVubmVyLmpzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcy4KKiBBbmltb21ldGVyL3Jl
c291cmNlcy9kZWJ1Zy1ydW5uZXIvZDMubWluLmpzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvZDMubWluLmpzLgoqIEFuaW1vbWV0ZXIv
cmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9ncmFwaC5qczogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBoLmpzLgoqIEFuaW1vbWV0ZXIv
cmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qczogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzLgotLS0KIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbCAgICAgICAgIHwgMTI1ICsrKysrCiAu
Li4vcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzcyAgICAgICAgICB8IDU5OSAr
KysrKysrKysrKysrKysrKysrKysKIC4uLi9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0
ZXIuanMgICAgICAgICAgIHwgNDk3ICsrKysrKysrKysrKysrKysrCiAuLi4vcmVzb3VyY2VzL2Rl
YnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzICAgICB8IDE4OSArKysrKysrCiAuLi4vQW5p
bW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2QzLm1pbi5qcyAgICB8ICAgNSArCiAuLi4v
QW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2dyYXBoLmpzICAgICB8IDE0MiArKysr
KwogLi4uL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qcyAgICAgfCAy
NTYgKysrKysrKysrCiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0
ZXIuaHRtbCB8IDEyNSAtLS0tLQogLi4uL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmlt
b21ldGVyLmNzcyAgICAgfCA1OTkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vQW5pbW9tZXRl
ci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMgICAgICB8IDQ5NyAtLS0tLS0tLS0tLS0t
LS0tLQogLi4uL3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcyAgICAgICAgICAg
fCAxODkgLS0tLS0tLQogLi4uL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9kMy5taW4uanMg
ICAgICAgICAgfCAgIDUgLQogLi4uL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5q
cyAgICAgICAgICAgfCAxNDIgLS0tLS0KIC4uLi9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMv
dGVzdHMuanMgICAgICAgICAgIHwgMjU2IC0tLS0tLS0tLQogUGVyZm9ybWFuY2VUZXN0cy9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKwogMTUgZmlsZXMgY2hhbmdlZCwg
MTgzMCBpbnNlcnRpb25zKCspLCAxODEzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVy
L2FuaW1vbWV0ZXIuY3NzCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qcwogY3JlYXRlIG1vZGUg
MTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVy
L2JlbmNobWFyay1ydW5uZXIuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9kMy5taW4uanMKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5l
ci9ncmFwaC5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9yZXNvdXJjZXMvZGVidWctcnVubmVyL3Rlc3RzLmpzCiBkZWxldGUgbW9kZSAxMDA2NDQgUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9h
bmltb21ldGVyLmNzcwogZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVu
bmVyLmpzCiBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1
bm5lci9yZXNvdXJjZXMvZDMubWluLmpzCiBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvZ3JhcGguanMKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5q
cwoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRt
bCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDVmNDg0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2RldmVsb3Blci5odG1sCkBAIC0wLDAgKzEsMTI1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3Bv
cnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1v
bWV0ZXIuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5p
bW9tZXRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWJ1Zy1y
dW5uZXIvZDMubWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Rl
YnVnLXJ1bm5lci9ncmFwaC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8bWFp
bj4KKyAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPjwvZGl2PgorCisgICAgPHNlY3Rpb24gaWQ9Imhv
bWUiIGNsYXNzPSJzZWxlY3RlZCI+CisgICAgICAgIDxoZWFkZXI+CisgICAgICAgICAgICA8aDE+
QW5pbW9tZXRlcjwvaDE+CisgICAgICAgIDwvaGVhZGVyPgorICAgICAgICA8ZGl2IGlkPSJzdWl0
ZXMiPgorICAgICAgICAgICAgPGgyPlN1aXRlczo8L2gyPgorICAgICAgICAgICAgPHVsIGNsYXNz
PSJ0cmVlIj48L3VsPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0ib3B0aW9ucyI+
CisgICAgICAgICAgICA8aDI+T3B0aW9uczo8L2gyPgorICAgICAgICAgICAgPGZvcm0gbmFtZT0i
YmVuY2htYXJrLW9wdGlvbnMiPgorICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgPGxpPgor
ICAgICAgICAgICAgICAgIDxsYWJlbD5UZXN0IGxlbmd0aDogPGlucHV0IHR5cGU9Im51bWJlciIg
aWQ9InRlc3QtaW50ZXJ2YWwiIHZhbHVlPSIxMCI+IHNlY29uZHMgZWFjaDwvbGFiZWw+CisgICAg
ICAgICAgICA8L2xpPgorICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgIDxoMz5EaXNw
bGF5OjwvaDM+CisgICAgICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgICAgICA8bGk+
PGxhYmVsPjxpbnB1dCBuYW1lPSJkaXNwbGF5IiB0eXBlPSJyYWRpbyIgdmFsdWU9Im1pbmltYWwi
IGNoZWNrZWQ+IE1pbmltYWw8L2xhYmVsPjwvbGk+CisgICAgICAgICAgICAgICAgICAgIDxsaT48
bGFiZWw+PGlucHV0IG5hbWU9ImRpc3BsYXkiIHR5cGU9InJhZGlvIiB2YWx1ZT0icHJvZ3Jlc3Mt
YmFyIiBjaGVja2VkPiBQcm9ncmVzcyBiYXI8L2xhYmVsPjwvbGk+CisgICAgICAgICAgICAgICAg
ICAgIDxsaT48bGFiZWw+PGlucHV0IG5hbWU9ImRpc3BsYXkiIHR5cGU9InJhZGlvIiB2YWx1ZT0i
c3RhdGlzdGljcy10YWJsZSI+IFN0YXRpc3RpY3MgdGFibGU8L2xhYmVsPjwvbGk+CisgICAgICAg
ICAgICAgICAgPC91bD4KKyAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgICA8bGk+CisgICAg
ICAgICAgICAgICAgPGgzPkFkanVzdGluZyB0aGUgdGVzdCBjb21wbGV4aXR5OjwvaDM+CisgICAg
ICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCBu
YW1lPSJhZGp1c3RtZW50IiB0eXBlPSJyYWRpbyIgdmFsdWU9ImZpeGVkIj4gS2VlcCBjb25zdGFu
dDwvbGFiZWw+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFt
ZT0iYWRqdXN0bWVudCIgdHlwZT0icmFkaW8iIHZhbHVlPSJmaXhlZC1hZnRlci13YXJtdXAiPiBL
ZWVwIGNvbnN0YW50IGFmdGVyIHdhcm11cCB0byB0YXJnZXQgRlBTPC9sYWJlbD48L2xpPgorICAg
ICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1lPSJhZGp1c3RtZW50IiB0eXBl
PSJyYWRpbyIgdmFsdWU9ImFkYXB0aXZlIiBjaGVja2VkPiBNYWludGFpbiB0YXJnZXQgRlBTPC9s
YWJlbD48L2xpPgorICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICA8L2xpPgorICAg
ICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgIDxsYWJlbD5UYXJnZXQgZnJhbWUgcmF0ZTog
PGlucHV0IHR5cGU9Im51bWJlciIgaWQ9ImZyYW1lLXJhdGUiIHZhbHVlPSI1MCI+IEZQUzwvbGFi
ZWw+CisgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAg
IDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSIg
Y2hlY2tlZD4gRmlsdGVyIGZyYW1lIHJhdGUgY2FsY3VsYXRpb248L2xhYmVsPgorICAgICAgICAg
ICAgPC9saT4KKyAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICA8L2Zvcm0+CisgICAgICAg
IDwvZGl2PgorICAgICAgICA8Zm9vdGVyPgorICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFy
Z2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0VGVzdCgpIj5TdGFy
dCBUZXN0PC9idXR0b24+CisgICAgICAgIDwvZm9vdGVyPgorICAgIDwvc2VjdGlvbj4KKyAgICA8
c2VjdGlvbiBpZD0icnVubmluZyI+CisgICAgICAgIDxkaXYgaWQ9InJ1bm5pbmctdGVzdCI+PC9k
aXY+CisgICAgICAgIDxkaXYgaWQ9InByb2dyZXNzIj4KKyAgICAgICAgICAgIDxkaXYgaWQ9InBy
b2dyZXNzLWNvbXBsZXRlZCI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGlk
PSJyZWNvcmQiPgorICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJyZXN1bHRzLXRhYmxlIj48L3Rh
YmxlPgorICAgICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9InJl
c3VsdHMiPgorICAgICAgICA8aGVhZGVyPgorICAgICAgICAgICAgPGgxPlJlc3VsdHM6PC9oMT4K
KyAgICAgICAgPC9oZWFkZXI+CisgICAgICAgIDxkYXRhPgorICAgICAgICAgICAgPHRhYmxlIGNs
YXNzPSJyZXN1bHRzLXRhYmxlIj48L3RhYmxlPgorICAgICAgICA8L2RhdGE+CisgICAgICAgIDxm
b290ZXI+CisgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9
ImJlbmNobWFya0NvbnRyb2xsZXIuc2VsZWN0UmVzdWx0cygpIj5TZWxlY3Q8L2J1dHRvbj4KKyAg
ICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJr
Q29udHJvbGxlci5zaG93SlNPTigpIj5KU09OPC9idXR0b24+CisgICAgICAgICAgICA8YnV0dG9u
IGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRU
ZXN0KCkiPlRlc3QgQWdhaW48L2J1dHRvbj4KKyAgICAgICAgPC9mb290ZXI+CisgICAgPC9zZWN0
aW9uPgorICAgIDxzZWN0aW9uIGlkPSJqc29uIj4KKyAgICAgICAgPGhlYWRlcj4KKyAgICAgICAg
ICAgIDxoMT5KU09OOjwvaDE+CisgICAgICAgIDwvaGVhZGVyPgorICAgICAgICA8ZGF0YT4KKyAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdHMtanNvbiIgY29udGVudEVkaXRhYmxlPSJ0cnVl
Ij48L2Rpdj4KKyAgICAgICAgPC9kYXRhPgorICAgICAgICA8Zm9vdGVyPgorICAgICAgICAgICAg
PGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVy
LnNlbGVjdEpTT04oJ2pzb24nKSI+U2VsZWN0PC9idXR0b24+CisgICAgICAgICAgICA8YnV0dG9u
IGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jl
c3VsdHMoKSI+UmVzdWx0czwvYnV0dG9uPgorICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFy
Z2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0VGVzdCgpIj5UZXN0
IEFnYWluPC9idXR0b24+CisgICAgICAgIDwvZm9vdGVyPgorICAgIDwvc2VjdGlvbj4KKyAgICA8
c2VjdGlvbiBpZD0idGVzdC1qc29uIj4KKyAgICAgICAgPGhlYWRlcj4KKyAgICAgICAgICAgIDxo
MT5KU09OOjwvaDE+CisgICAgICAgIDwvaGVhZGVyPgorICAgICAgICA8ZGF0YT4KKyAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InJlc3VsdHMtanNvbiIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rp
dj4KKyAgICAgICAgPC9kYXRhPgorICAgICAgICA8Zm9vdGVyPgorICAgICAgICAgICAgPGJ1dHRv
biBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNlbGVj
dEpTT04oJ3Rlc3QtanNvbicpIj5TZWxlY3Q8L2J1dHRvbj4KKyAgICAgICAgICAgIDxidXR0b24g
Y2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVz
dWx0cygpIj5SZXN1bHRzPC9idXR0b24+CisgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJn
ZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRUZXN0KCkiPlRlc3Qg
QWdhaW48L2J1dHRvbj4KKyAgICAgICAgPC9mb290ZXI+CisgICAgPC9zZWN0aW9uPgorICAgIDxz
ZWN0aW9uIGlkPSJ0ZXN0LWdyYXBoIj4KKyAgICAgICAgPGhlYWRlcj4KKyAgICAgICAgICAgIDxo
MT5HcmFwaDo8L2gxPgorICAgICAgICA8L2hlYWRlcj4KKyAgICAgICAgPGRhdGE+PC9kYXRhPgor
ICAgICAgICA8Zm9vdGVyPgorICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9u
IiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNob3dSZXN1bHRzKCkiPlJlc3VsdHM8L2J1
dHRvbj4KKyAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0i
YmVuY2htYXJrQ29udHJvbGxlci5zdGFydFRlc3QoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPgorICAg
ICAgICA8L2Zvb3Rlcj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8ZGl2IGNsYXNzPSJzcGFjZXIi
PjwvZGl2PgorICAgIDwvbWFpbj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIu
Y3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIv
YW5pbW9tZXRlci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRiNzZi
OAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzCkBAIC0wLDAgKzEsNTk5IEBACisvKiAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUTUwg
YW5kIEJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICovCitodG1sLGJvZHkgeworICAgIGhlaWdodDogMTAwJTsKKyAgICBtYXJnaW46IDBw
eDsKKyAgICBwYWRkaW5nOiAwcHg7Cit9CisKK2JvZHkgeworICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYig5NiwgOTYsIDk2KTsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGZv
bnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNhbnMtc2Vy
aWY7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJ1dHRvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
LworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworYnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVh
cmFuY2U6IG5vbmU7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKK30KKworYnV0dG9uLmxhcmdlLWJ1dHRvbiB7CisgICAg
Ym9yZGVyOiAzcHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGJvcmRlci1yYWRpdXM6
IDEwcHg7CisgICAgbWluLXdpZHRoOiAyMDBweDsKKyAgICBwYWRkaW5nOiAuNWVtIDJlbTsKKyAg
ICBtYXJnaW46IDAgMWVtOworICAgIGZvbnQtc2l6ZTogMjVweDsKKyAgICBjb2xvcjogcmdiKDIz
NSwgMjM1LCAyMzUpOworfQorCitidXR0b24ubGFyZ2UtYnV0dG9uOmFjdGl2ZSB7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGNvbG9yOiByZ2IoNDYsIDUx
LCA1NSk7CisgICAgYm9yZGVyLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSkgIWltcG9ydGFudDsK
K30KKworYnV0dG9uLmxhcmdlLWJ1dHRvbjpkaXNhYmxlZCB7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogcmdiKDk2LCA5NiwgOTYpOworICAgIGNvbG9yOiByZ2IoMTI4LCAxMjgsIDEyOCk7Cit9CisK
K2J1dHRvbi5zbWFsbC1idXR0b24geworICAgIGJvcmRlcjogMXB4IHNvbGlkIERhcmtDeWFuOwor
ICAgIGJvcmRlci1yYWRpdXM6IDJweDsKKyAgICBwYWRkaW5nOiAxcHggNHB4OworICAgIG1hcmdp
bjogMCA0cHg7CisgICAgZm9udC1zaXplOiA5cHg7CisgICAgY29sb3I6IGJsYWNrOworfQorCiti
dXR0b24uc21hbGwtYnV0dG9uOmFjdGl2ZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogRGFya0N5
YW47CisgICAgY29sb3I6IHJnYig0NiwgNTEsIDU1KTsKKyAgICBib3JkZXItY29sb3I6IERhcmtD
eWFuICFpbXBvcnRhbnQ7Cit9CisKK0BtZWRpYSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRo
OiA0MTRweCkgeworICAgIGJ1dHRvbi5sYXJnZS1idXR0b24geworICAgICAgICBtYXJnaW46IDFl
bSAwOworICAgIH0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRyZWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisudHJlZSB7CisgICAgcGFkZGlu
ZzogMDsKKyAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7Cit9CisKKy50cmVlIC5leHBhbmQtYnV0
dG9uIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgY2xpcDogcmVjdCgwLCAwLCAwLCAw
KTsKK30KKworLnRyZWUgLmV4cGFuZC1idXR0b24gfiB1bCB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKworLnRyZWUgLmV4cGFuZC1idXR0b246Y2hlY2tlZCB+IHVsIHsKKyAgICBkaXNwbGF5OiBi
bG9jazsKK30KKworLnRyZWUgdWwgeworICAgIGxpc3Qtc3R5bGUtdHlwZTpub25lOworfQorCisu
dHJlZSBsaSB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHBhZGRpbmc6IDAgMCAxZW0g
MWVtOworfQorCisudHJlZSB1bCBsaSB7CisgICAgbGlzdC1zdHlsZTpub25lOworICAgIHBhZGRp
bmc6IDFlbSAwIDAgMGVtOworfQorCisudHJlZSA+IGxpOmxhc3QtY2hpbGQgeworICAgIHBhZGRp
bmctYm90dG9tOiAwOworfQorCisudHJlZS1sYWJlbCB7CisgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgZGlzcGxheTogaW5saW5lLWJsb2NrOworfQorCitsYWJlbC50cmVlLWxhYmVsIHsKKyAgICBj
dXJzb3I6IHBvaW50ZXI7Cit9CisKKy50cmVlID4gbGkgPiBsYWJlbC50cmVlLWxhYmVsOmJlZm9y
ZSB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHotaW5kZXg6IDE7CisgICAgZmxvYXQ6
IGxlZnQ7CisgICAgbWFyZ2luOiAwIDAgMCAtMmVtOworICAgIHdpZHRoOiAxZW07CisgICAgaGVp
Z2h0OiAxZW07CisgICAgY29udGVudDogJ1wyNUJBJzsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7
CisgICAgbGluZS1oZWlnaHQ6IDIuNWVtOworICAgIGZvbnQtc2l6ZTogLjVlbTsKK30KKworLnRy
ZWUgPiBsaSA+IDpjaGVja2VkIH4gbGFiZWwudHJlZS1sYWJlbDpiZWZvcmUgeworICAgIGNvbnRl
bnQ6ICdcMjVCQyc7Cit9CisKK0BtZWRpYSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0
MTRweCkgeworICAgIC50cmVlIHsKKyAgICAgICAgcGFkZGluZy1sZWZ0OiAxZW07CisgICAgfQor
ICAgIC50cmVlID4gbGkgPiBsYWJlbC50cmVlLWxhYmVsOmJlZm9yZSB7CisgICAgICAgIGZvbnQt
c2l6ZTogMWVtOworICAgICAgICBtYXJnaW4tbGVmdDogLTEuNzVlbTsKKyAgICAgICAgbGluZS1o
ZWlnaHQ6IDFlbTsKKyAgICB9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdHMgVGFibGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordGFibGUucmVzdWx0
cy10YWJsZSB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgYm9yZGVyOiAycHggc29saWQgRGFya0N5
YW47CisgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKK30KKworLnJlc3VsdHMtdGFibGUg
dGgsCisucmVzdWx0cy10YWJsZSB0ZCB7CisgICAgZm9udC1zaXplOiAxMXB4OworICAgIHBhZGRp
bmc6IDNweCA0cHggMnB4IDRweDsKK30KKworLnJlc3VsdHMtdGFibGUgdGggeworICAgIGJhY2tn
cm91bmQ6IERhcmtDeWFuOworICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgTGlnaHRDeWFuOwor
ICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIExpZ2h0Q3lhbjsKKyAgICBib3JkZXItdG9wOiAx
cHggc29saWQgTGlnaHRDeWFuOworfQorCisucmVzdWx0cy10YWJsZSB0ZCB7CisgICAgYmFja2dy
b3VuZDogd2hpdGU7CisgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKKyAgICBib3JkZXItbGVmdDog
bm9uZTsKKyAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBEYXJrQ3lhbjsKKyAgICBib3JkZXIt
dG9wOiAxcHggc29saWQgRGFya0N5YW47CisgICAgY29sb3I6IGJsYWNrOworfQorCisucmVzdWx0
cy10YWJsZSB0ZC5ub2lzeS1yZXN1bHRzIHsKKyAgICBjb2xvcjogcmVkOworfQorCisucmVzdWx0
cy10YWJsZSB0ZC5zdWl0ZXMtc2VwYXJhdG9yIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxs
b3c7Cit9CisgCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZXN1bHRzIEpTT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2Rpdi5yZXN1bHRzLWpzb24geworICAgIHdp
ZHRoOiAxMDAlOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKKyAg
ICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIHdoaXRlLXNwYWNlOiBwcmU7CisgICAg
Zm9udC1zaXplOiAxMnB4OworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluIExheW91dCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK21haW4geworICAgIHdp
ZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsK
KyAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CisgICAgZGlzcGxheTogZmxleDsKKworICAgIC1t
cy1mbGV4LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwor
ICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsK
KworICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OworICAgIC1tcy1mbGV4
LXBhY2s6IGZsZXgtc3RhcnQ7CisgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OworCisg
ICAgLXdlYmtpdC1mbGV4LWZsb3c6IGNvbHVtbjsKKyAgICBmbGV4LWZsb3c6IGNvbHVtbjsKK30K
KworLnNwYWNlciB7CisgICAgLXdlYmtpdC1mbGV4OiAxIDAgMjBweDsKKyAgICAtbXMtZmxleDog
MSAwIDIwcHg7CisgICAgZmxleDogMSAwIDIwcHg7CisgICAgd2lkdGg6IDEwcHg7Cit9CisKK3Nl
Y3Rpb24geworICAgIHdpZHRoOiA4MDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIGRpc3Bs
YXk6IG5vbmU7CisgICAgcGFkZGluZzogMTBweDsKK30KKworI2hvbWUgeworICAgIG1pbi1oZWln
aHQ6IDYwMHB4OworICAgIGhlaWdodDogYXV0bzsKK30KKworLmRpc3BsYXktcHJvZ3Jlc3MtYmFy
IHNlY3Rpb24sCisuZGlzcGxheS1zdGF0aXN0aWNzLXRhYmxlIHNlY3Rpb24geworICAgIGJvcmRl
cjogNnB4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgICBib3JkZXItcmFkaXVzOiAyMHB4
OworfQorCitzZWN0aW9uLnNlbGVjdGVkIHsKKyAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKKyAg
ICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CisgICAgZGlzcGxheTogZmxleDsKK30KKworc2VjdGlv
biA+IGhlYWRlciwKK3NlY3Rpb24gPiBmb290ZXIgeworICAgIG1hcmdpbjogMTBweDsKKyAgICBw
YWRkaW5nOiAxMHB4OworICAgIC13ZWJraXQtZmxleDogMCAxIDEwMCU7CisgICAgLW1zLWZsZXg6
IDAgMSAxMDAlOworICAgIGZsZXg6IDAgMSAxMDAlOworICAgIG1heC1oZWlnaHQ6IDE1JTsKK30K
Kworc2VjdGlvbiA+IGZvb3RlciB7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGNsZWFy
OiBib3RoOworICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OworICAgIGRpc3BsYXk6IC13ZWJraXQt
ZmxleDsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7Cisg
ICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOworICAgIC13ZWJraXQtYm94LWFsaWduOiBj
ZW50ZXI7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKyAgICAtd2Via2l0LWp1c3RpZnktY29u
dGVudDogY2VudGVyOworICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKKyAgICBqdXN0aWZ5LWNv
bnRlbnQ6IGNlbnRlcjsKK30KKworQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6
IDE4MDBweCkgeworICAgIHNlY3Rpb24geworICAgICAgICB3aWR0aDogMTYwMHB4OworICAgICAg
ICBoZWlnaHQ6IDgwMHB4OworICAgIH0KKworICAgICNob21lIHsKKyAgICAgICAgbWluLWhlaWdo
dDogODAwcHg7CisgICAgfQorfQorCitAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0
aDogNDE0cHgpIHsKKyAgICAuc3BhY2VyIHsKKyAgICAgICAgLXdlYmtpdC1mbGV4OiAwIDAgMDsK
KyAgICAgICAgLW1zLWZsZXg6IDAgMCAwOworICAgICAgICBmbGV4OiAwIDAgMDsKKyAgICB9CisK
KyAgICBzZWN0aW9uIHsKKyAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgICAg
d2lkdGg6IDEwMCU7CisgICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAgYWxpZ24tc2VsZjog
c3RyZXRjaDsKKyAgICAgICAgcGFkZGluZzogMCA1cHg7CisgICAgfQorCisgICAgI2hvbWUgewor
ICAgICAgICBtaW4taGVpZ2h0OiAxMDAlOworICAgIH0KKworICAgIC5kaXNwbGF5LXByb2dyZXNz
LWJhciBzZWN0aW9uLAorICAgIC5kaXNwbGF5LXN0YXRpc3RpY3MtdGFibGUgc2VjdGlvbiB7Cisg
ICAgICAgIGJvcmRlcjogMDsKKyAgICB9CisKKyAgICBzZWN0aW9uID4gZm9vdGVyIHsKKyAgICAg
ICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uOworICAgICAgICAtbXMtZmxleC1kaXJl
Y3Rpb246IGNvbHVtbjsKKyAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKKyAgICAgICAg
bWF4LWhlaWdodDogaW5pdGlhbDsKKyAgICB9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICov
CisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvbWUgU2VjdGlvbiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2hv
bWUgeworICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdzsKKyAgICAtbXMtZmxleC1kaXJl
Y3Rpb246IHJvdzsKKyAgICBmbGV4LWRpcmVjdGlvbjogcm93OworICAgIC13ZWJraXQtZmxleC13
cmFwOiB3cmFwOworICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CisgICAgZmxleC13cmFwOiB3cmFw
OworICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogY2VudGVyOworICAgIC1tcy1mbGV4LWxpbmUt
cGFjazogY2VudGVyOworICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cit9CisKKyNob21l
IGgyIHsKKyAgICBmb250LXNpemU6IDEuMmVtOworfQorCisjc3VpdGVzLAorI29wdGlvbnMgewor
ICAgIHBhZGRpbmc6IDEwcHg7CisgICAgbWFyZ2luOiAxMHB4OworfQorCisjc3VpdGVzIHsKKyAg
ICBwYWRkaW5nLWxlZnQ6IDQwcHg7CisgICAgLXdlYmtpdC1mbGV4OiAwIDEgNDAlOworICAgIC1t
cy1mbGV4OiAwIDEgNDAlOworICAgIGZsZXg6IDAgMSA0MCU7Cit9CisKKyNvcHRpb25zIHsKKyAg
ICAtd2Via2l0LWZsZXg6IDEgMSBhdXRvOworICAgIC1tcy1mbGV4OiAxIDEgYXV0bzsKKyAgICBm
bGV4OiAxIDEgYXV0bzsKK30KKworI2hvbWUgPiBoZWFkZXIgPiBoMSB7CisgICAgbWFyZ2luOiAw
IGF1dG87CisgICAgd2lkdGg6IDcwJTsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKyNo
b21lIGlucHV0W3R5cGU9Im51bWJlciJdIHsKKyAgICB3aWR0aDogNTBweDsKK30KKyAKKyNzdWl0
ZXMgaW5wdXRbdHlwZT0ibnVtYmVyIl0geworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgZmxvYXQ6
IHJpZ2h0OworfQorCisjc3VpdGVzIGlucHV0W3R5cGU9Im51bWJlciJdLnNlbGVjdGVkIHsKKyAg
ICBkaXNwbGF5OiBpbmxpbmU7CisgICAgbWFyZ2luOiAwOworfQorCisjc3VpdGVzIHVsIHVsIHsK
KyAgICBmb250LXNpemU6IC44ZW07CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDAgMCAw
IDFlbTsKK30KKworI29wdGlvbnMgdWwgeworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAw
OworICAgIGxpc3Qtc3R5bGU6IG5vbmU7Cit9CisKKyNvcHRpb25zIGgzIHsKKyAgICBmb250LXNp
emU6IDFlbTsKKyAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICBtYXJnaW46IDAgMCAuM2Vt
IDA7CisgICAgcGFkZGluZzogMDsKK30KKworI29wdGlvbnMgPiBmb3JtID4gdWwgPiBsaSB7Cisg
ICAgcGFkZGluZzogMCAwIDFlbSAwOworfQorCisjb3B0aW9ucyB1bCB1bCB7CisgICAgcGFkZGlu
ZzogMDsKK30KKworI29wdGlvbnMgbGkgeworICAgIHBhZGRpbmc6IC4xZW0gMDsKK30KKworQG1l
ZGlhIHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDQxNHB4KSB7CisgICAgI3N1aXRlcywK
KyAgICAjb3B0aW9ucyB7CisgICAgICAgIHBhZGRpbmc6IDAgNXB4OworICAgICAgICBtYXJnaW46
IDA7CisgICAgfQorICAgICNzdWl0ZXMgeworICAgICAgICAtd2Via2l0LWZsZXg6IDAgMSAxMDAl
OworICAgICAgICAtbXMtZmxleDogMCAxIDEwMCU7CisgICAgICAgIGZsZXg6IDAgMSAxMDAlOwor
ICAgIH0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUnVubmluZyBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjcnVubmluZyB7CisgICAgcG9zaXRpb246
IHJlbGF0aXZlOworICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC1hbGln
bi1pdGVtczogY2VudGVyOworICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgYWxp
Z24taXRlbXM6IGNlbnRlcjsKKyAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwor
ICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsK
K30KKworI3J1bm5pbmctdGVzdCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAl
OworfQorCisjcnVubmluZy10ZXN0ID4gaWZyYW1lIHsKKyAgICB3aWR0aDogODAwcHg7CisgICAg
aGVpZ2h0OiA2MDBweDsKKyAgICBib3JkZXI6IDBweCBub25lOworICAgIG92ZXJmbG93OiBoaWRk
ZW47Cit9CisKKyNwcm9ncmVzcywgI3JlY29yZCB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwor
LmRpc3BsYXktcHJvZ3Jlc3MtYmFyICNwcm9ncmVzcywKKy5kaXNwbGF5LXN0YXRpc3RpY3MtdGFi
bGUgI3Byb2dyZXNzIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgYm90dG9tOiAtNnB4OworICAgIGxlZnQ6IDYwcHg7CisgICAgcmlnaHQ6IDYwcHg7
CisgICAgaGVpZ2h0OiA2cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEyOCwgMTI4LCAx
MjgpOworICAgIGJvcmRlci1sZWZ0OiA2cHggc29saWQgcmdiKDQ2LCA1MSwgNTUpOworICAgIGJv
cmRlci1yaWdodDogNnB4IHNvbGlkIHJnYig0NiwgNTEsIDU1KTsKK30KKworLmRpc3BsYXktcHJv
Z3Jlc3MtYmFyICNwcm9ncmVzcy1jb21wbGV0ZWQsCisuZGlzcGxheS1zdGF0aXN0aWNzLXRhYmxl
ICNwcm9ncmVzcy1jb21wbGV0ZWQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6
IDA7CisgICAgbGVmdDogMDsKKyAgICBoZWlnaHQ6IDZweDsKKyAgICB3aWR0aDogMDsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Cit9CisKKy5kaXNwbGF5LXByb2dy
ZXNzLWJhciAjcmVjb3JkLAorLmRpc3BsYXktc3RhdGlzdGljcy10YWJsZSAjcmVjb3JkIHsKKyAg
ICBkaXNwbGF5OiBibG9jazsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAt
OTVweDsKKyAgICBsZWZ0OiAwcHg7CisgICAgcmlnaHQ6IDBweDsKKyAgICBwYWRkaW5nOiAxNnB4
OworfQorCitAbWVkaWEgc2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0aDogMTgwMHB4KSB7Cisg
ICAgI3J1bm5pbmctdGVzdCA+IGlmcmFtZSB7CisgICAgICAgIHdpZHRoOiAxNjAwcHg7CisgICAg
ICAgIGhlaWdodDogODAwcHg7CisgICAgfQorfQorCitAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWRl
dmljZS13aWR0aDogNDE0cHgpIHsKKyAgICAjcnVubmluZyB7CisgICAgICAgIHBhZGRpbmc6IDA7
CisgICAgfQorCisgICAgI3J1bm5pbmctdGVzdCB7CisgICAgICAgIG92ZXJmbG93OiBoaWRkZW47
CisgICAgfQorCisgICAgI3J1bm5pbmctdGVzdCA+IGlmcmFtZSB7CisgICAgICAgIHdpZHRoOiBj
YWxjKDEwMCUpOworICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSk7CisgICAgfQorfQorLyogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0cyBT
ZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSAqLworCitzZWN0aW9uI3Jlc3VsdHMsCitzZWN0aW9uI2pzb24sCitzZWN0aW9uI3Rl
c3QtanNvbiwKK3NlY3Rpb24jdGVzdC1ncmFwaCB7CisgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlv
bjogcm93OworICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OworICAgIGZsZXgtZGlyZWN0aW9u
OiByb3c7CisgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CisgICAgLW1zLWZsZXgtd3JhcDog
d3JhcDsKKyAgICBmbGV4LXdyYXA6IHdyYXA7CisgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6
IHNwYWNlLWJldHdlZW47CisgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKKyAgICBqdXN0aWZ5
LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CisgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBzcGFj
ZS1iZXR3ZWVuOworICAgIC1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeTsKKyAgICBhbGlnbi1j
b250ZW50OiBzcGFjZS1iZXR3ZWVuOworICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtc3Rh
cnQ7CisgICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0OworICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0
YXJ0OworfQorCitzZWN0aW9uI3Jlc3VsdHMgPiBkYXRhLAorc2VjdGlvbiNqc29uID4gZGF0YSwK
K3NlY3Rpb24jdGVzdC1qc29uID4gZGF0YSwKK3NlY3Rpb24jdGVzdC1ncmFwaCA+IGRhdGEgewor
ICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKKyAgICBoZWlnaHQ6IDcwJTsKKyAgICAtd2Via2l0LWZs
ZXg6IDAgMSAxMDAlOworICAgIC1tcy1mbGV4OiAwIDEgMTAwJTsKKyAgICBmbGV4OiAwIDEgMTAw
JTsKKyAgICAtd2Via2l0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CisgICAgLW1zLWZsZXgtaXRlbS1h
bGlnbjogc3RyZXRjaDsKKyAgICBhbGlnbi1zZWxmOiBzdHJldGNoOworfQorCisvKiAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaCBTZWN0aW9u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICovCisKK3NlY3Rpb24jdGVzdC1ncmFwaCA+IGRhdGEgeworICAgIGZvbnQ6IDEwcHggc2Fu
cy1zZXJpZjsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworfQorCitzZWN0aW9uI3Rl
c3QtZ3JhcGggPiBkYXRhID4gc3ZnIHsKKyAgICBmaWxsOiBub25lOworfQorCisuYXhpcyBwYXRo
LAorLmF4aXMgbGluZSB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6ICM5OTk5OTk7Cisg
ICAgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOworfQorCisubGVmdC1zYW1wbGVzIHsKKyAg
ICBzdHJva2U6ICM3QURENDk7CisgICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKK30KKworLnJpZ2h0
LXNhbXBsZXMgeworICAgIHN0cm9rZTogI0ZBNDkyNTsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4
OworfQorCisuc2FtcGxlLXRpbWUgeworICAgIHN0cm9rZTogIzU0OTNENjsKK30KKworLmxlZnQt
bWVhbiB7CisgICAgc3Ryb2tlOiAjN0FERDQ5OworICAgIG9wYWNpdHk6IC44OworfQorCisucmln
aHQtbWVhbiB7CisgICAgc3Ryb2tlOiAjRkE0OTI1OworICAgIG9wYWNpdHk6IC44OworfQorCisv
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBKU09O
IFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tICovCisKK3NlY3Rpb24janNvbiA+IGRhdGEsCitzZWN0aW9uI3Rlc3QtanNvbiA+
IGRhdGEgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgICBi
b3gtc2l6aW5nOiBib3JkZXItYm94OworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRjNDUxMAotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVy
L2FuaW1vbWV0ZXIuanMKQEAgLTAsMCArMSw0OTcgQEAKK3dpbmRvdy5iZW5jaG1hcmtSdW5uZXJD
bGllbnQgPSB7CisgICAgaXRlcmF0aW9uQ291bnQ6IDEsCisgICAgdGVzdHNDb3VudDogbnVsbCwK
KyAgICBwcm9ncmVzc0JhcjogbnVsbCwKKyAgICByZWNvcmRUYWJsZTogbnVsbCwKKyAgICBvcHRp
b25zOiBudWxsLAorICAgIHNjb3JlOiAwLAorICAgIF9yZXN1bHRzRGFzaGJvYXJkOiBudWxsLAor
ICAgIF9yZXN1bHRzVGFibGU6IG51bGwsCisgICAgCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24o
c3VpdGVzLCBvcHRpb25zKQorICAgIHsKKyAgICAgICAgdGhpcy50ZXN0c0NvdW50ID0gdGhpcy5p
dGVyYXRpb25Db3VudCAqIHN1aXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGNvdW50LCBzdWl0ZSkgeyBy
ZXR1cm4gY291bnQgKyBzdWl0ZS50ZXN0cy5sZW5ndGg7IH0sIDApOworICAgICAgICB0aGlzLm9w
dGlvbnMgPSBvcHRpb25zOworICAgIH0sCisKKyAgICB3aWxsQWRkVGVzdEZyYW1lOiBmdW5jdGlv
biAoZnJhbWUpCisgICAgeworICAgICAgICB2YXIgbWFpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoIm1haW4iKTsKKyAgICAgICAgdmFyIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShtYWluKTsK
KyAgICAgICAgZnJhbWUuc3R5bGUubGVmdCA9IG1haW4ub2Zmc2V0TGVmdCArIHBhcnNlSW50KHN0
eWxlLmJvcmRlckxlZnRXaWR0aCkgKyBwYXJzZUludChzdHlsZS5wYWRkaW5nTGVmdCkgKyAicHgi
OworICAgICAgICBmcmFtZS5zdHlsZS50b3AgPSBtYWluLm9mZnNldFRvcCArIHBhcnNlSW50KHN0
eWxlLmJvcmRlclRvcFdpZHRoKSArIHBhcnNlSW50KHN0eWxlLnBhZGRpbmdUb3ApICsgInB4IjsK
KyAgICB9LAorICAgIAorICAgIGRpZFJ1blRlc3Q6IGZ1bmN0aW9uICgpCisgICAgeworICAgICAg
ICB0aGlzLnByb2dyZXNzQmFyLmluY1JhbmdlKCk7CisgICAgfSwKKyAgICAKKyAgICB3aWxsU3Rh
cnRGaXJzdEl0ZXJhdGlvbjogZnVuY3Rpb24gKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc3Vs
dHNEYXNoYm9hcmQgPSBuZXcgUmVzdWx0c0Rhc2hib2FyZCgpOworICAgICAgICB0aGlzLl9yZXN1
bHRzVGFibGUgPSBuZXcgUmVzdWx0c1RhYmxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNlY3Rp
b24jcmVzdWx0cyA+IGRhdGEgPiB0YWJsZSIpLCBIZWFkZXJzKTsKKyAgICAgICAgCisgICAgICAg
IHRoaXMucHJvZ3Jlc3NCYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInByb2dyZXNzLWNvbXBsZXRlZCIpLCB0aGlzLnRlc3RzQ291bnQpOworICAgICAgICB0aGlz
LnJlY29yZFRhYmxlID0gbmV3IFJlc3VsdHNUYWJsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJz
ZWN0aW9uI3J1bm5pbmcgI3JlY29yZCA+IHRhYmxlIiksIEhlYWRlcnMpOworICAgIH0sCisgICAg
CisgICAgZGlkUnVuU3VpdGVzOiBmdW5jdGlvbiAoc3VpdGVzU2FtcGxlcnMpCisgICAgeworICAg
ICAgICB0aGlzLl9yZXN1bHRzRGFzaGJvYXJkLnB1c2goc3VpdGVzU2FtcGxlcnMpOworICAgIH0s
CisgICAgCisgICAgZGlkRmluaXNoTGFzdEl0ZXJhdGlvbjogZnVuY3Rpb24gKCkKKyAgICB7Cisg
ICAgICAgIHZhciBqc29uID0gdGhpcy5fcmVzdWx0c0Rhc2hib2FyZC50b0pTT04odHJ1ZSwgdHJ1
ZSk7CisgICAgICAgIHRoaXMuc2NvcmUgPSBqc29uW1N0cmluZ3MuanNvbi5zY29yZV07CisgICAg
ICAgIHRoaXMuX3Jlc3VsdHNUYWJsZS5zaG93SXRlcmF0aW9ucyhqc29uW1N0cmluZ3MuanNvbi5y
ZXN1bHRzLml0ZXJhdGlvbnNdLCB0aGlzLm9wdGlvbnMpOworICAgICAgICBzZWN0aW9uc01hbmFn
ZXIuc2hvd0pTT04oImpzb24iLCBqc29uW1N0cmluZ3MuanNvbi5yZXN1bHRzLml0ZXJhdGlvbnNd
WzBdKTsKKyAgICAgICAgc3VpdGVzTWFuYWdlci51cGRhdGVMb2NhbFN0b3JhZ2VGcm9tSlNPTihq
c29uW1N0cmluZ3MuanNvbi5yZXN1bHRzLml0ZXJhdGlvbnNdWzBdKTsKKyAgICAgICAgYmVuY2ht
YXJrQ29udHJvbGxlci5zaG93UmVzdWx0cygpOworICAgIH0KK30KKword2luZG93LnNlY3Rpb25z
TWFuYWdlciA9Cit7CisgICAgX3NlY3Rpb25IZWFkZXJIMUVsZW1lbnQ6IGZ1bmN0aW9uKHNlY3Rp
b25JZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoIiMiICsgc2VjdGlvbklkZW50aWZpZXIgKyAiID4gaGVhZGVyID4gaDEiKTsKKyAgICB9LAor
CisgICAgX3NlY3Rpb25EYXRhRWxlbWVudDogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIpCisg
ICAgeworICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiIyIgKyBzZWN0aW9u
SWRlbnRpZmllciArICIgPiBkYXRhIik7CisgICAgfSwKKyAgICAKKyAgICBfc2VjdGlvbkRhdGFE
aXZFbGVtZW50OiBmdW5jdGlvbihzZWN0aW9uSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJl
dHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjIiArIHNlY3Rpb25JZGVudGlmaWVyICsgIiA+
ICBkYXRhID4gZGl2Iik7CisgICAgfSwKKyAgICAKKyAgICBzaG93U2NvcmU6IGZ1bmN0aW9uKHNl
Y3Rpb25JZGVudGlmaWVyLCB0aXRsZSkKKyAgICB7CisgICAgICAgIHZhciBlbGVtZW50ID0gdGhp
cy5fc2VjdGlvbkhlYWRlckgxRWxlbWVudChzZWN0aW9uSWRlbnRpZmllcik7CisgICAgICAgIGVs
ZW1lbnQudGV4dENvbnRlbnQgPSB0aXRsZSArICI6IjsKKworICAgICAgICB2YXIgc2NvcmUgPSBi
ZW5jaG1hcmtSdW5uZXJDbGllbnQuc2NvcmUudG9GaXhlZCgyKTsKKyAgICAgICAgZWxlbWVudC50
ZXh0Q29udGVudCArPSAiIFsiICsgU3RyaW5ncy50ZXh0LnNjb3JlICsgIiA9ICIgKyBzY29yZSAr
ICJdIjsKKyAgICB9LAorICAgIAorICAgIHNob3dUZXN0TmFtZTogZnVuY3Rpb24oc2VjdGlvbklk
ZW50aWZpZXIsIHRpdGxlLCB0ZXN0TmFtZSkKKyAgICB7CisgICAgICAgIHZhciBlbGVtZW50ID0g
dGhpcy5fc2VjdGlvbkhlYWRlckgxRWxlbWVudChzZWN0aW9uSWRlbnRpZmllcik7CisgICAgICAg
IGVsZW1lbnQudGV4dENvbnRlbnQgPSB0aXRsZSArICI6IjsKKworICAgICAgICBpZiAoIXRlc3RO
YW1lLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBl
bGVtZW50LnRleHRDb250ZW50ICs9ICIgWyIgKyBTdHJpbmdzLnRleHQudGVzdE5hbWUgKyAiID0g
IiArIHRlc3ROYW1lICsgIl0iOworICAgIH0sCisgICAgCisgICAgc2hvd0pTT046IGZ1bmN0aW9u
KHNlY3Rpb25JZGVudGlmaWVyLCBqc29uKQorICAgIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSB0
aGlzLl9zZWN0aW9uRGF0YURpdkVsZW1lbnQoc2VjdGlvbklkZW50aWZpZXIpOworICAgICAgICBl
bGVtZW50LnRleHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnkoanNvbiwgZnVuY3Rpb24oa2V5LCB2
YWx1ZSkgeyAKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gIm51bWJlciIpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQoMik7CisgICAgICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgICAgIH0sIDQpOworICAgIH0sCisgICAgCisgICAgc2VsZWN0RGF0YTogZnVu
Y3Rpb24oc2VjdGlvbklkZW50aWZpZXIpCisgICAgeworICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fc2Vj
dGlvbkRhdGFFbGVtZW50KHNlY3Rpb25JZGVudGlmaWVyKTsKKyAgICAgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZShlbGVtZW50
KTsKKyAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsgIAorICAg
IH0sCisgICAgCisgICAgc2VsZWN0RGF0YUNvbnRlbnRzOiBmdW5jdGlvbihzZWN0aW9uSWRlbnRp
ZmllcikKKyAgICB7CisgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5n
ZXMoKTsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9zZWN0aW9uRGF0YURpdkVsZW1lbnQo
c2VjdGlvbklkZW50aWZpZXIpOworICAgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWxlbWVudCk7CisgICAg
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAgfSwKKyAgICAg
ICAgCisgICAgc2hvd1NlY3Rpb246IGZ1bmN0aW9uKHNlY3Rpb25JZGVudGlmaWVyLCBwdXNoU3Rh
dGUpCisgICAgeworICAgICAgICB2YXIgY3VycmVudFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQu
cXVlcnlTZWxlY3Rvcigic2VjdGlvbi5zZWxlY3RlZCIpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dChjdXJyZW50U2VjdGlvbkVsZW1lbnQpOworCisgICAgICAgIHZhciBuZXdTZWN0aW9uRWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb25JZGVudGlmaWVyKTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQobmV3U2VjdGlvbkVsZW1lbnQpOworCisgICAgICAgIGN1cnJlbnRTZWN0
aW9uRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpOworICAgICAgICBuZXdTZWN0
aW9uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOworCisgICAgICAgIGlmIChwdXNo
U3RhdGUpCisgICAgICAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7c2VjdGlvbjogc2VjdGlvbklk
ZW50aWZpZXJ9LCBkb2N1bWVudC50aXRsZSk7CisgICAgfSwKKworICAgIHNldHVwUnVubmluZ1Nl
Y3Rpb25TdHlsZTogZnVuY3Rpb24ob3B0aW9ucykKKyAgICB7CisgICAgICAgIGlmIChvcHRpb25z
WyJkaXNwbGF5Il0gIT0gInN0YXRpc3RpY3MtdGFibGUiKQorICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlY29yZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgfQor
fQorCit3aW5kb3cub3B0aW9uc01hbmFnZXIgPQoreworICAgIHZhbHVlRm9yT3B0aW9uOiBmdW5j
dGlvbihuYW1lKQorICAgIHsKKyAgICAgICAgdmFyIGZvcm1FbGVtZW50ID0gZG9jdW1lbnQuZm9y
bXNbImJlbmNobWFyay1vcHRpb25zIl0uZWxlbWVudHNbbmFtZV07CisgICAgICAgIGlmIChmb3Jt
RWxlbWVudC50eXBlID09ICJjaGVja2JveCIpCisgICAgICAgICAgICByZXR1cm4gZm9ybUVsZW1l
bnQuY2hlY2tlZDsKKyAgICAgICAgcmV0dXJuIGZvcm1FbGVtZW50LnZhbHVlOworICAgIH0sCisg
ICAgCisgICAgdXBkYXRlVUlGcm9tTG9jYWxTdG9yYWdlOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB2YXIgZm9ybUVsZW1lbnRzID0gZG9jdW1lbnQuZm9ybXNbImJlbmNobWFyay1vcHRpb25z
Il0uZWxlbWVudHM7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3JtRWxlbWVudHMu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBmb3JtRWxlbWVudCA9IGZvcm1FbGVtZW50
c1tpXTsKKyAgICAgICAgICAgIHZhciBuYW1lID0gZm9ybUVsZW1lbnQuaWQgfHwgZm9ybUVsZW1l
bnQubmFtZTsKKyAgICAgICAgICAgIHZhciB0eXBlID0gZm9ybUVsZW1lbnQudHlwZTsKKworICAg
ICAgICAgICAgdmFyIHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7CisgICAgICAg
ICAgICBpZiAodmFsdWUgPT09IG51bGwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIGlmICh0eXBlID09ICJudW1iZXIiKQorICAgICAgICAgICAgICAgIGZvcm1FbGVt
ZW50c1tuYW1lXS52YWx1ZSA9ICt2YWx1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0g
ImNoZWNrYm94IikKKyAgICAgICAgICAgICAgICBmb3JtRWxlbWVudHNbbmFtZV0uY2hlY2tlZCA9
IHZhbHVlID09ICJ0cnVlIjsKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInJhZGlvIikK
KyAgICAgICAgICAgICAgICBmb3JtRWxlbWVudHNbbmFtZV0udmFsdWUgPSB2YWx1ZTsKKyAgICAg
ICAgfQorICAgIH0sCisKKyAgICB1cGRhdGVMb2NhbFN0b3JhZ2VGcm9tVUk6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHZhciBmb3JtRWxlbWVudHMgPSBkb2N1bWVudC5mb3Jtc1siYmVuY2ht
YXJrLW9wdGlvbnMiXS5lbGVtZW50czsKKyAgICAgICAgdmFyIG9wdGlvbnMgPSB7fTsgICAgICAg
IAorCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm9ybUVsZW1lbnRzLmxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICB2YXIgZm9ybUVsZW1lbnQgPSBmb3JtRWxlbWVudHNbaV07CisgICAg
ICAgICAgICB2YXIgbmFtZSA9IGZvcm1FbGVtZW50LmlkIHx8IGZvcm1FbGVtZW50Lm5hbWU7Cisg
ICAgICAgICAgICB2YXIgdHlwZSA9IGZvcm1FbGVtZW50LnR5cGU7CisKKyAgICAgICAgICAgIGlm
ICh0eXBlID09ICJudW1iZXIiKQorICAgICAgICAgICAgICAgIG9wdGlvbnNbbmFtZV0gPSBmb3Jt
RWxlbWVudC52YWx1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImNoZWNrYm94IikK
KyAgICAgICAgICAgICAgICBvcHRpb25zW25hbWVdID0gZm9ybUVsZW1lbnQuY2hlY2tlZDsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInJhZGlvIikKKyAgICAgICAgICAgICAgICBvcHRp
b25zW25hbWVdID0gZm9ybUVsZW1lbnRzW25hbWVdLnZhbHVlOworICAgIAorICAgICAgICAgICAg
bG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgb3B0aW9uc1tuYW1lXSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHJldHVybiBvcHRpb25zOworICAgIH0KK30KKword2luZG93LnN1aXRl
c01hbmFnZXIgPQoreworICAgIF90cmVlRWxlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzdWl0ZXMgPiAudHJlZSIpOworICAg
IH0sCisgICAgCisgICAgX3N1aXRlc0VsZW1lbnRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI3N1aXRlcyA+IHVsID4gbGkiKTsK
KyAgICB9LAorICAgIAorICAgIF9jaGVja2JveEVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnQpCisg
ICAgeworICAgICAgICByZXR1cm4gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dFt0eXBlPSdj
aGVja2JveCddOm5vdCguZXhwYW5kLWJ1dHRvbikiKTsKKyAgICB9LAorCisgICAgX2VkaXRFbGVt
ZW50OiBmdW5jdGlvbihlbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQucXVl
cnlTZWxlY3RvcigiaW5wdXRbdHlwZT0nbnVtYmVyJ10iKTsKKyAgICB9LAorCisgICAgX2VkaXRz
RWxlbWVudHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCIjc3VpdGVzIGlucHV0W3R5cGU9J251bWJlciddIik7CisgICAgfSwKKyAg
ICAgICAgCisgICAgX2xvY2FsU3RvcmFnZU5hbWVGb3JUZXN0OiBmdW5jdGlvbihzdWl0ZU5hbWUs
IHRlc3ROYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1aXRlTmFtZSArICIvIiArIHRlc3RO
YW1lOworICAgIH0sCisKKyAgICBfdXBkYXRlU3VpdGVDaGVja2JveFN0YXRlOiBmdW5jdGlvbihz
dWl0ZUNoZWNrYm94KQorICAgIHsKKyAgICAgICAgdmFyIG51bWJlckVuYWJsZWRUZXN0cyA9IDA7
CisgICAgICAgIHN1aXRlQ2hlY2tib3gudGVzdHNFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHRl
c3RFbGVtZW50KSB7CisgICAgICAgICAgICB2YXIgdGVzdENoZWNrYm94ID0gdGhpcy5fY2hlY2ti
b3hFbGVtZW50KHRlc3RFbGVtZW50KTsKKyAgICAgICAgICAgIGlmICh0ZXN0Q2hlY2tib3guY2hl
Y2tlZCkKKyAgICAgICAgICAgICAgICArK251bWJlckVuYWJsZWRUZXN0czsKKyAgICAgICAgfSwg
dGhpcyk7CisgICAgICAgIHN1aXRlQ2hlY2tib3guY2hlY2tlZCA9IG51bWJlckVuYWJsZWRUZXN0
cyA+IDA7CisgICAgICAgIHN1aXRlQ2hlY2tib3guaW5kZXRlcm1pbmF0ZSA9IG51bWJlckVuYWJs
ZWRUZXN0cyA+IDAgJiYgbnVtYmVyRW5hYmxlZFRlc3RzIDwgc3VpdGVDaGVja2JveC50ZXN0c0Vs
ZW1lbnRzLmxlbmd0aDsKKyAgICB9LAorCisgICAgX3VwZGF0ZVN0YXJ0QnV0dG9uU3RhdGU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzdWl0ZXNFbGVtZW50cyA9IHRoaXMuX3N1aXRl
c0VsZW1lbnRzKCk7CisgICAgICAgIHZhciBzdGFydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoIiNob21lID4gZm9vdGVyID4gYnV0dG9uIik7CisgICAgICAgIAorICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHN1aXRlc0VsZW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICB2YXIgc3VpdGVFbGVtZW50ID0gc3VpdGVzRWxlbWVudHNbaV07CisgICAgICAgICAgICB2YXIg
c3VpdGVDaGVja2JveCA9IHRoaXMuX2NoZWNrYm94RWxlbWVudChzdWl0ZUVsZW1lbnQpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAoc3VpdGVDaGVja2JveC5jaGVja2VkKSB7CisgICAg
ICAgICAgICAgICAgc3RhcnRCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgc3RhcnRC
dXR0b24uZGlzYWJsZWQgPSB0cnVlOworICAgIH0sCisKKyAgICBfb25DaGFuZ2VTdWl0ZUNoZWNr
Ym94OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3RlZCA9IGV2ZW50
LnRhcmdldC5jaGVja2VkOworICAgICAgICBldmVudC50YXJnZXQudGVzdHNFbGVtZW50cy5mb3JF
YWNoKGZ1bmN0aW9uKHRlc3RFbGVtZW50KSB7CisgICAgICAgICAgICB2YXIgdGVzdENoZWNrYm94
ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHRlc3RFbGVtZW50KTsKKyAgICAgICAgICAgIHRlc3RD
aGVja2JveC5jaGVja2VkID0gc2VsZWN0ZWQ7ICAgICAgICAKKyAgICAgICAgfSwgdGhpcyk7Cisg
ICAgICAgIHRoaXMuX3VwZGF0ZVN0YXJ0QnV0dG9uU3RhdGUoKTsKKyAgICB9LAorCisgICAgX29u
Q2hhbmdlVGVzdENoZWNrYm94OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBz
dWl0ZUNoZWNrYm94ID0gZXZlbnQudGFyZ2V0LnN1aXRlQ2hlY2tib3g7CisgICAgICAgIHRoaXMu
X3VwZGF0ZVN1aXRlQ2hlY2tib3hTdGF0ZShzdWl0ZUNoZWNrYm94KTsKKyAgICAgICAgdGhpcy5f
dXBkYXRlU3RhcnRCdXR0b25TdGF0ZSgpOworICAgIH0sCisKKyAgICBfY3JlYXRlU3VpdGVFbGVt
ZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc3VpdGUsIGlkKQorICAgIHsKKyAgICAgICAgdmFy
IHN1aXRlRWxlbWVudCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImxpIiwge30s
IHRyZWVFbGVtZW50KTsKKyAgICAgICAgdmFyIGV4cGFuZCA9IERvY3VtZW50RXh0ZW5zaW9uLmNy
ZWF0ZUVsZW1lbnQoImlucHV0IiwgeyB0eXBlOiAiY2hlY2tib3giLCAgY2xhc3M6ICJleHBhbmQt
YnV0dG9uIiwgaWQ6IGlkIH0sIHN1aXRlRWxlbWVudCk7CisgICAgICAgIHZhciBsYWJlbCA9IERv
Y3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImxhYmVsIiwgeyBjbGFzczogInRyZWUtbGFi
ZWwiLCBmb3I6IGlkIH0sIHN1aXRlRWxlbWVudCk7CisKKyAgICAgICAgdmFyIHN1aXRlQ2hlY2ti
b3ggPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJpbnB1dCIsIHsgdHlwZTogImNo
ZWNrYm94IiB9LCBsYWJlbCk7CisgICAgICAgIHN1aXRlQ2hlY2tib3guc3VpdGUgPSBzdWl0ZTsK
KyAgICAgICAgc3VpdGVDaGVja2JveC5vbmNoYW5nZSA9IHRoaXMuX29uQ2hhbmdlU3VpdGVDaGVj
a2JveC5iaW5kKHRoaXMpOworICAgICAgICBzdWl0ZUNoZWNrYm94LnRlc3RzRWxlbWVudHMgPSBb
XTsKKworICAgICAgICBsYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgi
ICIgKyBzdWl0ZS5uYW1lKSk7CisgICAgICAgIHJldHVybiBzdWl0ZUVsZW1lbnQ7CisgICAgfSwK
KworICAgIF9jcmVhdGVUZXN0RWxlbWVudDogZnVuY3Rpb24obGlzdEVsZW1lbnQsIHRlc3QsIHN1
aXRlQ2hlY2tib3gpCisgICAgeworICAgICAgICB2YXIgdGVzdEVsZW1lbnQgPSBEb2N1bWVudEV4
dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJsaSIsIHt9LCBsaXN0RWxlbWVudCk7CisgICAgICAgIHZh
ciBzcGFuID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgibGFiZWwiLCB7IGNsYXNz
OiAidHJlZS1sYWJlbCIgfSwgdGVzdEVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXN0Q2hlY2ti
b3ggPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJpbnB1dCIsIHsgdHlwZTogImNo
ZWNrYm94IiB9LCBzcGFuKTsKKyAgICAgICAgdGVzdENoZWNrYm94LnRlc3QgPSB0ZXN0OworICAg
ICAgICB0ZXN0Q2hlY2tib3gub25jaGFuZ2UgPSB0aGlzLl9vbkNoYW5nZVRlc3RDaGVja2JveC5i
aW5kKHRoaXMpOworICAgICAgICB0ZXN0Q2hlY2tib3guc3VpdGVDaGVja2JveCA9IHN1aXRlQ2hl
Y2tib3g7CisKKyAgICAgICAgc3VpdGVDaGVja2JveC50ZXN0c0VsZW1lbnRzLnB1c2godGVzdEVs
ZW1lbnQpOworICAgICAgICBzcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCIgIiArIHRlc3QubmFtZSkpOworICAgICAgICBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIsIHsgdHlwZTogIm51bWJlciIgfSwgdGVzdEVsZW1lbnQpOworICAgICAgICBy
ZXR1cm4gdGVzdEVsZW1lbnQ7CisgICAgfSwKKworICAgIGNyZWF0ZUVsZW1lbnRzOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudCgp
OworCisgICAgICAgIFN1aXRlcy5mb3JFYWNoKGZ1bmN0aW9uKHN1aXRlLCBpbmRleCkgeworICAg
ICAgICAgICAgdmFyIHN1aXRlRWxlbWVudCA9IHRoaXMuX2NyZWF0ZVN1aXRlRWxlbWVudCh0cmVl
RWxlbWVudCwgc3VpdGUsICJzdWl0ZS0iICsgaW5kZXgpOworICAgICAgICAgICAgdmFyIGxpc3RF
bGVtZW50ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidWwiLCB7fSwgc3VpdGVF
bGVtZW50KTsKKyAgICAgICAgICAgIHZhciBzdWl0ZUNoZWNrYm94ID0gdGhpcy5fY2hlY2tib3hF
bGVtZW50KHN1aXRlRWxlbWVudCk7CisKKyAgICAgICAgICAgIHN1aXRlLnRlc3RzLmZvckVhY2go
ZnVuY3Rpb24odGVzdCkgeworICAgICAgICAgICAgICAgIHZhciB0ZXN0RWxlbWVudCA9IHRoaXMu
X2NyZWF0ZVRlc3RFbGVtZW50KGxpc3RFbGVtZW50LCB0ZXN0LCBzdWl0ZUNoZWNrYm94KTsKKyAg
ICAgICAgICAgIH0sIHRoaXMpOworICAgICAgICB9LCB0aGlzKTsKKyAgICB9LAorICAgIAorICAg
IHVwZGF0ZUVkaXRzRWxlbWVudHNTdGF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFy
IGVkaXRzRWxlbWVudHMgPSB0aGlzLl9lZGl0c0VsZW1lbnRzKCk7CisgICAgICAgIHZhciBzaG93
Q29tcGxleGl0eUlucHV0cyA9IG9wdGlvbnNNYW5hZ2VyLnZhbHVlRm9yT3B0aW9uKCJhZGp1c3Rt
ZW50IikgPT0gImZpeGVkIjsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkaXRzRWxl
bWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBlZGl0RWxlbWVudCA9IGVkaXRz
RWxlbWVudHNbaV07CisgICAgICAgICAgICBpZiAoc2hvd0NvbXBsZXhpdHlJbnB1dHMpCisgICAg
ICAgICAgICAgICAgZWRpdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlZGl0RWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KCJzZWxlY3RlZCIpOworICAgICAgICB9CisgICAgfSwKKworICAgIHVwZGF0ZURpc3BsYXk6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gImRpc3Bs
YXktIiArIG9wdGlvbnNNYW5hZ2VyLnZhbHVlRm9yT3B0aW9uKCJkaXNwbGF5Iik7CisgICAgfSwK
KworICAgIHVwZGF0ZVVJRnJvbUxvY2FsU3RvcmFnZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIHN1aXRlc0VsZW1lbnRzID0gdGhpcy5fc3VpdGVzRWxlbWVudHMoKTsKKyAgICAgICAg
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3VpdGVzRWxlbWVudHMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciBzdWl0ZUVsZW1lbnQgPSBzdWl0ZXNFbGVtZW50c1tpXTsKKyAg
ICAgICAgICAgIHZhciBzdWl0ZUNoZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHN1aXRl
RWxlbWVudCk7CisgICAgICAgICAgICB2YXIgc3VpdGUgPSBzdWl0ZUNoZWNrYm94LnN1aXRlOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBzdWl0ZUNoZWNrYm94LnRlc3RzRWxlbWVudHMuZm9y
RWFjaChmdW5jdGlvbih0ZXN0RWxlbWVudCkgeworICAgICAgICAgICAgICAgIHZhciB0ZXN0Q2hl
Y2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQodGVzdEVsZW1lbnQpOworICAgICAgICAgICAg
ICAgIHZhciB0ZXN0RWRpdCA9IHRoaXMuX2VkaXRFbGVtZW50KHRlc3RFbGVtZW50KTsKKyAgICAg
ICAgICAgICAgICB2YXIgdGVzdCA9IHRlc3RDaGVja2JveC50ZXN0OworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIHZhciBzdHIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLl9s
b2NhbFN0b3JhZ2VOYW1lRm9yVGVzdChzdWl0ZS5uYW1lLCB0ZXN0Lm5hbWUpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoc3RyID09PSBudWxsKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBKU09OLnBhcnNlKHN0cik7CisgICAgICAgICAg
ICAgICAgdGVzdENoZWNrYm94LmNoZWNrZWQgPSB2YWx1ZS5jaGVja2VkOworICAgICAgICAgICAg
ICAgIHRlc3RFZGl0LnZhbHVlID0gdmFsdWUuY29tcGxleGl0eTsKKyAgICAgICAgICAgIH0sIHRo
aXMpOworCisgICAgICAgICAgICB0aGlzLl91cGRhdGVTdWl0ZUNoZWNrYm94U3RhdGUoc3VpdGVD
aGVja2JveCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXJ0
QnV0dG9uU3RhdGUoKTsKKyAgICB9LAorCisgICAgdXBkYXRlTG9jYWxTdG9yYWdlRnJvbVVJOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgc3VpdGVzRWxlbWVudHMgPSB0aGlzLl9zdWl0
ZXNFbGVtZW50cygpOworICAgICAgICB2YXIgc3VpdGVzID0gW107CisgICAgICAgIAorICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHN1aXRlc0VsZW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICB2YXIgc3VpdGVFbGVtZW50ID0gc3VpdGVzRWxlbWVudHNbaV07CisgICAgICAgICAg
ICB2YXIgc3VpdGVDaGVja2JveCA9IHRoaXMuX2NoZWNrYm94RWxlbWVudChzdWl0ZUVsZW1lbnQp
OworICAgICAgICAgICAgdmFyIHN1aXRlID0gc3VpdGVDaGVja2JveC5zdWl0ZTsKKworICAgICAg
ICAgICAgdmFyIHRlc3RzID0gW107CisgICAgICAgICAgICBzdWl0ZUNoZWNrYm94LnRlc3RzRWxl
bWVudHMuZm9yRWFjaChmdW5jdGlvbih0ZXN0RWxlbWVudCkgeworICAgICAgICAgICAgICAgIHZh
ciB0ZXN0Q2hlY2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQodGVzdEVsZW1lbnQpOworICAg
ICAgICAgICAgICAgIHZhciB0ZXN0RWRpdCA9IHRoaXMuX2VkaXRFbGVtZW50KHRlc3RFbGVtZW50
KTsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdCA9IHRlc3RDaGVja2JveC50ZXN0OworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICh0ZXN0Q2hlY2tib3guY2hlY2tlZCkgewor
ICAgICAgICAgICAgICAgICAgICB0ZXN0LmNvbXBsZXhpdHkgPSB0ZXN0RWRpdC52YWx1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdHMucHVzaCh0ZXN0KTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB7IGNoZWNrZWQ6IHRlc3RDaGVja2JveC5jaGVj
a2VkLCBjb21wbGV4aXR5OiB0ZXN0RWRpdC52YWx1ZSB9OyAKKyAgICAgICAgICAgICAgICBsb2Nh
bFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9sb2NhbFN0b3JhZ2VOYW1lRm9yVGVzdChzdWl0ZS5uYW1l
LCB0ZXN0Lm5hbWUpLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpOworICAgICAgICAgICAgfSwgdGhp
cyk7CisKKyAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgc3Vp
dGVzLnB1c2gobmV3IFN1aXRlKHN1aXRlQ2hlY2tib3guc3VpdGUubmFtZSwgdGVzdHMpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBzdWl0ZXM7CisgICAgfSwKKyAgICAKKyAgICB1cGRh
dGVMb2NhbFN0b3JhZ2VGcm9tSlNPTjogZnVuY3Rpb24oaXRlcmF0aW9uUmVzdWx0cykKKyAgICB7
CisgICAgICAgIGZvciAodmFyIHN1aXRlTmFtZSBpbiBpdGVyYXRpb25SZXN1bHRzW1N0cmluZ3Mu
anNvbi5yZXN1bHRzLnN1aXRlc10pIHsKKyAgICAgICAgICAgIHZhciBzdWl0ZVJlc3VsdHMgPSBp
dGVyYXRpb25SZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1bHRzLnN1aXRlc11bc3VpdGVOYW1lXTsK
KworICAgICAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gc3VpdGVSZXN1bHRzW1N0cmluZ3Mu
anNvbi5yZXN1bHRzLnRlc3RzXSkgeworICAgICAgICAgICAgICAgIHZhciB0ZXN0UmVzdWx0cyA9
IHN1aXRlUmVzdWx0c1tTdHJpbmdzLmpzb24ucmVzdWx0cy50ZXN0c11bdGVzdE5hbWVdOworICAg
ICAgICAgICAgICAgIHZhciBkYXRhID0gdGVzdFJlc3VsdHNbU3RyaW5ncy5qc29uLmV4cGVyaW1l
bnRzLmNvbXBsZXhpdHldOworICAgICAgICAgICAgICAgIHZhciBjb21wbGV4aXR5ID0gTWF0aC5y
b3VuZChkYXRhW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFnZV0pOworCisgICAgICAg
ICAgICAgICAgdmFyIHZhbHVlID0geyBjaGVja2VkOiB0cnVlLCBjb21wbGV4aXR5OiBjb21wbGV4
aXR5IH07CisgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fbG9jYWxT
dG9yYWdlTmFtZUZvclRlc3Qoc3VpdGVOYW1lLCB0ZXN0TmFtZSksIEpTT04uc3RyaW5naWZ5KHZh
bHVlKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3dpbmRvdy5iZW5j
aG1hcmtDb250cm9sbGVyID0KK3sKKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBkb2N1bWVudC5mb3Jtc1siYmVuY2htYXJrLW9wdGlvbnMiXS5hZGRFdmVudExpc3Rl
bmVyKCJjaGFuZ2UiLCBiZW5jaG1hcmtDb250cm9sbGVyLm9uRm9ybUNoYW5nZWQsIHRydWUpOwor
ICAgICAgICBvcHRpb25zTWFuYWdlci51cGRhdGVVSUZyb21Mb2NhbFN0b3JhZ2UoKTsKKyAgICAg
ICAgc3VpdGVzTWFuYWdlci5jcmVhdGVFbGVtZW50cygpOworICAgICAgICBzdWl0ZXNNYW5hZ2Vy
LnVwZGF0ZVVJRnJvbUxvY2FsU3RvcmFnZSgpOworICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0
ZURpc3BsYXkoKTsKKyAgICAgICAgc3VpdGVzTWFuYWdlci51cGRhdGVFZGl0c0VsZW1lbnRzU3Rh
dGUoKTsKKyAgICB9LAorCisgICAgb25Gb3JtQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICBpZiAoZXZlbnQudGFyZ2V0Lm5hbWUgPT0gImFkanVzdG1lbnQiKSB7CisgICAg
ICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZUVkaXRzRWxlbWVudHNTdGF0ZSgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChldmVudC50YXJnZXQubmFtZSA9
PSAiZGlzcGxheSIpIHsKKyAgICAgICAgICAgIHN1aXRlc01hbmFnZXIudXBkYXRlRGlzcGxheSgp
OworICAgICAgICB9CisgICAgfSwKKyAgICAKKyAgICBfcnVuQmVuY2htYXJrOiBmdW5jdGlvbihz
dWl0ZXMsIG9wdGlvbnMpCisgICAgeworICAgICAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQuaW5p
dGlhbGl6ZShzdWl0ZXMsIG9wdGlvbnMpOworICAgICAgICB2YXIgZnJhbWVDb250YWluZXIgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcnVubmluZyA+ICNydW5uaW5nLXRlc3QiKTsKKyAgICAg
ICAgdmFyIHJ1bm5lciA9IG5ldyBCZW5jaG1hcmtSdW5uZXIoc3VpdGVzLCBmcmFtZUNvbnRhaW5l
ciB8fCBkb2N1bWVudC5ib2R5LCBiZW5jaG1hcmtSdW5uZXJDbGllbnQpOworICAgICAgICBydW5u
ZXIucnVuTXVsdGlwbGVJdGVyYXRpb25zKCk7CisgICAgfSwKKworICAgIHN0YXJ0VGVzdDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIG9wdGlvbnMgPSBvcHRpb25zTWFuYWdlci51cGRh
dGVMb2NhbFN0b3JhZ2VGcm9tVUkoKTsKKyAgICAgICAgdmFyIHN1aXRlcyA9IHN1aXRlc01hbmFn
ZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbVVJKCk7CisgICAgICAgIHNlY3Rpb25zTWFuYWdlci5z
ZXR1cFJ1bm5pbmdTZWN0aW9uU3R5bGUob3B0aW9ucyk7CisgICAgICAgIHRoaXMuX3J1bkJlbmNo
bWFyayhzdWl0ZXMsIG9wdGlvbnMpOworICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rp
b24oInJ1bm5pbmciKTsKKyAgICB9LAorCisgICAgc2VsZWN0UmVzdWx0czogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNlbGVjdERhdGEoInJlc3VsdHMiKTsKKyAg
ICB9LAorICAgIAorICAgIHNob3dSZXN1bHRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBz
ZWN0aW9uc01hbmFnZXIuc2hvd1Njb3JlKCJyZXN1bHRzIiwgU3RyaW5ncy50ZXh0LnJlc3VsdHMu
cmVzdWx0cyk7CisgICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93U2VjdGlvbigicmVzdWx0cyIs
IHRydWUpOworICAgIH0sCisgICAgCisgICAgc2hvd0pTT046IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93U2NvcmUoImpzb24iLCBTdHJpbmdzLnRleHQucmVz
dWx0cy5yZXN1bHRzKTsKKyAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNob3dTZWN0aW9uKCJqc29u
IiwgdHJ1ZSk7CisgICAgfSwKKworICAgIHNob3dUZXN0R3JhcGg6IGZ1bmN0aW9uKHRlc3ROYW1l
LCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpCisgICAgeworICAgICAgICBzZWN0
aW9uc01hbmFnZXIuc2hvd1Rlc3ROYW1lKCJ0ZXN0LWdyYXBoIiwgU3RyaW5ncy50ZXh0LnJlc3Vs
dHMuZ3JhcGgsIHRlc3ROYW1lKTsKKyAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNob3dTZWN0aW9u
KCJ0ZXN0LWdyYXBoIiwgdHJ1ZSk7CisgICAgICAgIGdyYXBoKCJzZWN0aW9uI3Rlc3QtZ3JhcGgg
PiBkYXRhIiwgbmV3IEluc2V0cygyMCwgNTAsIDIwLCA1MCksIGF4ZXMsIHNhbXBsZXMsIHNhbXBs
aW5nVGltZU9mZnNldCk7CisgICAgfSwKKworICAgIHNob3dUZXN0SlNPTjogZnVuY3Rpb24odGVz
dE5hbWUsIGpzb24pCisgICAgeworICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1Rlc3ROYW1l
KCJ0ZXN0LWpzb24iLCBTdHJpbmdzLnRleHQucmVzdWx0cy5ncmFwaCwgdGVzdE5hbWUpOworICAg
ICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd0pTT04oInRlc3QtanNvbiIsIGpzb24pOworICAgICAg
ICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInRlc3QtanNvbiIsIHRydWUpOworICAgIH0s
CisgICAgCisgICAgc2VsZWN0SlNPTjogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIpCisgICAg
eworICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2VsZWN0RGF0YUNvbnRlbnRzKHNlY3Rpb25JZGVu
dGlmaWVyKTsKKyAgICB9LAorfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGJl
bmNobWFya0NvbnRyb2xsZXIuaW5pdGlhbGl6ZSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVu
Y2htYXJrLXJ1bm5lci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjQ4
MzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291
cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcwpAQCAtMCwwICsxLDE4OSBAQAor
ZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyU3RhdGUoc3VpdGVzKQoreworICAgIHRoaXMuX3N1aXRl
cyA9IHN1aXRlczsKKyAgICB0aGlzLl9zdWl0ZUluZGV4ID0gLTE7CisgICAgdGhpcy5fdGVzdElu
ZGV4ID0gMDsKKyAgICB0aGlzLm5leHQoKTsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJv
dG90eXBlLmN1cnJlbnRTdWl0ZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpcy5fc3Vp
dGVzW3RoaXMuX3N1aXRlSW5kZXhdOworfQorCitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5
cGUuY3VycmVudFRlc3QgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHN1aXRlID0gdGhpcy5jdXJy
ZW50U3VpdGUoKTsKKyAgICByZXR1cm4gc3VpdGUgPyBzdWl0ZS50ZXN0c1t0aGlzLl90ZXN0SW5k
ZXhdIDogbnVsbDsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmlzRmlyc3RU
ZXN0ID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiAhdGhpcy5fdGVzdEluZGV4OworfQorCitC
ZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0
aGlzLl90ZXN0SW5kZXgrKzsKKworICAgIHZhciBzdWl0ZSA9IHRoaXMuX3N1aXRlc1t0aGlzLl9z
dWl0ZUluZGV4XTsKKyAgICBpZiAoc3VpdGUgJiYgdGhpcy5fdGVzdEluZGV4IDwgc3VpdGUudGVz
dHMubGVuZ3RoKQorICAgICAgICByZXR1cm4gdGhpczsKKworICAgIHRoaXMuX3Rlc3RJbmRleCA9
IDA7CisgICAgZG8geworICAgICAgICB0aGlzLl9zdWl0ZUluZGV4Kys7CisgICAgfSB3aGlsZSAo
dGhpcy5fc3VpdGVJbmRleCA8IHRoaXMuX3N1aXRlcy5sZW5ndGggJiYgdGhpcy5fc3VpdGVzW3Ro
aXMuX3N1aXRlSW5kZXhdLmRpc2FibGVkKTsKKworICAgIHJldHVybiB0aGlzOworfQorCitCZW5j
aG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUucHJlcGFyZUN1cnJlbnRUZXN0ID0gZnVuY3Rpb24o
cnVubmVyLCBmcmFtZSkKK3sKKyAgICB2YXIgc3VpdGUgPSB0aGlzLmN1cnJlbnRTdWl0ZSgpOwor
ICAgIHZhciB0ZXN0ID0gdGhpcy5jdXJyZW50VGVzdCgpOworICAgIHZhciBwcm9taXNlID0gbmV3
IFNpbXBsZVByb21pc2U7CisgICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IHN1aXRlLnByZXBhcmUocnVubmVyLCBmcmFtZS5jb250ZW50V2luZG93LCBmcmFtZS5jb250ZW50
RG9jdW1lbnQpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7IHByb21pc2UucmVzb2x2ZShyZXN1bHQp
OyB9KTsKKyAgICB9CisgICAgZnJhbWUuc3JjID0gIi4uL3Rlc3RzLyIgKyB0ZXN0LnVybDsKKyAg
ICByZXR1cm4gcHJvbWlzZTsKK30KKworZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyKHN1aXRlcywg
ZnJhbWVDb250YWluZXIsIGNsaWVudCkKK3sKKyAgICB0aGlzLl9zdWl0ZXMgPSBzdWl0ZXM7Cisg
ICAgdGhpcy5fY2xpZW50ID0gY2xpZW50OworICAgIHRoaXMuX2ZyYW1lQ29udGFpbmVyID0gZnJh
bWVDb250YWluZXI7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUud2FpdEZvckVsZW1l
bnQgPSBmdW5jdGlvbihzZWxlY3RvcikKK3sKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQ
cm9taXNlOworICAgIHZhciBjb250ZW50RG9jdW1lbnQgPSB0aGlzLl9mcmFtZS5jb250ZW50RG9j
dW1lbnQ7CisKKyAgICBmdW5jdGlvbiByZXNvbHZlSWZSZWFkeSgpIHsKKyAgICAgICAgdmFyIGVs
ZW1lbnQgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CisgICAgICAg
IGlmIChlbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIHByb21pc2UucmVzb2x2ZShlbGVtZW50
KTsKKyAgICAgICAgc2V0VGltZW91dChyZXNvbHZlSWZSZWFkeSwgNTApOworICAgIH0KKworICAg
IHJlc29sdmVJZlJlYWR5KCk7CisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK0JlbmNobWFya1J1
bm5lci5wcm90b3R5cGUuX2FwcGVuZEZyYW1lID0gZnVuY3Rpb24oKQoreworICAgIHZhciBmcmFt
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGZyYW1lLnNldEF0dHJp
YnV0ZSgic2Nyb2xsaW5nIiwgIm5vIik7CisKKyAgICBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMu
X2NsaWVudC53aWxsQWRkVGVzdEZyYW1lKQorICAgICAgICB0aGlzLl9jbGllbnQud2lsbEFkZFRl
c3RGcmFtZShmcmFtZSk7CisKKyAgICB0aGlzLl9mcmFtZUNvbnRhaW5lci5pbnNlcnRCZWZvcmUo
ZnJhbWUsIHRoaXMuX2ZyYW1lQ29udGFpbmVyLmZpcnN0Q2hpbGQpOworICAgIHRoaXMuX2ZyYW1l
ID0gZnJhbWU7CisgICAgcmV0dXJuIGZyYW1lOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90
eXBlLl9yZW1vdmVGcmFtZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAodGhpcy5fZnJhbWUpIHsK
KyAgICAgICAgdGhpcy5fZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9mcmFtZSk7
CisgICAgICAgIHRoaXMuX2ZyYW1lID0gbnVsbDsKKyAgICB9Cit9CisKK0JlbmNobWFya1J1bm5l
ci5wcm90b3R5cGUuX3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzID0gZnVuY3Rpb24oc3RhdGUpCit7
CisgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICB2YXIgc3VpdGUgPSBz
dGF0ZS5jdXJyZW50U3VpdGUoKTsKKyAgICB2YXIgdGVzdCA9IHN0YXRlLmN1cnJlbnRUZXN0KCk7
CisgICAgCisgICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3RU
ZXN0KQorICAgICAgICB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3Qoc3VpdGUsIHRlc3QpOworCisg
ICAgdmFyIGNvbnRlbnRXaW5kb3cgPSB0aGlzLl9mcmFtZS5jb250ZW50V2luZG93OworICAgIHZh
ciBzZWxmID0gdGhpczsKKworICAgIHN1aXRlLnJ1bihjb250ZW50V2luZG93LCB0ZXN0LCB0aGlz
Ll9jbGllbnQub3B0aW9ucywgdGhpcy5fY2xpZW50LnJlY29yZFRhYmxlLCB0aGlzLl9jbGllbnQu
cHJvZ3Jlc3NCYXIpLnRoZW4oZnVuY3Rpb24oc2FtcGxlcikgeworICAgICAgICB2YXIgc2FtcGxl
cnMgPSBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tzdWl0ZS5uYW1lXSB8fCBbXTsKKyAgICAgICAgCisg
ICAgICAgIHNhbXBsZXJzW3Rlc3QubmFtZV0gPSBzYW1wbGVyOworICAgICAgICBzZWxmLl9zdWl0
ZXNTYW1wbGVyc1tzdWl0ZS5uYW1lXSA9IHNhbXBsZXJzOworCisgICAgICAgIGlmIChzZWxmLl9j
bGllbnQgJiYgc2VsZi5fY2xpZW50LmRpZFJ1blRlc3QpCisgICAgICAgICAgICBzZWxmLl9jbGll
bnQuZGlkUnVuVGVzdChzdWl0ZSwgdGVzdCk7CisgICAgICAgIAorICAgICAgICBzdGF0ZS5uZXh0
KCk7CisgICAgICAgIGlmIChzdGF0ZS5jdXJyZW50U3VpdGUoKSAhPSBzdWl0ZSkKKyAgICAgICAg
ICAgIHNlbGYuX3JlbW92ZUZyYW1lKCk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShzdGF0ZSk7
CisgICAgfSk7CisgICAgCisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK0JlbmNobWFya1J1bm5l
ci5wcm90b3R5cGUuc3RlcCA9IGZ1bmN0aW9uKHN0YXRlKQoreworICAgIGlmICghc3RhdGUpIHsK
KyAgICAgICAgc3RhdGUgPSBuZXcgQmVuY2htYXJrUnVubmVyU3RhdGUodGhpcy5fc3VpdGVzKTsK
KyAgICAgICAgdGhpcy5fc3VpdGVzU2FtcGxlcnMgPSB7fTsKKyAgICB9CisKKyAgICB2YXIgc3Vp
dGUgPSBzdGF0ZS5jdXJyZW50U3VpdGUoKTsKKyAgICBpZiAoIXN1aXRlKSB7CisgICAgICAgIHRo
aXMuX2ZpbmFsaXplKCk7CisgICAgICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7
CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAg
ICB9CisKKyAgICBpZiAoc3RhdGUuaXNGaXJzdFRlc3QoKSkgeworICAgICAgICB0aGlzLl9tYXN1
cmVkVmFsdWVzRm9yQ3VycmVudFN1aXRlID0ge307CisgICAgICAgIHRoaXMuX2FwcGVuZEZyYW1l
KCk7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRlLnByZXBhcmVDdXJyZW50VGVzdCh0aGlzLCB0
aGlzLl9mcmFtZSkudGhlbihmdW5jdGlvbihwcmVwYXJlUmV0dXJuVmFsdWUpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzKHN0YXRlKTsKKyAgICB9LmJpbmQo
dGhpcykpOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0ZXBzID0gZnVu
Y3Rpb24oc3RhcnRpbmdTdGF0ZSkKK3sKKyAgICB2YXIgbmV4dENhbGxlZSA9IHRoaXMucnVuQWxs
U3RlcHMuYmluZCh0aGlzKTsKKyAgICB0aGlzLnN0ZXAoc3RhcnRpbmdTdGF0ZSkudGhlbihmdW5j
dGlvbihuZXh0U3RhdGUpIHsKKyAgICAgICAgaWYgKG5leHRTdGF0ZSkKKyAgICAgICAgICAgIG5l
eHRDYWxsZWUobmV4dFN0YXRlKTsKKyAgICB9KTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3Rv
dHlwZS5ydW5NdWx0aXBsZUl0ZXJhdGlvbnMgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHNlbGYg
PSB0aGlzOworICAgIHZhciBjdXJyZW50SXRlcmF0aW9uID0gMDsKKworICAgIHRoaXMuX3J1bk5l
eHRJdGVyYXRpb24gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgY3VycmVudEl0ZXJhdGlvbisrOwor
ICAgICAgICBpZiAoY3VycmVudEl0ZXJhdGlvbiA8IHNlbGYuX2NsaWVudC5pdGVyYXRpb25Db3Vu
dCkKKyAgICAgICAgICAgIHNlbGYucnVuQWxsU3RlcHMoKTsKKyAgICAgICAgZWxzZSBpZiAodGhp
cy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKQorICAgICAg
ICAgICAgc2VsZi5fY2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24oKTsKKyAgICB9CisKKyAg
ICBpZiAoc2VsZi5fY2xpZW50ICYmIHNlbGYuX2NsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlv
bikKKyAgICAgICAgc2VsZi5fY2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKCk7CisKKyAg
ICBzZWxmLnJ1bkFsbFN0ZXBzKCk7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2Zp
bmFsaXplID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX3JlbW92ZUZyYW1lKCk7CisgICAgICAg
IAorICAgIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcykKKyAg
ICAgICAgdGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcyh0aGlzLl9zdWl0ZXNTYW1wbGVycyk7CisK
KyAgICBpZiAodGhpcy5fcnVuTmV4dEl0ZXJhdGlvbikKKyAgICAgICAgdGhpcy5fcnVuTmV4dEl0
ZXJhdGlvbigpOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jl
c291cmNlcy9kZWJ1Zy1ydW5uZXIvZDMubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvZDMubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjFhN2FlOTAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9kMy5taW4uanMKQEAgLTAsMCAr
MSw1IEBACishZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sdCl7cmV0dXJuIHQ+bj8tMTpuPnQ/MTpu
Pj10PzA6MC8wfWZ1bmN0aW9uIHQobil7cmV0dXJuIG51bGwhPW4mJiFpc05hTihuKX1mdW5jdGlv
biBlKG4pe3JldHVybntsZWZ0OmZ1bmN0aW9uKHQsZSxyLHUpe2Zvcihhcmd1bWVudHMubGVuZ3Ro
PDMmJihyPTApLGFyZ3VtZW50cy5sZW5ndGg8NCYmKHU9dC5sZW5ndGgpO3U+cjspe3ZhciBpPXIr
dT4+PjE7bih0W2ldLGUpPDA/cj1pKzE6dT1pfXJldHVybiByfSxyaWdodDpmdW5jdGlvbih0LGUs
cix1KXtmb3IoYXJndW1lbnRzLmxlbmd0aDwzJiYocj0wKSxhcmd1bWVudHMubGVuZ3RoPDQmJih1
PXQubGVuZ3RoKTt1PnI7KXt2YXIgaT1yK3U+Pj4xO24odFtpXSxlKT4wP3U9aTpyPWkrMX1yZXR1
cm4gcn19fWZ1bmN0aW9uIHIobil7cmV0dXJuIG4ubGVuZ3RofWZ1bmN0aW9uIHUobil7Zm9yKHZh
ciB0PTE7bip0JTE7KXQqPTEwO3JldHVybiB0fWZ1bmN0aW9uIGkobix0KXt0cnl7Zm9yKHZhciBl
IGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLGUse3ZhbHVlOnRbZV0sZW51
bWVyYWJsZTohMX0pfWNhdGNoKHIpe24ucHJvdG90eXBlPXR9fWZ1bmN0aW9uIG8oKXt9ZnVuY3Rp
b24gYShuKXtyZXR1cm4gaWErbiBpbiB0aGlzfWZ1bmN0aW9uIGMobil7cmV0dXJuIG49aWErbixu
IGluIHRoaXMmJmRlbGV0ZSB0aGlzW25dfWZ1bmN0aW9uIHMoKXt2YXIgbj1bXTtyZXR1cm4gdGhp
cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe24ucHVzaCh0KX0pLG59ZnVuY3Rpb24gbCgpe3ZhciBuPTA7
Zm9yKHZhciB0IGluIHRoaXMpdC5jaGFyQ29kZUF0KDApPT09b2EmJisrbjtyZXR1cm4gbn1mdW5j
dGlvbiBmKCl7Zm9yKHZhciBuIGluIHRoaXMpaWYobi5jaGFyQ29kZUF0KDApPT09b2EpcmV0dXJu
ITE7cmV0dXJuITB9ZnVuY3Rpb24gaCgpe31mdW5jdGlvbiBnKG4sdCxlKXtyZXR1cm4gZnVuY3Rp
b24oKXt2YXIgcj1lLmFwcGx5KHQsYXJndW1lbnRzKTtyZXR1cm4gcj09PXQ/bjpyfX1mdW5jdGlv
biBwKG4sdCl7aWYodCBpbiBuKXJldHVybiB0O3Q9dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0
LnN1YnN0cmluZygxKTtmb3IodmFyIGU9MCxyPWFhLmxlbmd0aDtyPmU7KytlKXt2YXIgdT1hYVtl
XSt0O2lmKHUgaW4gbilyZXR1cm4gdX19ZnVuY3Rpb24gdigpe31mdW5jdGlvbiBkKCl7fWZ1bmN0
aW9uIG0obil7ZnVuY3Rpb24gdCgpe2Zvcih2YXIgdCxyPWUsdT0tMSxpPXIubGVuZ3RoOysrdTxp
OykodD1yW3VdLm9uKSYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG59dmFyIGU9W10s
cj1uZXcgbztyZXR1cm4gdC5vbj1mdW5jdGlvbih0LHUpe3ZhciBpLG89ci5nZXQodCk7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg8Mj9vJiZvLm9uOihvJiYoby5vbj1udWxsLGU9ZS5zbGljZSgwLGk9
ZS5pbmRleE9mKG8pKS5jb25jYXQoZS5zbGljZShpKzEpKSxyLnJlbW92ZSh0KSksdSYmZS5wdXNo
KHIuc2V0KHQse29uOnV9KSksbil9LHR9ZnVuY3Rpb24geSgpe1pvLmV2ZW50LnByZXZlbnREZWZh
dWx0KCl9ZnVuY3Rpb24geCgpe2Zvcih2YXIgbix0PVpvLmV2ZW50O249dC5zb3VyY2VFdmVudDsp
dD1uO3JldHVybiB0fWZ1bmN0aW9uIE0obil7Zm9yKHZhciB0PW5ldyBkLGU9MCxyPWFyZ3VtZW50
cy5sZW5ndGg7KytlPHI7KXRbYXJndW1lbnRzW2VdXT1tKHQpO3JldHVybiB0Lm9mPWZ1bmN0aW9u
KGUscil7cmV0dXJuIGZ1bmN0aW9uKHUpe3RyeXt2YXIgaT11LnNvdXJjZUV2ZW50PVpvLmV2ZW50
O3UudGFyZ2V0PW4sWm8uZXZlbnQ9dSx0W3UudHlwZV0uYXBwbHkoZSxyKX1maW5hbGx5e1pvLmV2
ZW50PWl9fX0sdH1mdW5jdGlvbiBfKG4pe3JldHVybiBzYShuLHBhKSxufWZ1bmN0aW9uIGIobil7
cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbigpe3JldHVybiBsYShuLHRoaXMp
fX1mdW5jdGlvbiB3KG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP246ZnVuY3Rpb24oKXty
ZXR1cm4gZmEobix0aGlzKX19ZnVuY3Rpb24gUyhuLHQpe2Z1bmN0aW9uIGUoKXt0aGlzLnJlbW92
ZUF0dHJpYnV0ZShuKX1mdW5jdGlvbiByKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhuLnNwYWNl
LG4ubG9jYWwpfWZ1bmN0aW9uIHUoKXt0aGlzLnNldEF0dHJpYnV0ZShuLHQpfWZ1bmN0aW9uIGko
KXt0aGlzLnNldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCx0KX1mdW5jdGlvbiBvKCl7dmFy
IGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09ZT90aGlzLnJlbW92ZUF0dHJpYnV0ZShu
KTp0aGlzLnNldEF0dHJpYnV0ZShuLGUpfWZ1bmN0aW9uIGEoKXt2YXIgZT10LmFwcGx5KHRoaXMs
YXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2Fs
KTp0aGlzLnNldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCxlKX1yZXR1cm4gbj1aby5ucy5x
dWFsaWZ5KG4pLG51bGw9PXQ/bi5sb2NhbD9yOmU6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/bi5sb2Nh
bD9hOm86bi5sb2NhbD9pOnV9ZnVuY3Rpb24gayhuKXtyZXR1cm4gbi50cmltKCkucmVwbGFjZSgv
XHMrL2csIiAiKX1mdW5jdGlvbiBFKG4pe3JldHVybiBuZXcgUmVnRXhwKCIoPzpefFxccyspIita
by5yZXF1b3RlKG4pKyIoPzpcXHMrfCQpIiwiZyIpfWZ1bmN0aW9uIEEobil7cmV0dXJuKG4rIiIp
LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBDKG4sdCl7ZnVuY3Rpb24gZSgpe2Zvcih2
YXIgZT0tMTsrK2U8dTspbltlXSh0aGlzLHQpfWZ1bmN0aW9uIHIoKXtmb3IodmFyIGU9LTEscj10
LmFwcGx5KHRoaXMsYXJndW1lbnRzKTsrK2U8dTspbltlXSh0aGlzLHIpfW49QShuKS5tYXAoTik7
dmFyIHU9bi5sZW5ndGg7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/cjplfWZ1bmN0aW9uIE4o
bil7dmFyIHQ9RShuKTtyZXR1cm4gZnVuY3Rpb24oZSxyKXtpZih1PWUuY2xhc3NMaXN0KXJldHVy
biByP3UuYWRkKG4pOnUucmVtb3ZlKG4pO3ZhciB1PWUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwi
IjtyPyh0Lmxhc3RJbmRleD0wLHQudGVzdCh1KXx8ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixrKHUr
IiAiK24pKSk6ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixrKHUucmVwbGFjZSh0LCIgIikpKX19ZnVu
Y3Rpb24geihuLHQsZSl7ZnVuY3Rpb24gcigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobil9
ZnVuY3Rpb24gdSgpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobix0LGUpfWZ1bmN0aW9uIGkoKXt2
YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP3RoaXMuc3R5bGUucmVtb3ZlUHJv
cGVydHkobik6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLHIsZSl9cmV0dXJuIG51bGw9PXQ/cjoi
ZnVuY3Rpb24iPT10eXBlb2YgdD9pOnV9ZnVuY3Rpb24gTChuLHQpe2Z1bmN0aW9uIGUoKXtkZWxl
dGUgdGhpc1tuXX1mdW5jdGlvbiByKCl7dGhpc1tuXT10fWZ1bmN0aW9uIHUoKXt2YXIgZT10LmFw
cGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP2RlbGV0ZSB0aGlzW25dOnRoaXNbbl09ZX1yZXR1
cm4gbnVsbD09dD9lOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3U6cn1mdW5jdGlvbiBUKG4pe3JldHVy
biJmdW5jdGlvbiI9PXR5cGVvZiBuP246KG49Wm8ubnMucXVhbGlmeShuKSkubG9jYWw/ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLnNwYWNlLG4u
bG9jYWwpfTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKHRoaXMubmFtZXNwYWNlVVJJLG4pfX1mdW5jdGlvbiBxKG4pe3JldHVybntfX2RhdGFfXzpu
fX1mdW5jdGlvbiBSKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBnYSh0aGlzLG4pfX1mdW5j
dGlvbiBEKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RofHwodD1uKSxmdW5jdGlvbihuLGUpe3Jl
dHVybiBuJiZlP3Qobi5fX2RhdGFfXyxlLl9fZGF0YV9fKTohbi0hZX19ZnVuY3Rpb24gUChuLHQp
e2Zvcih2YXIgZT0wLHI9bi5sZW5ndGg7cj5lO2UrKylmb3IodmFyIHUsaT1uW2VdLG89MCxhPWku
bGVuZ3RoO2E+bztvKyspKHU9aVtvXSkmJnQodSxvLGUpO3JldHVybiBufWZ1bmN0aW9uIFUobil7
cmV0dXJuIHNhKG4sZGEpLG59ZnVuY3Rpb24gaihuKXt2YXIgdCxlO3JldHVybiBmdW5jdGlvbihy
LHUsaSl7dmFyIG8sYT1uW2ldLnVwZGF0ZSxjPWEubGVuZ3RoO2ZvcihpIT1lJiYoZT1pLHQ9MCks
dT49dCYmKHQ9dSsxKTshKG89YVt0XSkmJisrdDxjOyk7cmV0dXJuIG99fWZ1bmN0aW9uIEgoKXt2
YXIgbj10aGlzLl9fdHJhbnNpdGlvbl9fO24mJisrbi5hY3RpdmV9ZnVuY3Rpb24gRihuLHQsZSl7
ZnVuY3Rpb24gcigpe3ZhciB0PXRoaXNbb107dCYmKHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihu
LHQsdC4kKSxkZWxldGUgdGhpc1tvXSl9ZnVuY3Rpb24gdSgpe3ZhciB1PWModCxYbyhhcmd1bWVu
dHMpKTtyLmNhbGwodGhpcyksdGhpcy5hZGRFdmVudExpc3RlbmVyKG4sdGhpc1tvXT11LHUuJD1l
KSx1Ll89dH1mdW5jdGlvbiBpKCl7dmFyIHQsZT1uZXcgUmVnRXhwKCJeX19vbihbXi5dKykiK1pv
LnJlcXVvdGUobikrIiQiKTtmb3IodmFyIHIgaW4gdGhpcylpZih0PXIubWF0Y2goZSkpe3ZhciB1
PXRoaXNbcl07dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHRbMV0sdSx1LiQpLGRlbGV0ZSB0aGlz
W3JdfX12YXIgbz0iX19vbiIrbixhPW4uaW5kZXhPZigiLiIpLGM9TzthPjAmJihuPW4uc3Vic3Ry
aW5nKDAsYSkpO3ZhciBzPXlhLmdldChuKTtyZXR1cm4gcyYmKG49cyxjPVkpLGE/dD91OnI6dD92
Oml9ZnVuY3Rpb24gTyhuLHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1aby5ldmVudDtaby5l
dmVudD1lLHRbMF09dGhpcy5fX2RhdGFfXzt0cnl7bi5hcHBseSh0aGlzLHQpfWZpbmFsbHl7Wm8u
ZXZlbnQ9cn19fWZ1bmN0aW9uIFkobix0KXt2YXIgZT1PKG4sdCk7cmV0dXJuIGZ1bmN0aW9uKG4p
e3ZhciB0PXRoaXMscj1uLnJlbGF0ZWRUYXJnZXQ7ciYmKHI9PT10fHw4JnIuY29tcGFyZURvY3Vt
ZW50UG9zaXRpb24odCkpfHxlLmNhbGwodCxuKX19ZnVuY3Rpb24gSSgpe3ZhciBuPSIuZHJhZ3N1
cHByZXNzLSIrICsrTWEsdD0iY2xpY2siK24sZT1aby5zZWxlY3QoV28pLm9uKCJ0b3VjaG1vdmUi
K24seSkub24oImRyYWdzdGFydCIrbix5KS5vbigic2VsZWN0c3RhcnQiK24seSk7aWYoeGEpe3Zh
ciByPUJvLnN0eWxlLHU9clt4YV07clt4YV09Im5vbmUifXJldHVybiBmdW5jdGlvbihpKXtmdW5j
dGlvbiBvKCl7ZS5vbih0LG51bGwpfWUub24obixudWxsKSx4YSYmKHJbeGFdPXUpLGkmJihlLm9u
KHQsZnVuY3Rpb24oKXt5KCksbygpfSwhMCksc2V0VGltZW91dChvLDApKX19ZnVuY3Rpb24gWihu
LHQpe3QuY2hhbmdlZFRvdWNoZXMmJih0PXQuY2hhbmdlZFRvdWNoZXNbMF0pO3ZhciBlPW4ub3du
ZXJTVkdFbGVtZW50fHxuO2lmKGUuY3JlYXRlU1ZHUG9pbnQpe3ZhciByPWUuY3JlYXRlU1ZHUG9p
bnQoKTtpZigwPl9hJiYoV28uc2Nyb2xsWHx8V28uc2Nyb2xsWSkpe2U9Wm8uc2VsZWN0KCJib2R5
IikuYXBwZW5kKCJzdmciKS5zdHlsZSh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAs
bWFyZ2luOjAscGFkZGluZzowLGJvcmRlcjoibm9uZSJ9LCJpbXBvcnRhbnQiKTt2YXIgdT1lWzBd
WzBdLmdldFNjcmVlbkNUTSgpO19hPSEodS5mfHx1LmUpLGUucmVtb3ZlKCl9cmV0dXJuIF9hPyhy
Lng9dC5wYWdlWCxyLnk9dC5wYWdlWSk6KHIueD10LmNsaWVudFgsci55PXQuY2xpZW50WSkscj1y
Lm1hdHJpeFRyYW5zZm9ybShuLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSksW3IueCxyLnldfXZh
ciBpPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW3QuY2xpZW50WC1pLmxlZnQtbi5j
bGllbnRMZWZ0LHQuY2xpZW50WS1pLnRvcC1uLmNsaWVudFRvcF19ZnVuY3Rpb24gVigpe3JldHVy
biBaby5ldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyfWZ1bmN0aW9uIFgoKXtyZXR1
cm4gWm8uZXZlbnQudGFyZ2V0fWZ1bmN0aW9uICQoKXtyZXR1cm4gV299ZnVuY3Rpb24gQihuKXty
ZXR1cm4gbj4wPzE6MD5uPy0xOjB9ZnVuY3Rpb24gVyhuLHQsZSl7cmV0dXJuKHRbMF0tblswXSkq
KGVbMV0tblsxXSktKHRbMV0tblsxXSkqKGVbMF0tblswXSl9ZnVuY3Rpb24gSihuKXtyZXR1cm4g
bj4xPzA6LTE+bj9iYTpNYXRoLmFjb3Mobil9ZnVuY3Rpb24gRyhuKXtyZXR1cm4gbj4xP1NhOi0x
Pm4/LVNhOk1hdGguYXNpbihuKX1mdW5jdGlvbiBLKG4pe3JldHVybigobj1NYXRoLmV4cChuKSkt
MS9uKS8yfWZ1bmN0aW9uIFEobil7cmV0dXJuKChuPU1hdGguZXhwKG4pKSsxL24pLzJ9ZnVuY3Rp
b24gbnQobil7cmV0dXJuKChuPU1hdGguZXhwKDIqbikpLTEpLyhuKzEpfWZ1bmN0aW9uIHR0KG4p
e3JldHVybihuPU1hdGguc2luKG4vMikpKm59ZnVuY3Rpb24gZXQoKXt9ZnVuY3Rpb24gcnQobix0
LGUpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgcnQ/KHRoaXMuaD0rbix0aGlzLnM9K3Qsdm9pZCh0
aGlzLmw9K2UpKTphcmd1bWVudHMubGVuZ3RoPDI/biBpbnN0YW5jZW9mIHJ0P25ldyBydChuLmgs
bi5zLG4ubCk6bXQoIiIrbix5dCxydCk6bmV3IHJ0KG4sdCxlKX1mdW5jdGlvbiB1dChuLHQsZSl7
ZnVuY3Rpb24gcihuKXtyZXR1cm4gbj4zNjA/bi09MzYwOjA+biYmKG4rPTM2MCksNjA+bj9pKyhv
LWkpKm4vNjA6MTgwPm4/bzoyNDA+bj9pKyhvLWkpKigyNDAtbikvNjA6aX1mdW5jdGlvbiB1KG4p
e3JldHVybiBNYXRoLnJvdW5kKDI1NSpyKG4pKX12YXIgaSxvO3JldHVybiBuPWlzTmFOKG4pPzA6
KG4lPTM2MCk8MD9uKzM2MDpuLHQ9aXNOYU4odCk/MDowPnQ/MDp0PjE/MTp0LGU9MD5lPzA6ZT4x
PzE6ZSxvPS41Pj1lP2UqKDErdCk6ZSt0LWUqdCxpPTIqZS1vLG5ldyBndCh1KG4rMTIwKSx1KG4p
LHUobi0xMjApKX1mdW5jdGlvbiBpdChuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBpdD8o
dGhpcy5oPStuLHRoaXMuYz0rdCx2b2lkKHRoaXMubD0rZSkpOmFyZ3VtZW50cy5sZW5ndGg8Mj9u
IGluc3RhbmNlb2YgaXQ/bmV3IGl0KG4uaCxuLmMsbi5sKTpuIGluc3RhbmNlb2YgYXQ/c3Qobi5s
LG4uYSxuLmIpOnN0KChuPXh0KChuPVpvLnJnYihuKSkucixuLmcsbi5iKSkubCxuLmEsbi5iKTpu
ZXcgaXQobix0LGUpfWZ1bmN0aW9uIG90KG4sdCxlKXtyZXR1cm4gaXNOYU4obikmJihuPTApLGlz
TmFOKHQpJiYodD0wKSxuZXcgYXQoZSxNYXRoLmNvcyhuKj1BYSkqdCxNYXRoLnNpbihuKSp0KX1m
dW5jdGlvbiBhdChuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhdD8odGhpcy5sPStuLHRo
aXMuYT0rdCx2b2lkKHRoaXMuYj0rZSkpOmFyZ3VtZW50cy5sZW5ndGg8Mj9uIGluc3RhbmNlb2Yg
YXQ/bmV3IGF0KG4ubCxuLmEsbi5iKTpuIGluc3RhbmNlb2YgaXQ/b3Qobi5sLG4uYyxuLmgpOnh0
KChuPWd0KG4pKS5yLG4uZyxuLmIpOm5ldyBhdChuLHQsZSl9ZnVuY3Rpb24gY3Qobix0LGUpe3Zh
ciByPShuKzE2KS8xMTYsdT1yK3QvNTAwLGk9ci1lLzIwMDtyZXR1cm4gdT1sdCh1KSpqYSxyPWx0
KHIpKkhhLGk9bHQoaSkqRmEsbmV3IGd0KGh0KDMuMjQwNDU0Mip1LTEuNTM3MTM4NSpyLS40OTg1
MzE0KmkpLGh0KC0uOTY5MjY2KnUrMS44NzYwMTA4KnIrLjA0MTU1NippKSxodCguMDU1NjQzNCp1
LS4yMDQwMjU5KnIrMS4wNTcyMjUyKmkpKX1mdW5jdGlvbiBzdChuLHQsZSl7cmV0dXJuIG4+MD9u
ZXcgaXQoTWF0aC5hdGFuMihlLHQpKkNhLE1hdGguc3FydCh0KnQrZSplKSxuKTpuZXcgaXQoMC8w
LDAvMCxuKX1mdW5jdGlvbiBsdChuKXtyZXR1cm4gbj4uMjA2ODkzMDM0P24qbipuOihuLTQvMjkp
LzcuNzg3MDM3fWZ1bmN0aW9uIGZ0KG4pe3JldHVybiBuPi4wMDg4NTY/TWF0aC5wb3cobiwxLzMp
OjcuNzg3MDM3Km4rNC8yOX1mdW5jdGlvbiBodChuKXtyZXR1cm4gTWF0aC5yb3VuZCgyNTUqKC4w
MDMwND49bj8xMi45MipuOjEuMDU1Kk1hdGgucG93KG4sMS8yLjQpLS4wNTUpKX1mdW5jdGlvbiBn
dChuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBndD8odGhpcy5yPX5+bix0aGlzLmc9fn50
LHZvaWQodGhpcy5iPX5+ZSkpOmFyZ3VtZW50cy5sZW5ndGg8Mj9uIGluc3RhbmNlb2YgZ3Q/bmV3
IGd0KG4ucixuLmcsbi5iKTptdCgiIituLGd0LHV0KTpuZXcgZ3Qobix0LGUpfWZ1bmN0aW9uIHB0
KG4pe3JldHVybiBuZXcgZ3Qobj4+MTYsMjU1Jm4+PjgsMjU1Jm4pfWZ1bmN0aW9uIHZ0KG4pe3Jl
dHVybiBwdChuKSsiIn1mdW5jdGlvbiBkdChuKXtyZXR1cm4gMTY+bj8iMCIrTWF0aC5tYXgoMCxu
KS50b1N0cmluZygxNik6TWF0aC5taW4oMjU1LG4pLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBtdChu
LHQsZSl7dmFyIHIsdSxpLG89MCxhPTAsYz0wO2lmKHI9LyhbYS16XSspXCgoLiopXCkvaS5leGVj
KG4pKXN3aXRjaCh1PXJbMl0uc3BsaXQoIiwiKSxyWzFdKXtjYXNlImhzbCI6cmV0dXJuIGUocGFy
c2VGbG9hdCh1WzBdKSxwYXJzZUZsb2F0KHVbMV0pLzEwMCxwYXJzZUZsb2F0KHVbMl0pLzEwMCk7
Y2FzZSJyZ2IiOnJldHVybiB0KF90KHVbMF0pLF90KHVbMV0pLF90KHVbMl0pKX1yZXR1cm4oaT1J
YS5nZXQobikpP3QoaS5yLGkuZyxpLmIpOihudWxsPT1ufHwiIyIhPT1uLmNoYXJBdCgwKXx8aXNO
YU4oaT1wYXJzZUludChuLnN1YnN0cmluZygxKSwxNikpfHwoND09PW4ubGVuZ3RoPyhvPSgzODQw
JmkpPj40LG89bz4+NHxvLGE9MjQwJmksYT1hPj40fGEsYz0xNSZpLGM9Yzw8NHxjKTo3PT09bi5s
ZW5ndGgmJihvPSgxNjcxMTY4MCZpKT4+MTYsYT0oNjUyODAmaSk+PjgsYz0yNTUmaSkpLHQobyxh
LGMpKX1mdW5jdGlvbiB5dChuLHQsZSl7dmFyIHIsdSxpPU1hdGgubWluKG4vPTI1NSx0Lz0yNTUs
ZS89MjU1KSxvPU1hdGgubWF4KG4sdCxlKSxhPW8taSxjPShvK2kpLzI7cmV0dXJuIGE/KHU9LjU+
Yz9hLyhvK2kpOmEvKDItby1pKSxyPW49PW8/KHQtZSkvYSsoZT50PzY6MCk6dD09bz8oZS1uKS9h
KzI6KG4tdCkvYSs0LHIqPTYwKToocj0wLzAsdT1jPjAmJjE+Yz8wOnIpLG5ldyBydChyLHUsYyl9
ZnVuY3Rpb24geHQobix0LGUpe249TXQobiksdD1NdCh0KSxlPU10KGUpO3ZhciByPWZ0KCguNDEy
NDU2NCpuKy4zNTc1NzYxKnQrLjE4MDQzNzUqZSkvamEpLHU9ZnQoKC4yMTI2NzI5Km4rLjcxNTE1
MjIqdCsuMDcyMTc1KmUpL0hhKSxpPWZ0KCguMDE5MzMzOSpuKy4xMTkxOTIqdCsuOTUwMzA0MSpl
KS9GYSk7cmV0dXJuIGF0KDExNip1LTE2LDUwMCooci11KSwyMDAqKHUtaSkpfWZ1bmN0aW9uIE10
KG4pe3JldHVybihuLz0yNTUpPD0uMDQwNDU/bi8xMi45MjpNYXRoLnBvdygobisuMDU1KS8xLjA1
NSwyLjQpfWZ1bmN0aW9uIF90KG4pe3ZhciB0PXBhcnNlRmxvYXQobik7cmV0dXJuIiUiPT09bi5j
aGFyQXQobi5sZW5ndGgtMSk/TWF0aC5yb3VuZCgyLjU1KnQpOnR9ZnVuY3Rpb24gYnQobil7cmV0
dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbigpe3JldHVybiBufX1mdW5jdGlvbiB3
dChuKXtyZXR1cm4gbn1mdW5jdGlvbiBTdChuKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3JldHVy
biAyPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGUmJihyPWUsZT1udWxs
KSxrdCh0LGUsbixyKX19ZnVuY3Rpb24ga3Qobix0LGUscil7ZnVuY3Rpb24gdSgpe3ZhciBuLHQ9
Yy5zdGF0dXM7aWYoIXQmJmMucmVzcG9uc2VUZXh0fHx0Pj0yMDAmJjMwMD50fHwzMDQ9PT10KXt0
cnl7bj1lLmNhbGwoaSxjKX1jYXRjaChyKXtyZXR1cm4gby5lcnJvci5jYWxsKGksciksdm9pZCAw
fW8ubG9hZC5jYWxsKGksbil9ZWxzZSBvLmVycm9yLmNhbGwoaSxjKX12YXIgaT17fSxvPVpvLmRp
c3BhdGNoKCJiZWZvcmVzZW5kIiwicHJvZ3Jlc3MiLCJsb2FkIiwiZXJyb3IiKSxhPXt9LGM9bmV3
IFhNTEh0dHBSZXF1ZXN0LHM9bnVsbDtyZXR1cm4hV28uWERvbWFpblJlcXVlc3R8fCJ3aXRoQ3Jl
ZGVudGlhbHMiaW4gY3x8IS9eKGh0dHAocyk/Oik/XC9cLy8udGVzdChuKXx8KGM9bmV3IFhEb21h
aW5SZXF1ZXN0KSwib25sb2FkImluIGM/Yy5vbmxvYWQ9Yy5vbmVycm9yPXU6Yy5vbnJlYWR5c3Rh
dGVjaGFuZ2U9ZnVuY3Rpb24oKXtjLnJlYWR5U3RhdGU+MyYmdSgpfSxjLm9ucHJvZ3Jlc3M9ZnVu
Y3Rpb24obil7dmFyIHQ9Wm8uZXZlbnQ7Wm8uZXZlbnQ9bjt0cnl7by5wcm9ncmVzcy5jYWxsKGks
Yyl9ZmluYWxseXtaby5ldmVudD10fX0saS5oZWFkZXI9ZnVuY3Rpb24obix0KXtyZXR1cm4gbj0o
bisiIikudG9Mb3dlckNhc2UoKSxhcmd1bWVudHMubGVuZ3RoPDI/YVtuXToobnVsbD09dD9kZWxl
dGUgYVtuXTphW25dPXQrIiIsaSl9LGkubWltZVR5cGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHQ9bnVsbD09bj9udWxsOm4rIiIsaSk6dH0saS5yZXNwb25zZVR5cGU9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bixpKTpzfSxpLnJlc3BvbnNlPWZ1
bmN0aW9uKG4pe3JldHVybiBlPW4saX0sWyJnZXQiLCJwb3N0Il0uZm9yRWFjaChmdW5jdGlvbihu
KXtpW25dPWZ1bmN0aW9uKCl7cmV0dXJuIGkuc2VuZC5hcHBseShpLFtuXS5jb25jYXQoWG8oYXJn
dW1lbnRzKSkpfX0pLGkuc2VuZD1mdW5jdGlvbihlLHIsdSl7aWYoMj09PWFyZ3VtZW50cy5sZW5n
dGgmJiJmdW5jdGlvbiI9PXR5cGVvZiByJiYodT1yLHI9bnVsbCksYy5vcGVuKGUsbiwhMCksbnVs
bD09dHx8ImFjY2VwdCJpbiBhfHwoYS5hY2NlcHQ9dCsiLCovKiIpLGMuc2V0UmVxdWVzdEhlYWRl
cilmb3IodmFyIGwgaW4gYSljLnNldFJlcXVlc3RIZWFkZXIobCxhW2xdKTtyZXR1cm4gbnVsbCE9
dCYmYy5vdmVycmlkZU1pbWVUeXBlJiZjLm92ZXJyaWRlTWltZVR5cGUodCksbnVsbCE9cyYmKGMu
cmVzcG9uc2VUeXBlPXMpLG51bGwhPXUmJmkub24oImVycm9yIix1KS5vbigibG9hZCIsZnVuY3Rp
b24obil7dShudWxsLG4pfSksby5iZWZvcmVzZW5kLmNhbGwoaSxjKSxjLnNlbmQobnVsbD09cj9u
dWxsOnIpLGl9LGkuYWJvcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYy5hYm9ydCgpLGl9LFpvLnJlYmlu
ZChpLG8sIm9uIiksbnVsbD09cj9pOmkuZ2V0KEV0KHIpKX1mdW5jdGlvbiBFdChuKXtyZXR1cm4g
MT09PW4ubGVuZ3RoP2Z1bmN0aW9uKHQsZSl7bihudWxsPT10P2U6bnVsbCl9Om59ZnVuY3Rpb24g
QXQoKXt2YXIgbj1DdCgpLHQ9TnQoKS1uO3Q+MjQ/KGlzRmluaXRlKHQpJiYoY2xlYXJUaW1lb3V0
KCRhKSwkYT1zZXRUaW1lb3V0KEF0LHQpKSxYYT0wKTooWGE9MSxXYShBdCkpfWZ1bmN0aW9uIEN0
KCl7dmFyIG49RGF0ZS5ub3coKTtmb3IoQmE9WmE7QmE7KW4+PUJhLnQmJihCYS5mPUJhLmMobi1C
YS50KSksQmE9QmEubjtyZXR1cm4gbn1mdW5jdGlvbiBOdCgpe2Zvcih2YXIgbix0PVphLGU9MS8w
O3Q7KXQuZj90PW4/bi5uPXQubjpaYT10Lm46KHQudDxlJiYoZT10LnQpLHQ9KG49dCkubik7cmV0
dXJuIFZhPW4sZX1mdW5jdGlvbiB6dChuLHQpe3JldHVybiB0LShuP01hdGguY2VpbChNYXRoLmxv
ZyhuKS9NYXRoLkxOMTApOjEpfWZ1bmN0aW9uIEx0KG4sdCl7dmFyIGU9TWF0aC5wb3coMTAsMyp1
YSg4LXQpKTtyZXR1cm57c2NhbGU6dD44P2Z1bmN0aW9uKG4pe3JldHVybiBuL2V9OmZ1bmN0aW9u
KG4pe3JldHVybiBuKmV9LHN5bWJvbDpufX1mdW5jdGlvbiBUdChuKXt2YXIgdD1uLmRlY2ltYWws
ZT1uLnRob3VzYW5kcyxyPW4uZ3JvdXBpbmcsdT1uLmN1cnJlbmN5LGk9cj9mdW5jdGlvbihuKXtm
b3IodmFyIHQ9bi5sZW5ndGgsdT1bXSxpPTAsbz1yWzBdO3Q+MCYmbz4wOyl1LnB1c2gobi5zdWJz
dHJpbmcodC09byx0K28pKSxvPXJbaT0oaSsxKSVyLmxlbmd0aF07cmV0dXJuIHUucmV2ZXJzZSgp
LmpvaW4oZSl9Ond0O3JldHVybiBmdW5jdGlvbihuKXt2YXIgZT1HYS5leGVjKG4pLHI9ZVsxXXx8
IiAiLG89ZVsyXXx8Ij4iLGE9ZVszXXx8IiIsYz1lWzRdfHwiIixzPWVbNV0sbD0rZVs2XSxmPWVb
N10saD1lWzhdLGc9ZVs5XSxwPTEsdj0iIixkPSIiLG09ITE7c3dpdGNoKGgmJihoPStoLnN1YnN0
cmluZygxKSksKHN8fCIwIj09PXImJiI9Ij09PW8pJiYocz1yPSIwIixvPSI9IixmJiYobC09TWF0
aC5mbG9vcigobC0xKS80KSkpLGcpe2Nhc2UibiI6Zj0hMCxnPSJnIjticmVhaztjYXNlIiUiOnA9
MTAwLGQ9IiUiLGc9ImYiO2JyZWFrO2Nhc2UicCI6cD0xMDAsZD0iJSIsZz0iciI7YnJlYWs7Y2Fz
ZSJiIjpjYXNlIm8iOmNhc2UieCI6Y2FzZSJYIjoiIyI9PT1jJiYodj0iMCIrZy50b0xvd2VyQ2Fz
ZSgpKTtjYXNlImMiOmNhc2UiZCI6bT0hMCxoPTA7YnJlYWs7Y2FzZSJzIjpwPS0xLGc9InIifSIk
Ij09PWMmJih2PXVbMF0sZD11WzFdKSwiciIhPWd8fGh8fChnPSJnIiksbnVsbCE9aCYmKCJnIj09
Zz9oPU1hdGgubWF4KDEsTWF0aC5taW4oMjEsaCkpOigiZSI9PWd8fCJmIj09ZykmJihoPU1hdGgu
bWF4KDAsTWF0aC5taW4oMjAsaCkpKSksZz1LYS5nZXQoZyl8fHF0O3ZhciB5PXMmJmY7cmV0dXJu
IGZ1bmN0aW9uKG4pe3ZhciBlPWQ7aWYobSYmbiUxKXJldHVybiIiO3ZhciB1PTA+bnx8MD09PW4m
JjA+MS9uPyhuPS1uLCItIik6YTtpZigwPnApe3ZhciBjPVpvLmZvcm1hdFByZWZpeChuLGgpO249
Yy5zY2FsZShuKSxlPWMuc3ltYm9sK2R9ZWxzZSBuKj1wO249ZyhuLGgpO3ZhciB4PW4ubGFzdElu
ZGV4T2YoIi4iKSxNPTA+eD9uOm4uc3Vic3RyaW5nKDAseCksXz0wPng/IiI6dCtuLnN1YnN0cmlu
Zyh4KzEpOyFzJiZmJiYoTT1pKE0pKTt2YXIgYj12Lmxlbmd0aCtNLmxlbmd0aCtfLmxlbmd0aCso
eT8wOnUubGVuZ3RoKSx3PWw+Yj9uZXcgQXJyYXkoYj1sLWIrMSkuam9pbihyKToiIjtyZXR1cm4g
eSYmKE09aSh3K00pKSx1Kz12LG49TStfLCgiPCI9PT1vP3Urbit3OiI+Ij09PW8/dyt1K246Il4i
PT09bz93LnN1YnN0cmluZygwLGI+Pj0xKSt1K24rdy5zdWJzdHJpbmcoYik6dSsoeT9uOncrbikp
K2V9fX1mdW5jdGlvbiBxdChuKXtyZXR1cm4gbisiIn1mdW5jdGlvbiBSdCgpe3RoaXMuXz1uZXcg
RGF0ZShhcmd1bWVudHMubGVuZ3RoPjE/RGF0ZS5VVEMuYXBwbHkodGhpcyxhcmd1bWVudHMpOmFy
Z3VtZW50c1swXSl9ZnVuY3Rpb24gRHQobix0LGUpe2Z1bmN0aW9uIHIodCl7dmFyIGU9bih0KSxy
PWkoZSwxKTtyZXR1cm4gci10PnQtZT9lOnJ9ZnVuY3Rpb24gdShlKXtyZXR1cm4gdChlPW4obmV3
IG5jKGUtMSkpLDEpLGV9ZnVuY3Rpb24gaShuLGUpe3JldHVybiB0KG49bmV3IG5jKCtuKSxlKSxu
fWZ1bmN0aW9uIG8obixyLGkpe3ZhciBvPXUobiksYT1bXTtpZihpPjEpZm9yKDtyPm87KWUobykl
aXx8YS5wdXNoKG5ldyBEYXRlKCtvKSksdChvLDEpO2Vsc2UgZm9yKDtyPm87KWEucHVzaChuZXcg
RGF0ZSgrbykpLHQobywxKTtyZXR1cm4gYX1mdW5jdGlvbiBhKG4sdCxlKXt0cnl7bmM9UnQ7dmFy
IHI9bmV3IFJ0O3JldHVybiByLl89bixvKHIsdCxlKX1maW5hbGx5e25jPURhdGV9fW4uZmxvb3I9
bixuLnJvdW5kPXIsbi5jZWlsPXUsbi5vZmZzZXQ9aSxuLnJhbmdlPW87dmFyIGM9bi51dGM9UHQo
bik7cmV0dXJuIGMuZmxvb3I9YyxjLnJvdW5kPVB0KHIpLGMuY2VpbD1QdCh1KSxjLm9mZnNldD1Q
dChpKSxjLnJhbmdlPWEsbn1mdW5jdGlvbiBQdChuKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt0cnl7
bmM9UnQ7dmFyIHI9bmV3IFJ0O3JldHVybiByLl89dCxuKHIsZSkuX31maW5hbGx5e25jPURhdGV9
fX1mdW5jdGlvbiBVdChuKXtmdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIHQodCl7Zm9yKHZhciBlLHUs
aSxvPVtdLGE9LTEsYz0wOysrYTxyOykzNz09PW4uY2hhckNvZGVBdChhKSYmKG8ucHVzaChuLnN1
YnN0cmluZyhjLGEpKSxudWxsIT0odT1lY1tlPW4uY2hhckF0KCsrYSldKSYmKGU9bi5jaGFyQXQo
KythKSksKGk9Q1tlXSkmJihlPWkodCxudWxsPT11PyJlIj09PWU/IiAiOiIwIjp1KSksby5wdXNo
KGUpLGM9YSsxKTtyZXR1cm4gby5wdXNoKG4uc3Vic3RyaW5nKGMsYSkpLG8uam9pbigiIil9dmFy
IHI9bi5sZW5ndGg7cmV0dXJuIHQucGFyc2U9ZnVuY3Rpb24odCl7dmFyIHI9e3k6MTkwMCxtOjAs
ZDoxLEg6MCxNOjAsUzowLEw6MCxaOm51bGx9LHU9ZShyLG4sdCwwKTtpZih1IT10Lmxlbmd0aCly
ZXR1cm4gbnVsbDsicCJpbiByJiYoci5IPXIuSCUxMisxMipyLnApO3ZhciBpPW51bGwhPXIuWiYm
bmMhPT1SdCxvPW5ldyhpP1J0Om5jKTtyZXR1cm4iaiJpbiByP28uc2V0RnVsbFllYXIoci55LDAs
ci5qKToidyJpbiByJiYoIlciaW4gcnx8IlUiaW4gcik/KG8uc2V0RnVsbFllYXIoci55LDAsMSks
by5zZXRGdWxsWWVhcihyLnksMCwiVyJpbiByPyhyLncrNiklNys3KnIuVy0oby5nZXREYXkoKSs1
KSU3OnIudys3KnIuVS0oby5nZXREYXkoKSs2KSU3KSk6by5zZXRGdWxsWWVhcihyLnksci5tLHIu
ZCksby5zZXRIb3VycyhyLkgrTWF0aC5mbG9vcihyLlovMTAwKSxyLk0rci5aJTEwMCxyLlMsci5M
KSxpP28uXzpvfSx0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIG59LHR9ZnVuY3Rpb24gZShu
LHQsZSxyKXtmb3IodmFyIHUsaSxvLGE9MCxjPXQubGVuZ3RoLHM9ZS5sZW5ndGg7Yz5hOyl7aWYo
cj49cylyZXR1cm4tMTtpZih1PXQuY2hhckNvZGVBdChhKyspLDM3PT09dSl7aWYobz10LmNoYXJB
dChhKyspLGk9TltvIGluIGVjP3QuY2hhckF0KGErKyk6b10sIWl8fChyPWkobixlLHIpKTwwKXJl
dHVybi0xfWVsc2UgaWYodSE9ZS5jaGFyQ29kZUF0KHIrKykpcmV0dXJuLTF9cmV0dXJuIHJ9ZnVu
Y3Rpb24gcihuLHQsZSl7Yi5sYXN0SW5kZXg9MDt2YXIgcj1iLmV4ZWModC5zdWJzdHJpbmcoZSkp
O3JldHVybiByPyhuLnc9dy5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTot
MX1mdW5jdGlvbiB1KG4sdCxlKXtNLmxhc3RJbmRleD0wO3ZhciByPU0uZXhlYyh0LnN1YnN0cmlu
ZyhlKSk7cmV0dXJuIHI/KG4udz1fLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5sZW5n
dGgpOi0xfWZ1bmN0aW9uIGkobix0LGUpe0UubGFzdEluZGV4PTA7dmFyIHI9RS5leGVjKHQuc3Vi
c3RyaW5nKGUpKTtyZXR1cm4gcj8obi5tPUEuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksZStyWzBd
Lmxlbmd0aCk6LTF9ZnVuY3Rpb24gbyhuLHQsZSl7Uy5sYXN0SW5kZXg9MDt2YXIgcj1TLmV4ZWMo
dC5zdWJzdHJpbmcoZSkpO3JldHVybiByPyhuLm09ay5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxl
K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBhKG4sdCxyKXtyZXR1cm4gZShuLEMuYy50b1N0cmlu
ZygpLHQscil9ZnVuY3Rpb24gYyhuLHQscil7cmV0dXJuIGUobixDLngudG9TdHJpbmcoKSx0LHIp
fWZ1bmN0aW9uIHMobix0LHIpe3JldHVybiBlKG4sQy5YLnRvU3RyaW5nKCksdCxyKX1mdW5jdGlv
biBsKG4sdCxlKXt2YXIgcj14LmdldCh0LnN1YnN0cmluZyhlLGUrPTIpLnRvTG93ZXJDYXNlKCkp
O3JldHVybiBudWxsPT1yPy0xOihuLnA9cixlKX12YXIgZj1uLmRhdGVUaW1lLGg9bi5kYXRlLGc9
bi50aW1lLHA9bi5wZXJpb2RzLHY9bi5kYXlzLGQ9bi5zaG9ydERheXMsbT1uLm1vbnRocyx5PW4u
c2hvcnRNb250aHM7dC51dGM9ZnVuY3Rpb24obil7ZnVuY3Rpb24gZShuKXt0cnl7bmM9UnQ7dmFy
IHQ9bmV3IG5jO3JldHVybiB0Ll89bixyKHQpfWZpbmFsbHl7bmM9RGF0ZX19dmFyIHI9dChuKTty
ZXR1cm4gZS5wYXJzZT1mdW5jdGlvbihuKXt0cnl7bmM9UnQ7dmFyIHQ9ci5wYXJzZShuKTtyZXR1
cm4gdCYmdC5ffWZpbmFsbHl7bmM9RGF0ZX19LGUudG9TdHJpbmc9ci50b1N0cmluZyxlfSx0Lm11
bHRpPXQudXRjLm11bHRpPXJlO3ZhciB4PVpvLm1hcCgpLE09SHQodiksXz1GdCh2KSxiPUh0KGQp
LHc9RnQoZCksUz1IdChtKSxrPUZ0KG0pLEU9SHQoeSksQT1GdCh5KTtwLmZvckVhY2goZnVuY3Rp
b24obix0KXt4LnNldChuLnRvTG93ZXJDYXNlKCksdCl9KTt2YXIgQz17YTpmdW5jdGlvbihuKXty
ZXR1cm4gZFtuLmdldERheSgpXX0sQTpmdW5jdGlvbihuKXtyZXR1cm4gdltuLmdldERheSgpXX0s
YjpmdW5jdGlvbihuKXtyZXR1cm4geVtuLmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uKG4pe3JldHVy
biBtW24uZ2V0TW9udGgoKV19LGM6dChmKSxkOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0
RGF0ZSgpLHQsMil9LGU6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobi5nZXREYXRlKCksdCwyKX0s
SDpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldEhvdXJzKCksdCwyKX0sSTpmdW5jdGlvbihu
LHQpe3JldHVybiBqdChuLmdldEhvdXJzKCklMTJ8fDEyLHQsMil9LGo6ZnVuY3Rpb24obix0KXty
ZXR1cm4ganQoMStRYS5kYXlPZlllYXIobiksdCwzKX0sTDpmdW5jdGlvbihuLHQpe3JldHVybiBq
dChuLmdldE1pbGxpc2Vjb25kcygpLHQsMyl9LG06ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobi5n
ZXRNb250aCgpKzEsdCwyKX0sTTpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldE1pbnV0ZXMo
KSx0LDIpfSxwOmZ1bmN0aW9uKG4pe3JldHVybiBwWysobi5nZXRIb3VycygpPj0xMildfSxTOmZ1
bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0U2Vjb25kcygpLHQsMil9LFU6ZnVuY3Rpb24obix0
KXtyZXR1cm4ganQoUWEuc3VuZGF5T2ZZZWFyKG4pLHQsMil9LHc6ZnVuY3Rpb24obil7cmV0dXJu
IG4uZ2V0RGF5KCl9LFc6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQoUWEubW9uZGF5T2ZZZWFyKG4p
LHQsMil9LHg6dChoKSxYOnQoZykseTpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldEZ1bGxZ
ZWFyKCklMTAwLHQsMil9LFk6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobi5nZXRGdWxsWWVhcigp
JTFlNCx0LDQpfSxaOnRlLCIlIjpmdW5jdGlvbigpe3JldHVybiIlIn19LE49e2E6cixBOnUsYjpp
LEI6byxjOmEsZDpXdCxlOld0LEg6R3QsSTpHdCxqOkp0LEw6bmUsbTpCdCxNOkt0LHA6bCxTOlF0
LFU6WXQsdzpPdCxXOkl0LHg6YyxYOnMseTpWdCxZOlp0LFo6WHQsIiUiOmVlfTtyZXR1cm4gdH1m
dW5jdGlvbiBqdChuLHQsZSl7dmFyIHI9MD5uPyItIjoiIix1PShyPy1uOm4pKyIiLGk9dS5sZW5n
dGg7cmV0dXJuIHIrKGU+aT9uZXcgQXJyYXkoZS1pKzEpLmpvaW4odCkrdTp1KX1mdW5jdGlvbiBI
dChuKXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrbi5tYXAoWm8ucmVxdW90ZSkuam9pbigifCIp
KyIpIiwiaSIpfWZ1bmN0aW9uIEZ0KG4pe2Zvcih2YXIgdD1uZXcgbyxlPS0xLHI9bi5sZW5ndGg7
KytlPHI7KXQuc2V0KG5bZV0udG9Mb3dlckNhc2UoKSxlKTtyZXR1cm4gdH1mdW5jdGlvbiBPdChu
LHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUrMSkpO3Jl
dHVybiByPyhuLnc9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWXQobix0LGUpe3Jj
Lmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSkpO3JldHVybiByPyhuLlU9
K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSXQobix0LGUpe3JjLmxhc3RJbmRleD0w
O3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSkpO3JldHVybiByPyhuLlc9K3JbMF0sZStyWzBd
Lmxlbmd0aCk6LTF9ZnVuY3Rpb24gWnQobix0LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4
ZWModC5zdWJzdHJpbmcoZSxlKzQpKTtyZXR1cm4gcj8obi55PStyWzBdLGUrclswXS5sZW5ndGgp
Oi0xfWZ1bmN0aW9uIFZ0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vi
c3RyaW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4ueT0kdCgrclswXSksZStyWzBdLmxlbmd0aCk6LTF9
ZnVuY3Rpb24gWHQobix0LGUpe3JldHVybi9eWystXVxkezR9JC8udGVzdCh0PXQuc3Vic3RyaW5n
KGUsZSs1KSk/KG4uWj0tdCxlKzUpOi0xfWZ1bmN0aW9uICR0KG4pe3JldHVybiBuKyhuPjY4PzE5
MDA6MmUzKX1mdW5jdGlvbiBCdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0
LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhuLm09clswXS0xLGUrclswXS5sZW5ndGgpOi0x
fWZ1bmN0aW9uIFd0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3Ry
aW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4uZD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlv
biBKdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUr
MykpO3JldHVybiByPyhuLmo9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gR3Qobix0
LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzIpKTtyZXR1
cm4gcj8obi5IPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEt0KG4sdCxlKXtyYy5s
YXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4u
TT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBRdChuLHQsZSl7cmMubGFzdEluZGV4
PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhuLlM9K3JbMF0s
ZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbmUobix0LGUpe3JjLmxhc3RJbmRleD0wO3ZhciBy
PXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzMpKTtyZXR1cm4gcj8obi5MPStyWzBdLGUrclswXS5s
ZW5ndGgpOi0xfWZ1bmN0aW9uIHRlKG4pe3ZhciB0PW4uZ2V0VGltZXpvbmVPZmZzZXQoKSxlPXQ+
MD8iLSI6IisiLHI9fn4odWEodCkvNjApLHU9dWEodCklNjA7cmV0dXJuIGUranQociwiMCIsMikr
anQodSwiMCIsMil9ZnVuY3Rpb24gZWUobix0LGUpe3VjLmxhc3RJbmRleD0wO3ZhciByPXVjLmV4
ZWModC5zdWJzdHJpbmcoZSxlKzEpKTtyZXR1cm4gcj9lK3JbMF0ubGVuZ3RoOi0xfWZ1bmN0aW9u
IHJlKG4pe2Zvcih2YXIgdD1uLmxlbmd0aCxlPS0xOysrZTx0OyluW2VdWzBdPXRoaXMobltlXVsw
XSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9bltlXTshclsxXSh0KTspcj1uWysr
ZV07cmV0dXJuIHJbMF0odCl9fWZ1bmN0aW9uIHVlKCl7fWZ1bmN0aW9uIGllKG4sdCxlKXt2YXIg
cj1lLnM9bit0LHU9ci1uLGk9ci11O2UudD1uLWkrKHQtdSl9ZnVuY3Rpb24gb2Uobix0KXtuJiZj
Yy5oYXNPd25Qcm9wZXJ0eShuLnR5cGUpJiZjY1tuLnR5cGVdKG4sdCl9ZnVuY3Rpb24gYWUobix0
LGUpe3ZhciByLHU9LTEsaT1uLmxlbmd0aC1lO2Zvcih0LmxpbmVTdGFydCgpOysrdTxpOylyPW5b
dV0sdC5wb2ludChyWzBdLHJbMV0sclsyXSk7dC5saW5lRW5kKCl9ZnVuY3Rpb24gY2Uobix0KXt2
YXIgZT0tMSxyPW4ubGVuZ3RoO2Zvcih0LnBvbHlnb25TdGFydCgpOysrZTxyOylhZShuW2VdLHQs
MSk7dC5wb2x5Z29uRW5kKCl9ZnVuY3Rpb24gc2UoKXtmdW5jdGlvbiBuKG4sdCl7bio9QWEsdD10
KkFhLzIrYmEvNDt2YXIgZT1uLXIsbz1lPj0wPzE6LTEsYT1vKmUsYz1NYXRoLmNvcyh0KSxzPU1h
dGguc2luKHQpLGw9aSpzLGY9dSpjK2wqTWF0aC5jb3MoYSksaD1sKm8qTWF0aC5zaW4oYSk7bGMu
YWRkKE1hdGguYXRhbjIoaCxmKSkscj1uLHU9YyxpPXN9dmFyIHQsZSxyLHUsaTtmYy5wb2ludD1m
dW5jdGlvbihvLGEpe2ZjLnBvaW50PW4scj0odD1vKSpBYSx1PU1hdGguY29zKGE9KGU9YSkqQWEv
MitiYS80KSxpPU1hdGguc2luKGEpfSxmYy5saW5lRW5kPWZ1bmN0aW9uKCl7bih0LGUpfX1mdW5j
dGlvbiBsZShuKXt2YXIgdD1uWzBdLGU9blsxXSxyPU1hdGguY29zKGUpO3JldHVybltyKk1hdGgu
Y29zKHQpLHIqTWF0aC5zaW4odCksTWF0aC5zaW4oZSldfWZ1bmN0aW9uIGZlKG4sdCl7cmV0dXJu
IG5bMF0qdFswXStuWzFdKnRbMV0rblsyXSp0WzJdfWZ1bmN0aW9uIGhlKG4sdCl7cmV0dXJuW25b
MV0qdFsyXS1uWzJdKnRbMV0sblsyXSp0WzBdLW5bMF0qdFsyXSxuWzBdKnRbMV0tblsxXSp0WzBd
XX1mdW5jdGlvbiBnZShuLHQpe25bMF0rPXRbMF0sblsxXSs9dFsxXSxuWzJdKz10WzJdfWZ1bmN0
aW9uIHBlKG4sdCl7cmV0dXJuW25bMF0qdCxuWzFdKnQsblsyXSp0XX1mdW5jdGlvbiB2ZShuKXt2
YXIgdD1NYXRoLnNxcnQoblswXSpuWzBdK25bMV0qblsxXStuWzJdKm5bMl0pO25bMF0vPXQsblsx
XS89dCxuWzJdLz10fWZ1bmN0aW9uIGRlKG4pe3JldHVybltNYXRoLmF0YW4yKG5bMV0sblswXSks
RyhuWzJdKV19ZnVuY3Rpb24gbWUobix0KXtyZXR1cm4gdWEoblswXS10WzBdKTxrYSYmdWEoblsx
XS10WzFdKTxrYX1mdW5jdGlvbiB5ZShuLHQpe24qPUFhO3ZhciBlPU1hdGguY29zKHQqPUFhKTt4
ZShlKk1hdGguY29zKG4pLGUqTWF0aC5zaW4obiksTWF0aC5zaW4odCkpfWZ1bmN0aW9uIHhlKG4s
dCxlKXsrK2hjLHBjKz0obi1wYykvaGMsdmMrPSh0LXZjKS9oYyxkYys9KGUtZGMpL2hjfWZ1bmN0
aW9uIE1lKCl7ZnVuY3Rpb24gbihuLHUpe24qPUFhO3ZhciBpPU1hdGguY29zKHUqPUFhKSxvPWkq
TWF0aC5jb3MobiksYT1pKk1hdGguc2luKG4pLGM9TWF0aC5zaW4odSkscz1NYXRoLmF0YW4yKE1h
dGguc3FydCgocz1lKmMtciphKSpzKyhzPXIqby10KmMpKnMrKHM9dCphLWUqbykqcyksdCpvK2Uq
YStyKmMpO2djKz1zLG1jKz1zKih0Kyh0PW8pKSx5Yys9cyooZSsoZT1hKSkseGMrPXMqKHIrKHI9
YykpLHhlKHQsZSxyKX12YXIgdCxlLHI7d2MucG9pbnQ9ZnVuY3Rpb24odSxpKXt1Kj1BYTt2YXIg
bz1NYXRoLmNvcyhpKj1BYSk7dD1vKk1hdGguY29zKHUpLGU9bypNYXRoLnNpbih1KSxyPU1hdGgu
c2luKGkpLHdjLnBvaW50PW4seGUodCxlLHIpfX1mdW5jdGlvbiBfZSgpe3djLnBvaW50PXllfWZ1
bmN0aW9uIGJlKCl7ZnVuY3Rpb24gbihuLHQpe24qPUFhO3ZhciBlPU1hdGguY29zKHQqPUFhKSxv
PWUqTWF0aC5jb3MobiksYT1lKk1hdGguc2luKG4pLGM9TWF0aC5zaW4odCkscz11KmMtaSphLGw9
aSpvLXIqYyxmPXIqYS11Km8saD1NYXRoLnNxcnQocypzK2wqbCtmKmYpLGc9cipvK3UqYStpKmMs
cD1oJiYtSihnKS9oLHY9TWF0aC5hdGFuMihoLGcpO01jKz1wKnMsX2MrPXAqbCxiYys9cCpmLGdj
Kz12LG1jKz12KihyKyhyPW8pKSx5Yys9dioodSsodT1hKSkseGMrPXYqKGkrKGk9YykpLHhlKHIs
dSxpKX12YXIgdCxlLHIsdSxpO3djLnBvaW50PWZ1bmN0aW9uKG8sYSl7dD1vLGU9YSx3Yy5wb2lu
dD1uLG8qPUFhO3ZhciBjPU1hdGguY29zKGEqPUFhKTtyPWMqTWF0aC5jb3MobyksdT1jKk1hdGgu
c2luKG8pLGk9TWF0aC5zaW4oYSkseGUocix1LGkpfSx3Yy5saW5lRW5kPWZ1bmN0aW9uKCl7bih0
LGUpLHdjLmxpbmVFbmQ9X2Usd2MucG9pbnQ9eWV9fWZ1bmN0aW9uIHdlKCl7cmV0dXJuITB9ZnVu
Y3Rpb24gU2Uobix0LGUscix1KXt2YXIgaT1bXSxvPVtdO2lmKG4uZm9yRWFjaChmdW5jdGlvbihu
KXtpZighKCh0PW4ubGVuZ3RoLTEpPD0wKSl7dmFyIHQsZT1uWzBdLHI9blt0XTtpZihtZShlLHIp
KXt1LmxpbmVTdGFydCgpO2Zvcih2YXIgYT0wO3Q+YTsrK2EpdS5wb2ludCgoZT1uW2FdKVswXSxl
WzFdKTtyZXR1cm4gdS5saW5lRW5kKCksdm9pZCAwfXZhciBjPW5ldyBFZShlLG4sbnVsbCwhMCks
cz1uZXcgRWUoZSxudWxsLGMsITEpO2Mubz1zLGkucHVzaChjKSxvLnB1c2gocyksYz1uZXcgRWUo
cixuLG51bGwsITEpLHM9bmV3IEVlKHIsbnVsbCxjLCEwKSxjLm89cyxpLnB1c2goYyksby5wdXNo
KHMpfX0pLG8uc29ydCh0KSxrZShpKSxrZShvKSxpLmxlbmd0aCl7Zm9yKHZhciBhPTAsYz1lLHM9
by5sZW5ndGg7cz5hOysrYSlvW2FdLmU9Yz0hYztmb3IodmFyIGwsZixoPWlbMF07Oyl7Zm9yKHZh
ciBnPWgscD0hMDtnLnY7KWlmKChnPWcubik9PT1oKXJldHVybjtsPWcueix1LmxpbmVTdGFydCgp
O2Rve2lmKGcudj1nLm8udj0hMCxnLmUpe2lmKHApZm9yKHZhciBhPTAscz1sLmxlbmd0aDtzPmE7
KythKXUucG9pbnQoKGY9bFthXSlbMF0sZlsxXSk7ZWxzZSByKGcueCxnLm4ueCwxLHUpO2c9Zy5u
fWVsc2V7aWYocCl7bD1nLnAuejtmb3IodmFyIGE9bC5sZW5ndGgtMTthPj0wOy0tYSl1LnBvaW50
KChmPWxbYV0pWzBdLGZbMV0pfWVsc2UgcihnLngsZy5wLngsLTEsdSk7Zz1nLnB9Zz1nLm8sbD1n
LnoscD0hcH13aGlsZSghZy52KTt1LmxpbmVFbmQoKX19fWZ1bmN0aW9uIGtlKG4pe2lmKHQ9bi5s
ZW5ndGgpe2Zvcih2YXIgdCxlLHI9MCx1PW5bMF07KytyPHQ7KXUubj1lPW5bcl0sZS5wPXUsdT1l
O3Uubj1lPW5bMF0sZS5wPXV9fWZ1bmN0aW9uIEVlKG4sdCxlLHIpe3RoaXMueD1uLHRoaXMuej10
LHRoaXMubz1lLHRoaXMuZT1yLHRoaXMudj0hMSx0aGlzLm49dGhpcy5wPW51bGx9ZnVuY3Rpb24g
QWUobix0LGUscil7cmV0dXJuIGZ1bmN0aW9uKHUsaSl7ZnVuY3Rpb24gbyh0LGUpe3ZhciByPXUo
dCxlKTtuKHQ9clswXSxlPXJbMV0pJiZpLnBvaW50KHQsZSl9ZnVuY3Rpb24gYShuLHQpe3ZhciBl
PXUobix0KTtkLnBvaW50KGVbMF0sZVsxXSl9ZnVuY3Rpb24gYygpe3kucG9pbnQ9YSxkLmxpbmVT
dGFydCgpfWZ1bmN0aW9uIHMoKXt5LnBvaW50PW8sZC5saW5lRW5kKCl9ZnVuY3Rpb24gbChuLHQp
e3YucHVzaChbbix0XSk7dmFyIGU9dShuLHQpO00ucG9pbnQoZVswXSxlWzFdKX1mdW5jdGlvbiBm
KCl7TS5saW5lU3RhcnQoKSx2PVtdfWZ1bmN0aW9uIGgoKXtsKHZbMF1bMF0sdlswXVsxXSksTS5s
aW5lRW5kKCk7dmFyIG4sdD1NLmNsZWFuKCksZT14LmJ1ZmZlcigpLHI9ZS5sZW5ndGg7aWYodi5w
b3AoKSxwLnB1c2godiksdj1udWxsLHIpaWYoMSZ0KXtuPWVbMF07dmFyIHUscj1uLmxlbmd0aC0x
LG89LTE7aWYocj4wKXtmb3IoX3x8KGkucG9seWdvblN0YXJ0KCksXz0hMCksaS5saW5lU3RhcnQo
KTsrK288cjspaS5wb2ludCgodT1uW29dKVswXSx1WzFdKTtpLmxpbmVFbmQoKX19ZWxzZSByPjEm
JjImdCYmZS5wdXNoKGUucG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpLGcucHVzaChlLmZpbHRlcihD
ZSkpfXZhciBnLHAsdixkPXQoaSksbT11LmludmVydChyWzBdLHJbMV0pLHk9e3BvaW50Om8sbGlu
ZVN0YXJ0OmMsbGluZUVuZDpzLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3kucG9pbnQ9bCx5Lmxp
bmVTdGFydD1mLHkubGluZUVuZD1oLGc9W10scD1bXX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3ku
cG9pbnQ9byx5LmxpbmVTdGFydD1jLHkubGluZUVuZD1zLGc9Wm8ubWVyZ2UoZyk7dmFyIG49TGUo
bSxwKTtnLmxlbmd0aD8oX3x8KGkucG9seWdvblN0YXJ0KCksXz0hMCksU2UoZyx6ZSxuLGUsaSkp
Om4mJihffHwoaS5wb2x5Z29uU3RhcnQoKSxfPSEwKSxpLmxpbmVTdGFydCgpLGUobnVsbCxudWxs
LDEsaSksaS5saW5lRW5kKCkpLF8mJihpLnBvbHlnb25FbmQoKSxfPSExKSxnPXA9bnVsbH0sc3Bo
ZXJlOmZ1bmN0aW9uKCl7aS5wb2x5Z29uU3RhcnQoKSxpLmxpbmVTdGFydCgpLGUobnVsbCxudWxs
LDEsaSksaS5saW5lRW5kKCksaS5wb2x5Z29uRW5kKCl9fSx4PU5lKCksTT10KHgpLF89ITE7cmV0
dXJuIHl9fWZ1bmN0aW9uIENlKG4pe3JldHVybiBuLmxlbmd0aD4xfWZ1bmN0aW9uIE5lKCl7dmFy
IG4sdD1bXTtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5wdXNoKG49W10pfSxwb2ludDpm
dW5jdGlvbih0LGUpe24ucHVzaChbdCxlXSl9LGxpbmVFbmQ6dixidWZmZXI6ZnVuY3Rpb24oKXt2
YXIgZT10O3JldHVybiB0PVtdLG49bnVsbCxlfSxyZWpvaW46ZnVuY3Rpb24oKXt0Lmxlbmd0aD4x
JiZ0LnB1c2godC5wb3AoKS5jb25jYXQodC5zaGlmdCgpKSl9fX1mdW5jdGlvbiB6ZShuLHQpe3Jl
dHVybigobj1uLngpWzBdPDA/blsxXS1TYS1rYTpTYS1uWzFdKS0oKHQ9dC54KVswXTwwP3RbMV0t
U2Eta2E6U2EtdFsxXSl9ZnVuY3Rpb24gTGUobix0KXt2YXIgZT1uWzBdLHI9blsxXSx1PVtNYXRo
LnNpbihlKSwtTWF0aC5jb3MoZSksMF0saT0wLG89MDtsYy5yZXNldCgpO2Zvcih2YXIgYT0wLGM9
dC5sZW5ndGg7Yz5hOysrYSl7dmFyIHM9dFthXSxsPXMubGVuZ3RoO2lmKGwpZm9yKHZhciBmPXNb
MF0saD1mWzBdLGc9ZlsxXS8yK2JhLzQscD1NYXRoLnNpbihnKSx2PU1hdGguY29zKGcpLGQ9MTs7
KXtkPT09bCYmKGQ9MCksbj1zW2RdO3ZhciBtPW5bMF0seT1uWzFdLzIrYmEvNCx4PU1hdGguc2lu
KHkpLE09TWF0aC5jb3MoeSksXz1tLWgsYj1fPj0wPzE6LTEsdz1iKl8sUz13PmJhLGs9cCp4O2lm
KGxjLmFkZChNYXRoLmF0YW4yKGsqYipNYXRoLnNpbih3KSx2Kk0raypNYXRoLmNvcyh3KSkpLGkr
PVM/XytiKndhOl8sU15oPj1lXm0+PWUpe3ZhciBFPWhlKGxlKGYpLGxlKG4pKTt2ZShFKTt2YXIg
QT1oZSh1LEUpO3ZlKEEpO3ZhciBDPShTXl8+PTA/LTE6MSkqRyhBWzJdKTsocj5DfHxyPT09QyYm
KEVbMF18fEVbMV0pKSYmKG8rPVNeXz49MD8xOi0xKX1pZighZCsrKWJyZWFrO2g9bSxwPXgsdj1N
LGY9bn19cmV0dXJuKC1rYT5pfHxrYT5pJiYwPmxjKV4xJm99ZnVuY3Rpb24gVGUobil7dmFyIHQs
ZT0wLzAscj0wLzAsdT0wLzA7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe24ubGluZVN0YXJ0
KCksdD0xfSxwb2ludDpmdW5jdGlvbihpLG8pe3ZhciBhPWk+MD9iYTotYmEsYz11YShpLWUpO3Vh
KGMtYmEpPGthPyhuLnBvaW50KGUscj0ocitvKS8yPjA/U2E6LVNhKSxuLnBvaW50KHUsciksbi5s
aW5lRW5kKCksbi5saW5lU3RhcnQoKSxuLnBvaW50KGEsciksbi5wb2ludChpLHIpLHQ9MCk6dSE9
PWEmJmM+PWJhJiYodWEoZS11KTxrYSYmKGUtPXUqa2EpLHVhKGktYSk8a2EmJihpLT1hKmthKSxy
PXFlKGUscixpLG8pLG4ucG9pbnQodSxyKSxuLmxpbmVFbmQoKSxuLmxpbmVTdGFydCgpLG4ucG9p
bnQoYSxyKSx0PTApLG4ucG9pbnQoZT1pLHI9byksdT1hfSxsaW5lRW5kOmZ1bmN0aW9uKCl7bi5s
aW5lRW5kKCksZT1yPTAvMH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gMi10fX19ZnVuY3Rpb24g
cWUobix0LGUscil7dmFyIHUsaSxvPU1hdGguc2luKG4tZSk7cmV0dXJuIHVhKG8pPmthP01hdGgu
YXRhbigoTWF0aC5zaW4odCkqKGk9TWF0aC5jb3MocikpKk1hdGguc2luKGUpLU1hdGguc2luKHIp
Kih1PU1hdGguY29zKHQpKSpNYXRoLnNpbihuKSkvKHUqaSpvKSk6KHQrcikvMn1mdW5jdGlvbiBS
ZShuLHQsZSxyKXt2YXIgdTtpZihudWxsPT1uKXU9ZSpTYSxyLnBvaW50KC1iYSx1KSxyLnBvaW50
KDAsdSksci5wb2ludChiYSx1KSxyLnBvaW50KGJhLDApLHIucG9pbnQoYmEsLXUpLHIucG9pbnQo
MCwtdSksci5wb2ludCgtYmEsLXUpLHIucG9pbnQoLWJhLDApLHIucG9pbnQoLWJhLHUpO2Vsc2Ug
aWYodWEoblswXS10WzBdKT5rYSl7dmFyIGk9blswXTx0WzBdP2JhOi1iYTt1PWUqaS8yLHIucG9p
bnQoLWksdSksci5wb2ludCgwLHUpLHIucG9pbnQoaSx1KX1lbHNlIHIucG9pbnQodFswXSx0WzFd
KX1mdW5jdGlvbiBEZShuKXtmdW5jdGlvbiB0KG4sdCl7cmV0dXJuIE1hdGguY29zKG4pKk1hdGgu
Y29zKHQpPml9ZnVuY3Rpb24gZShuKXt2YXIgZSxpLGMscyxsO3JldHVybntsaW5lU3RhcnQ6ZnVu
Y3Rpb24oKXtzPWM9ITEsbD0xfSxwb2ludDpmdW5jdGlvbihmLGgpe3ZhciBnLHA9W2YsaF0sdj10
KGYsaCksZD1vP3Y/MDp1KGYsaCk6dj91KGYrKDA+Zj9iYTotYmEpLGgpOjA7aWYoIWUmJihzPWM9
dikmJm4ubGluZVN0YXJ0KCksdiE9PWMmJihnPXIoZSxwKSwobWUoZSxnKXx8bWUocCxnKSkmJihw
WzBdKz1rYSxwWzFdKz1rYSx2PXQocFswXSxwWzFdKSkpLHYhPT1jKWw9MCx2PyhuLmxpbmVTdGFy
dCgpLGc9cihwLGUpLG4ucG9pbnQoZ1swXSxnWzFdKSk6KGc9cihlLHApLG4ucG9pbnQoZ1swXSxn
WzFdKSxuLmxpbmVFbmQoKSksZT1nO2Vsc2UgaWYoYSYmZSYmb152KXt2YXIgbTtkJml8fCEobT1y
KHAsZSwhMCkpfHwobD0wLG8/KG4ubGluZVN0YXJ0KCksbi5wb2ludChtWzBdWzBdLG1bMF1bMV0p
LG4ucG9pbnQobVsxXVswXSxtWzFdWzFdKSxuLmxpbmVFbmQoKSk6KG4ucG9pbnQobVsxXVswXSxt
WzFdWzFdKSxuLmxpbmVFbmQoKSxuLmxpbmVTdGFydCgpLG4ucG9pbnQobVswXVswXSxtWzBdWzFd
KSkpfSF2fHxlJiZtZShlLHApfHxuLnBvaW50KHBbMF0scFsxXSksZT1wLGM9dixpPWR9LGxpbmVF
bmQ6ZnVuY3Rpb24oKXtjJiZuLmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0
dXJuIGx8KHMmJmMpPDwxfX19ZnVuY3Rpb24gcihuLHQsZSl7dmFyIHI9bGUobiksdT1sZSh0KSxv
PVsxLDAsMF0sYT1oZShyLHUpLGM9ZmUoYSxhKSxzPWFbMF0sbD1jLXMqcztpZighbClyZXR1cm4h
ZSYmbjt2YXIgZj1pKmMvbCxoPS1pKnMvbCxnPWhlKG8sYSkscD1wZShvLGYpLHY9cGUoYSxoKTtn
ZShwLHYpO3ZhciBkPWcsbT1mZShwLGQpLHk9ZmUoZCxkKSx4PW0qbS15KihmZShwLHApLTEpO2lm
KCEoMD54KSl7dmFyIE09TWF0aC5zcXJ0KHgpLF89cGUoZCwoLW0tTSkveSk7aWYoZ2UoXyxwKSxf
PWRlKF8pLCFlKXJldHVybiBfO3ZhciBiLHc9blswXSxTPXRbMF0saz1uWzFdLEU9dFsxXTt3PlMm
JihiPXcsdz1TLFM9Yik7dmFyIEE9Uy13LEM9dWEoQS1iYSk8a2EsTj1DfHxrYT5BO2lmKCFDJiZr
PkUmJihiPWssaz1FLEU9YiksTj9DP2srRT4wXl9bMV08KHVhKF9bMF0tdyk8a2E/azpFKTprPD1f
WzFdJiZfWzFdPD1FOkE+YmFeKHc8PV9bMF0mJl9bMF08PVMpKXt2YXIgej1wZShkLCgtbStNKS95
KTtyZXR1cm4gZ2UoeixwKSxbXyxkZSh6KV19fX1mdW5jdGlvbiB1KHQsZSl7dmFyIHI9bz9uOmJh
LW4sdT0wO3JldHVybi1yPnQ/dXw9MTp0PnImJih1fD0yKSwtcj5lP3V8PTQ6ZT5yJiYodXw9OCks
dX12YXIgaT1NYXRoLmNvcyhuKSxvPWk+MCxhPXVhKGkpPmthLGM9c3Iobiw2KkFhKTtyZXR1cm4g
QWUodCxlLGMsbz9bMCwtbl06Wy1iYSxuLWJhXSl9ZnVuY3Rpb24gUGUobix0LGUscil7cmV0dXJu
IGZ1bmN0aW9uKHUpe3ZhciBpLG89dS5hLGE9dS5iLGM9by54LHM9by55LGw9YS54LGY9YS55LGg9
MCxnPTEscD1sLWMsdj1mLXM7aWYoaT1uLWMscHx8IShpPjApKXtpZihpLz1wLDA+cCl7aWYoaD5p
KXJldHVybjtnPmkmJihnPWkpfWVsc2UgaWYocD4wKXtpZihpPmcpcmV0dXJuO2k+aCYmKGg9aSl9
aWYoaT1lLWMscHx8ISgwPmkpKXtpZihpLz1wLDA+cCl7aWYoaT5nKXJldHVybjtpPmgmJihoPWkp
fWVsc2UgaWYocD4wKXtpZihoPmkpcmV0dXJuO2c+aSYmKGc9aSl9aWYoaT10LXMsdnx8IShpPjAp
KXtpZihpLz12LDA+dil7aWYoaD5pKXJldHVybjtnPmkmJihnPWkpfWVsc2UgaWYodj4wKXtpZihp
PmcpcmV0dXJuO2k+aCYmKGg9aSl9aWYoaT1yLXMsdnx8ISgwPmkpKXtpZihpLz12LDA+dil7aWYo
aT5nKXJldHVybjtpPmgmJihoPWkpfWVsc2UgaWYodj4wKXtpZihoPmkpcmV0dXJuO2c+aSYmKGc9
aSl9cmV0dXJuIGg+MCYmKHUuYT17eDpjK2gqcCx5OnMraCp2fSksMT5nJiYodS5iPXt4OmMrZypw
LHk6cytnKnZ9KSx1fX19fX19ZnVuY3Rpb24gVWUobix0LGUscil7ZnVuY3Rpb24gdShyLHUpe3Jl
dHVybiB1YShyWzBdLW4pPGthP3U+MD8wOjM6dWEoclswXS1lKTxrYT91PjA/MjoxOnVhKHJbMV0t
dCk8a2E/dT4wPzE6MDp1PjA/MzoyfWZ1bmN0aW9uIGkobix0KXtyZXR1cm4gbyhuLngsdC54KX1m
dW5jdGlvbiBvKG4sdCl7dmFyIGU9dShuLDEpLHI9dSh0LDEpO3JldHVybiBlIT09cj9lLXI6MD09
PWU/dFsxXS1uWzFdOjE9PT1lP25bMF0tdFswXToyPT09ZT9uWzFdLXRbMV06dFswXS1uWzBdfXJl
dHVybiBmdW5jdGlvbihhKXtmdW5jdGlvbiBjKG4pe2Zvcih2YXIgdD0wLGU9ZC5sZW5ndGgscj1u
WzFdLHU9MDtlPnU7Kyt1KWZvcih2YXIgaSxvPTEsYT1kW3VdLGM9YS5sZW5ndGgscz1hWzBdO2M+
bzsrK28paT1hW29dLHNbMV08PXI/aVsxXT5yJiZXKHMsaSxuKT4wJiYrK3Q6aVsxXTw9ciYmVyhz
LGksbik8MCYmLS10LHM9aTtyZXR1cm4gMCE9PXR9ZnVuY3Rpb24gcyhpLGEsYyxzKXt2YXIgbD0w
LGY9MDtpZihudWxsPT1pfHwobD11KGksYykpIT09KGY9dShhLGMpKXx8byhpLGEpPDBeYz4wKXtk
byBzLnBvaW50KDA9PT1sfHwzPT09bD9uOmUsbD4xP3I6dCk7d2hpbGUoKGw9KGwrYys0KSU0KSE9
PWYpfWVsc2Ugcy5wb2ludChhWzBdLGFbMV0pfWZ1bmN0aW9uIGwodSxpKXtyZXR1cm4gdT49biYm
ZT49dSYmaT49dCYmcj49aX1mdW5jdGlvbiBmKG4sdCl7bChuLHQpJiZhLnBvaW50KG4sdCl9ZnVu
Y3Rpb24gaCgpe04ucG9pbnQ9cCxkJiZkLnB1c2gobT1bXSksUz0hMCx3PSExLF89Yj0wLzB9ZnVu
Y3Rpb24gZygpe3YmJihwKHkseCksTSYmdyYmQS5yZWpvaW4oKSx2LnB1c2goQS5idWZmZXIoKSkp
LE4ucG9pbnQ9Zix3JiZhLmxpbmVFbmQoKX1mdW5jdGlvbiBwKG4sdCl7bj1NYXRoLm1heCgta2Ms
TWF0aC5taW4oa2MsbikpLHQ9TWF0aC5tYXgoLWtjLE1hdGgubWluKGtjLHQpKTt2YXIgZT1sKG4s
dCk7aWYoZCYmbS5wdXNoKFtuLHRdKSxTKXk9bix4PXQsTT1lLFM9ITEsZSYmKGEubGluZVN0YXJ0
KCksYS5wb2ludChuLHQpKTtlbHNlIGlmKGUmJncpYS5wb2ludChuLHQpO2Vsc2V7dmFyIHI9e2E6
e3g6Xyx5OmJ9LGI6e3g6bix5OnR9fTtDKHIpPyh3fHwoYS5saW5lU3RhcnQoKSxhLnBvaW50KHIu
YS54LHIuYS55KSksYS5wb2ludChyLmIueCxyLmIueSksZXx8YS5saW5lRW5kKCksaz0hMSk6ZSYm
KGEubGluZVN0YXJ0KCksYS5wb2ludChuLHQpLGs9ITEpfV89bixiPXQsdz1lfXZhciB2LGQsbSx5
LHgsTSxfLGIsdyxTLGssRT1hLEE9TmUoKSxDPVBlKG4sdCxlLHIpLE49e3BvaW50OmYsbGluZVN0
YXJ0OmgsbGluZUVuZDpnLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2E9QSx2PVtdLGQ9W10saz0h
MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe2E9RSx2PVpvLm1lcmdlKHYpO3ZhciB0PWMoW24scl0p
LGU9ayYmdCx1PXYubGVuZ3RoOyhlfHx1KSYmKGEucG9seWdvblN0YXJ0KCksZSYmKGEubGluZVN0
YXJ0KCkscyhudWxsLG51bGwsMSxhKSxhLmxpbmVFbmQoKSksdSYmU2UodixpLHQscyxhKSxhLnBv
bHlnb25FbmQoKSksdj1kPW09bnVsbH19O3JldHVybiBOfX1mdW5jdGlvbiBqZShuLHQpe2Z1bmN0
aW9uIGUoZSxyKXtyZXR1cm4gZT1uKGUsciksdChlWzBdLGVbMV0pfXJldHVybiBuLmludmVydCYm
dC5pbnZlcnQmJihlLmludmVydD1mdW5jdGlvbihlLHIpe3JldHVybiBlPXQuaW52ZXJ0KGUsciks
ZSYmbi5pbnZlcnQoZVswXSxlWzFdKX0pLGV9ZnVuY3Rpb24gSGUobil7dmFyIHQ9MCxlPWJhLzMs
cj10cihuKSx1PXIodCxlKTtyZXR1cm4gdS5wYXJhbGxlbHM9ZnVuY3Rpb24obil7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/cih0PW5bMF0qYmEvMTgwLGU9blsxXSpiYS8xODApOlsxODAqKHQvYmEp
LDE4MCooZS9iYSldfSx1fWZ1bmN0aW9uIEZlKG4sdCl7ZnVuY3Rpb24gZShuLHQpe3ZhciBlPU1h
dGguc3FydChpLTIqdSpNYXRoLnNpbih0KSkvdTtyZXR1cm5bZSpNYXRoLnNpbihuKj11KSxvLWUq
TWF0aC5jb3MobildfXZhciByPU1hdGguc2luKG4pLHU9KHIrTWF0aC5zaW4odCkpLzIsaT0xK3Iq
KDIqdS1yKSxvPU1hdGguc3FydChpKS91O3JldHVybiBlLmludmVydD1mdW5jdGlvbihuLHQpe3Zh
ciBlPW8tdDtyZXR1cm5bTWF0aC5hdGFuMihuLGUpL3UsRygoaS0obipuK2UqZSkqdSp1KS8oMip1
KSldfSxlfWZ1bmN0aW9uIE9lKCl7ZnVuY3Rpb24gbihuLHQpe0FjKz11Km4tcip0LHI9bix1PXR9
dmFyIHQsZSxyLHU7VGMucG9pbnQ9ZnVuY3Rpb24oaSxvKXtUYy5wb2ludD1uLHQ9cj1pLGU9dT1v
fSxUYy5saW5lRW5kPWZ1bmN0aW9uKCl7bih0LGUpfX1mdW5jdGlvbiBZZShuLHQpe0NjPm4mJihD
Yz1uKSxuPnpjJiYoemM9biksTmM+dCYmKE5jPXQpLHQ+TGMmJihMYz10KX1mdW5jdGlvbiBJZSgp
e2Z1bmN0aW9uIG4obix0KXtvLnB1c2goIk0iLG4sIiwiLHQsaSl9ZnVuY3Rpb24gdChuLHQpe28u
cHVzaCgiTSIsbiwiLCIsdCksYS5wb2ludD1lfWZ1bmN0aW9uIGUobix0KXtvLnB1c2goIkwiLG4s
IiwiLHQpfWZ1bmN0aW9uIHIoKXthLnBvaW50PW59ZnVuY3Rpb24gdSgpe28ucHVzaCgiWiIpfXZh
ciBpPVplKDQuNSksbz1bXSxhPXtwb2ludDpuLGxpbmVTdGFydDpmdW5jdGlvbigpe2EucG9pbnQ9
dH0sbGluZUVuZDpyLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2EubGluZUVuZD11fSxwb2x5Z29u
RW5kOmZ1bmN0aW9uKCl7YS5saW5lRW5kPXIsYS5wb2ludD1ufSxwb2ludFJhZGl1czpmdW5jdGlv
bihuKXtyZXR1cm4gaT1aZShuKSxhfSxyZXN1bHQ6ZnVuY3Rpb24oKXtpZihvLmxlbmd0aCl7dmFy
IG49by5qb2luKCIiKTtyZXR1cm4gbz1bXSxufX19O3JldHVybiBhfWZ1bmN0aW9uIFplKG4pe3Jl
dHVybiJtMCwiK24rImEiK24rIiwiK24rIiAwIDEsMSAwLCIrLTIqbisiYSIrbisiLCIrbisiIDAg
MSwxIDAsIisyKm4rInoifWZ1bmN0aW9uIFZlKG4sdCl7cGMrPW4sdmMrPXQsKytkY31mdW5jdGlv
biBYZSgpe2Z1bmN0aW9uIG4obixyKXt2YXIgdT1uLXQsaT1yLWUsbz1NYXRoLnNxcnQodSp1K2kq
aSk7bWMrPW8qKHQrbikvMix5Yys9byooZStyKS8yLHhjKz1vLFZlKHQ9bixlPXIpfXZhciB0LGU7
UmMucG9pbnQ9ZnVuY3Rpb24ocix1KXtSYy5wb2ludD1uLFZlKHQ9cixlPXUpfX1mdW5jdGlvbiAk
ZSgpe1JjLnBvaW50PVZlfWZ1bmN0aW9uIEJlKCl7ZnVuY3Rpb24gbihuLHQpe3ZhciBlPW4tcixp
PXQtdSxvPU1hdGguc3FydChlKmUraSppKTttYys9byoocituKS8yLHljKz1vKih1K3QpLzIseGMr
PW8sbz11Km4tcip0LE1jKz1vKihyK24pLF9jKz1vKih1K3QpLGJjKz0zKm8sVmUocj1uLHU9dCl9
dmFyIHQsZSxyLHU7UmMucG9pbnQ9ZnVuY3Rpb24oaSxvKXtSYy5wb2ludD1uLFZlKHQ9cj1pLGU9
dT1vKX0sUmMubGluZUVuZD1mdW5jdGlvbigpe24odCxlKX19ZnVuY3Rpb24gV2Uobil7ZnVuY3Rp
b24gdCh0LGUpe24ubW92ZVRvKHQsZSksbi5hcmModCxlLG8sMCx3YSl9ZnVuY3Rpb24gZSh0LGUp
e24ubW92ZVRvKHQsZSksYS5wb2ludD1yfWZ1bmN0aW9uIHIodCxlKXtuLmxpbmVUbyh0LGUpfWZ1
bmN0aW9uIHUoKXthLnBvaW50PXR9ZnVuY3Rpb24gaSgpe24uY2xvc2VQYXRoKCl9dmFyIG89NC41
LGE9e3BvaW50OnQsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7YS5wb2ludD1lfSxsaW5lRW5kOnUscG9s
eWdvblN0YXJ0OmZ1bmN0aW9uKCl7YS5saW5lRW5kPWl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXth
LmxpbmVFbmQ9dSxhLnBvaW50PXR9LHBvaW50UmFkaXVzOmZ1bmN0aW9uKG4pe3JldHVybiBvPW4s
YX0scmVzdWx0OnZ9O3JldHVybiBhfWZ1bmN0aW9uIEplKG4pe2Z1bmN0aW9uIHQobil7cmV0dXJu
KGE/cjplKShuKX1mdW5jdGlvbiBlKHQpe3JldHVybiBRZSh0LGZ1bmN0aW9uKGUscil7ZT1uKGUs
ciksdC5wb2ludChlWzBdLGVbMV0pfSl9ZnVuY3Rpb24gcih0KXtmdW5jdGlvbiBlKGUscil7ZT1u
KGUsciksdC5wb2ludChlWzBdLGVbMV0pfWZ1bmN0aW9uIHIoKXt4PTAvMCxTLnBvaW50PWksdC5s
aW5lU3RhcnQoKX1mdW5jdGlvbiBpKGUscil7dmFyIGk9bGUoW2Uscl0pLG89bihlLHIpO3UoeCxN
LHksXyxiLHcseD1vWzBdLE09b1sxXSx5PWUsXz1pWzBdLGI9aVsxXSx3PWlbMl0sYSx0KSx0LnBv
aW50KHgsTSl9ZnVuY3Rpb24gbygpe1MucG9pbnQ9ZSx0LmxpbmVFbmQoKX1mdW5jdGlvbiBjKCl7
cigpLFMucG9pbnQ9cyxTLmxpbmVFbmQ9bH1mdW5jdGlvbiBzKG4sdCl7aShmPW4saD10KSxnPXgs
cD1NLHY9XyxkPWIsbT13LFMucG9pbnQ9aX1mdW5jdGlvbiBsKCl7dSh4LE0seSxfLGIsdyxnLHAs
Zix2LGQsbSxhLHQpLFMubGluZUVuZD1vLG8oKX12YXIgZixoLGcscCx2LGQsbSx5LHgsTSxfLGIs
dyxTPXtwb2ludDplLGxpbmVTdGFydDpyLGxpbmVFbmQ6byxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24o
KXt0LnBvbHlnb25TdGFydCgpLFMubGluZVN0YXJ0PWN9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0
LnBvbHlnb25FbmQoKSxTLmxpbmVTdGFydD1yfX07cmV0dXJuIFN9ZnVuY3Rpb24gdSh0LGUscixh
LGMscyxsLGYsaCxnLHAsdixkLG0pe3ZhciB5PWwtdCx4PWYtZSxNPXkqeSt4Kng7aWYoTT40Kmkm
JmQtLSl7dmFyIF89YStnLGI9YytwLHc9cyt2LFM9TWF0aC5zcXJ0KF8qXytiKmIrdyp3KSxrPU1h
dGguYXNpbih3Lz1TKSxFPXVhKHVhKHcpLTEpPGthfHx1YShyLWgpPGthPyhyK2gpLzI6TWF0aC5h
dGFuMihiLF8pLEE9bihFLGspLEM9QVswXSxOPUFbMV0sej1DLXQsTD1OLWUsVD14KnoteSpMOyhU
KlQvTT5pfHx1YSgoeSp6K3gqTCkvTS0uNSk+LjN8fG8+YSpnK2MqcCtzKnYpJiYodSh0LGUscixh
LGMscyxDLE4sRSxfLz1TLGIvPVMsdyxkLG0pLG0ucG9pbnQoQyxOKSx1KEMsTixFLF8sYix3LGws
ZixoLGcscCx2LGQsbSkpfX12YXIgaT0uNSxvPU1hdGguY29zKDMwKkFhKSxhPTE2OworcmV0dXJu
IHQucHJlY2lzaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPShpPW4q
bik+MCYmMTYsdCk6TWF0aC5zcXJ0KGkpfSx0fWZ1bmN0aW9uIEdlKG4pe3ZhciB0PUplKGZ1bmN0
aW9uKHQsZSl7cmV0dXJuIG4oW3QqQ2EsZSpDYV0pfSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVy
biBlcih0KG4pKX19ZnVuY3Rpb24gS2Uobil7dGhpcy5zdHJlYW09bn1mdW5jdGlvbiBRZShuLHQp
e3JldHVybntwb2ludDp0LHNwaGVyZTpmdW5jdGlvbigpe24uc3BoZXJlKCl9LGxpbmVTdGFydDpm
dW5jdGlvbigpe24ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtuLmxpbmVFbmQoKX0s
cG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7bi5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5j
dGlvbigpe24ucG9seWdvbkVuZCgpfX19ZnVuY3Rpb24gbnIobil7cmV0dXJuIHRyKGZ1bmN0aW9u
KCl7cmV0dXJuIG59KSgpfWZ1bmN0aW9uIHRyKG4pe2Z1bmN0aW9uIHQobil7cmV0dXJuIG49YShu
WzBdKkFhLG5bMV0qQWEpLFtuWzBdKmgrYyxzLW5bMV0qaF19ZnVuY3Rpb24gZShuKXtyZXR1cm4g
bj1hLmludmVydCgoblswXS1jKS9oLChzLW5bMV0pL2gpLG4mJltuWzBdKkNhLG5bMV0qQ2FdfWZ1
bmN0aW9uIHIoKXthPWplKG89aXIobSx5LHgpLGkpO3ZhciBuPWkodixkKTtyZXR1cm4gYz1nLW5b
MF0qaCxzPXArblsxXSpoLHUoKX1mdW5jdGlvbiB1KCl7cmV0dXJuIGwmJihsLnZhbGlkPSExLGw9
bnVsbCksdH12YXIgaSxvLGEsYyxzLGwsZj1KZShmdW5jdGlvbihuLHQpe3JldHVybiBuPWkobix0
KSxbblswXSpoK2Mscy1uWzFdKmhdfSksaD0xNTAsZz00ODAscD0yNTAsdj0wLGQ9MCxtPTAseT0w
LHg9MCxNPVNjLF89d3QsYj1udWxsLHc9bnVsbDtyZXR1cm4gdC5zdHJlYW09ZnVuY3Rpb24obil7
cmV0dXJuIGwmJihsLnZhbGlkPSExKSxsPWVyKE0obyxmKF8obikpKSksbC52YWxpZD0hMCxsfSx0
LmNsaXBBbmdsZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT1udWxsPT1u
PyhiPW4sU2MpOkRlKChiPStuKSpBYSksdSgpKTpifSx0LmNsaXBFeHRlbnQ9ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9bixfPW4/VWUoblswXVswXSxuWzBdWzFdLG5bMV1b
MF0sblsxXVsxXSk6d3QsdSgpKTp3fSx0LnNjYWxlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhoPStuLHIoKSk6aH0sdC50cmFuc2xhdGU9ZnVuY3Rpb24obil7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGc9K25bMF0scD0rblsxXSxyKCkpOltnLHBdfSx0LmNlbnRlcj1mdW5j
dGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj1uWzBdJTM2MCpBYSxkPW5bMV0lMzYw
KkFhLHIoKSk6W3YqQ2EsZCpDYV19LHQucm90YXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhtPW5bMF0lMzYwKkFhLHk9blsxXSUzNjAqQWEseD1uLmxlbmd0aD4yP25bMl0l
MzYwKkFhOjAscigpKTpbbSpDYSx5KkNhLHgqQ2FdfSxaby5yZWJpbmQodCxmLCJwcmVjaXNpb24i
KSxmdW5jdGlvbigpe3JldHVybiBpPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHQuaW52ZXJ0PWku
aW52ZXJ0JiZlLHIoKX19ZnVuY3Rpb24gZXIobil7cmV0dXJuIFFlKG4sZnVuY3Rpb24odCxlKXtu
LnBvaW50KHQqQWEsZSpBYSl9KX1mdW5jdGlvbiBycihuLHQpe3JldHVybltuLHRdfWZ1bmN0aW9u
IHVyKG4sdCl7cmV0dXJuW24+YmE/bi13YTotYmE+bj9uK3dhOm4sdF19ZnVuY3Rpb24gaXIobix0
LGUpe3JldHVybiBuP3R8fGU/amUoYXIobiksY3IodCxlKSk6YXIobik6dHx8ZT9jcih0LGUpOnVy
fWZ1bmN0aW9uIG9yKG4pe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiB0Kz1uLFt0PmJhP3Qt
d2E6LWJhPnQ/dCt3YTp0LGVdfX1mdW5jdGlvbiBhcihuKXt2YXIgdD1vcihuKTtyZXR1cm4gdC5p
bnZlcnQ9b3IoLW4pLHR9ZnVuY3Rpb24gY3Iobix0KXtmdW5jdGlvbiBlKG4sdCl7dmFyIGU9TWF0
aC5jb3ModCksYT1NYXRoLmNvcyhuKSplLGM9TWF0aC5zaW4obikqZSxzPU1hdGguc2luKHQpLGw9
cypyK2EqdTtyZXR1cm5bTWF0aC5hdGFuMihjKmktbCpvLGEqci1zKnUpLEcobCppK2MqbyldfXZh
ciByPU1hdGguY29zKG4pLHU9TWF0aC5zaW4obiksaT1NYXRoLmNvcyh0KSxvPU1hdGguc2luKHQp
O3JldHVybiBlLmludmVydD1mdW5jdGlvbihuLHQpe3ZhciBlPU1hdGguY29zKHQpLGE9TWF0aC5j
b3MobikqZSxjPU1hdGguc2luKG4pKmUscz1NYXRoLnNpbih0KSxsPXMqaS1jKm87cmV0dXJuW01h
dGguYXRhbjIoYyppK3MqbyxhKnIrbCp1KSxHKGwqci1hKnUpXX0sZX1mdW5jdGlvbiBzcihuLHQp
e3ZhciBlPU1hdGguY29zKG4pLHI9TWF0aC5zaW4obik7cmV0dXJuIGZ1bmN0aW9uKHUsaSxvLGEp
e3ZhciBjPW8qdDtudWxsIT11Pyh1PWxyKGUsdSksaT1scihlLGkpLChvPjA/aT51OnU+aSkmJih1
Kz1vKndhKSk6KHU9bitvKndhLGk9bi0uNSpjKTtmb3IodmFyIHMsbD11O28+MD9sPmk6aT5sO2wt
PWMpYS5wb2ludCgocz1kZShbZSwtcipNYXRoLmNvcyhsKSwtcipNYXRoLnNpbihsKV0pKVswXSxz
WzFdKX19ZnVuY3Rpb24gbHIobix0KXt2YXIgZT1sZSh0KTtlWzBdLT1uLHZlKGUpO3ZhciByPUoo
LWVbMV0pO3JldHVybigoLWVbMl08MD8tcjpyKSsyKk1hdGguUEkta2EpJSgyKk1hdGguUEkpfWZ1
bmN0aW9uIGZyKG4sdCxlKXt2YXIgcj1aby5yYW5nZShuLHQta2EsZSkuY29uY2F0KHQpO3JldHVy
biBmdW5jdGlvbihuKXtyZXR1cm4gci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW24sdF19KX19ZnVu
Y3Rpb24gaHIobix0LGUpe3ZhciByPVpvLnJhbmdlKG4sdC1rYSxlKS5jb25jYXQodCk7cmV0dXJu
IGZ1bmN0aW9uKG4pe3JldHVybiByLm1hcChmdW5jdGlvbih0KXtyZXR1cm5bdCxuXX0pfX1mdW5j
dGlvbiBncihuKXtyZXR1cm4gbi5zb3VyY2V9ZnVuY3Rpb24gcHIobil7cmV0dXJuIG4udGFyZ2V0
fWZ1bmN0aW9uIHZyKG4sdCxlLHIpe3ZhciB1PU1hdGguY29zKHQpLGk9TWF0aC5zaW4odCksbz1N
YXRoLmNvcyhyKSxhPU1hdGguc2luKHIpLGM9dSpNYXRoLmNvcyhuKSxzPXUqTWF0aC5zaW4obiks
bD1vKk1hdGguY29zKGUpLGY9bypNYXRoLnNpbihlKSxoPTIqTWF0aC5hc2luKE1hdGguc3FydCh0
dChyLXQpK3Uqbyp0dChlLW4pKSksZz0xL01hdGguc2luKGgpLHA9aD9mdW5jdGlvbihuKXt2YXIg
dD1NYXRoLnNpbihuKj1oKSpnLGU9TWF0aC5zaW4oaC1uKSpnLHI9ZSpjK3QqbCx1PWUqcyt0KmYs
bz1lKmkrdCphO3JldHVybltNYXRoLmF0YW4yKHUscikqQ2EsTWF0aC5hdGFuMihvLE1hdGguc3Fy
dChyKnIrdSp1KSkqQ2FdfTpmdW5jdGlvbigpe3JldHVybltuKkNhLHQqQ2FdfTtyZXR1cm4gcC5k
aXN0YW5jZT1oLHB9ZnVuY3Rpb24gZHIoKXtmdW5jdGlvbiBuKG4sdSl7dmFyIGk9TWF0aC5zaW4o
dSo9QWEpLG89TWF0aC5jb3ModSksYT11YSgobio9QWEpLXQpLGM9TWF0aC5jb3MoYSk7RGMrPU1h
dGguYXRhbjIoTWF0aC5zcXJ0KChhPW8qTWF0aC5zaW4oYSkpKmErKGE9cippLWUqbypjKSphKSxl
KmkrcipvKmMpLHQ9bixlPWkscj1vfXZhciB0LGUscjtQYy5wb2ludD1mdW5jdGlvbih1LGkpe3Q9
dSpBYSxlPU1hdGguc2luKGkqPUFhKSxyPU1hdGguY29zKGkpLFBjLnBvaW50PW59LFBjLmxpbmVF
bmQ9ZnVuY3Rpb24oKXtQYy5wb2ludD1QYy5saW5lRW5kPXZ9fWZ1bmN0aW9uIG1yKG4sdCl7ZnVu
Y3Rpb24gZSh0LGUpe3ZhciByPU1hdGguY29zKHQpLHU9TWF0aC5jb3MoZSksaT1uKHIqdSk7cmV0
dXJuW2kqdSpNYXRoLnNpbih0KSxpKk1hdGguc2luKGUpXX1yZXR1cm4gZS5pbnZlcnQ9ZnVuY3Rp
b24obixlKXt2YXIgcj1NYXRoLnNxcnQobipuK2UqZSksdT10KHIpLGk9TWF0aC5zaW4odSksbz1N
YXRoLmNvcyh1KTtyZXR1cm5bTWF0aC5hdGFuMihuKmkscipvKSxNYXRoLmFzaW4ociYmZSppL3Ip
XX0sZX1mdW5jdGlvbiB5cihuLHQpe2Z1bmN0aW9uIGUobix0KXtvPjA/LVNhK2thPnQmJih0PS1T
YStrYSk6dD5TYS1rYSYmKHQ9U2Eta2EpO3ZhciBlPW8vTWF0aC5wb3codSh0KSxpKTtyZXR1cm5b
ZSpNYXRoLnNpbihpKm4pLG8tZSpNYXRoLmNvcyhpKm4pXX12YXIgcj1NYXRoLmNvcyhuKSx1PWZ1
bmN0aW9uKG4pe3JldHVybiBNYXRoLnRhbihiYS80K24vMil9LGk9bj09PXQ/TWF0aC5zaW4obik6
TWF0aC5sb2coci9NYXRoLmNvcyh0KSkvTWF0aC5sb2codSh0KS91KG4pKSxvPXIqTWF0aC5wb3co
dShuKSxpKS9pO3JldHVybiBpPyhlLmludmVydD1mdW5jdGlvbihuLHQpe3ZhciBlPW8tdCxyPUIo
aSkqTWF0aC5zcXJ0KG4qbitlKmUpO3JldHVybltNYXRoLmF0YW4yKG4sZSkvaSwyKk1hdGguYXRh
bihNYXRoLnBvdyhvL3IsMS9pKSktU2FdfSxlKTpNcn1mdW5jdGlvbiB4cihuLHQpe2Z1bmN0aW9u
IGUobix0KXt2YXIgZT1pLXQ7cmV0dXJuW2UqTWF0aC5zaW4odSpuKSxpLWUqTWF0aC5jb3ModSpu
KV19dmFyIHI9TWF0aC5jb3MobiksdT1uPT09dD9NYXRoLnNpbihuKTooci1NYXRoLmNvcyh0KSkv
KHQtbiksaT1yL3UrbjtyZXR1cm4gdWEodSk8a2E/cnI6KGUuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7
dmFyIGU9aS10O3JldHVybltNYXRoLmF0YW4yKG4sZSkvdSxpLUIodSkqTWF0aC5zcXJ0KG4qbitl
KmUpXX0sZSl9ZnVuY3Rpb24gTXIobix0KXtyZXR1cm5bbixNYXRoLmxvZyhNYXRoLnRhbihiYS80
K3QvMikpXX1mdW5jdGlvbiBfcihuKXt2YXIgdCxlPW5yKG4pLHI9ZS5zY2FsZSx1PWUudHJhbnNs
YXRlLGk9ZS5jbGlwRXh0ZW50O3JldHVybiBlLnNjYWxlPWZ1bmN0aW9uKCl7dmFyIG49ci5hcHBs
eShlLGFyZ3VtZW50cyk7cmV0dXJuIG49PT1lP3Q/ZS5jbGlwRXh0ZW50KG51bGwpOmU6bn0sZS50
cmFuc2xhdGU9ZnVuY3Rpb24oKXt2YXIgbj11LmFwcGx5KGUsYXJndW1lbnRzKTtyZXR1cm4gbj09
PWU/dD9lLmNsaXBFeHRlbnQobnVsbCk6ZTpufSxlLmNsaXBFeHRlbnQ9ZnVuY3Rpb24obil7dmFy
IG89aS5hcHBseShlLGFyZ3VtZW50cyk7aWYobz09PWUpe2lmKHQ9bnVsbD09bil7dmFyIGE9YmEq
cigpLGM9dSgpO2koW1tjWzBdLWEsY1sxXS1hXSxbY1swXSthLGNbMV0rYV1dKX19ZWxzZSB0JiYo
bz1udWxsKTtyZXR1cm4gb30sZS5jbGlwRXh0ZW50KG51bGwpfWZ1bmN0aW9uIGJyKG4sdCl7cmV0
dXJuW01hdGgubG9nKE1hdGgudGFuKGJhLzQrdC8yKSksLW5dfWZ1bmN0aW9uIHdyKG4pe3JldHVy
biBuWzBdfWZ1bmN0aW9uIFNyKG4pe3JldHVybiBuWzFdfWZ1bmN0aW9uIGtyKG4pe2Zvcih2YXIg
dD1uLmxlbmd0aCxlPVswLDFdLHI9Mix1PTI7dD51O3UrKyl7Zm9yKDtyPjEmJlcobltlW3ItMl1d
LG5bZVtyLTFdXSxuW3VdKTw9MDspLS1yO2VbcisrXT11fXJldHVybiBlLnNsaWNlKDAscil9ZnVu
Y3Rpb24gRXIobix0KXtyZXR1cm4gblswXS10WzBdfHxuWzFdLXRbMV19ZnVuY3Rpb24gQXIobix0
LGUpe3JldHVybihlWzBdLXRbMF0pKihuWzFdLXRbMV0pPChlWzFdLXRbMV0pKihuWzBdLXRbMF0p
fWZ1bmN0aW9uIENyKG4sdCxlLHIpe3ZhciB1PW5bMF0saT1lWzBdLG89dFswXS11LGE9clswXS1p
LGM9blsxXSxzPWVbMV0sbD10WzFdLWMsZj1yWzFdLXMsaD0oYSooYy1zKS1mKih1LWkpKS8oZipv
LWEqbCk7cmV0dXJuW3UraCpvLGMraCpsXX1mdW5jdGlvbiBOcihuKXt2YXIgdD1uWzBdLGU9bltu
Lmxlbmd0aC0xXTtyZXR1cm4hKHRbMF0tZVswXXx8dFsxXS1lWzFdKX1mdW5jdGlvbiB6cigpe0dy
KHRoaXMpLHRoaXMuZWRnZT10aGlzLnNpdGU9dGhpcy5jaXJjbGU9bnVsbH1mdW5jdGlvbiBMcihu
KXt2YXIgdD1CYy5wb3AoKXx8bmV3IHpyO3JldHVybiB0LnNpdGU9bix0fWZ1bmN0aW9uIFRyKG4p
e1lyKG4pLFZjLnJlbW92ZShuKSxCYy5wdXNoKG4pLEdyKG4pfWZ1bmN0aW9uIHFyKG4pe3ZhciB0
PW4uY2lyY2xlLGU9dC54LHI9dC5jeSx1PXt4OmUseTpyfSxpPW4uUCxvPW4uTixhPVtuXTtUcihu
KTtmb3IodmFyIGM9aTtjLmNpcmNsZSYmdWEoZS1jLmNpcmNsZS54KTxrYSYmdWEoci1jLmNpcmNs
ZS5jeSk8a2E7KWk9Yy5QLGEudW5zaGlmdChjKSxUcihjKSxjPWk7YS51bnNoaWZ0KGMpLFlyKGMp
O2Zvcih2YXIgcz1vO3MuY2lyY2xlJiZ1YShlLXMuY2lyY2xlLngpPGthJiZ1YShyLXMuY2lyY2xl
LmN5KTxrYTspbz1zLk4sYS5wdXNoKHMpLFRyKHMpLHM9bzthLnB1c2gocyksWXIocyk7dmFyIGws
Zj1hLmxlbmd0aDtmb3IobD0xO2Y+bDsrK2wpcz1hW2xdLGM9YVtsLTFdLEJyKHMuZWRnZSxjLnNp
dGUscy5zaXRlLHUpO2M9YVswXSxzPWFbZi0xXSxzLmVkZ2U9WHIoYy5zaXRlLHMuc2l0ZSxudWxs
LHUpLE9yKGMpLE9yKHMpfWZ1bmN0aW9uIFJyKG4pe2Zvcih2YXIgdCxlLHIsdSxpPW4ueCxvPW4u
eSxhPVZjLl87YTspaWYocj1EcihhLG8pLWkscj5rYSlhPWEuTDtlbHNle2lmKHU9aS1QcihhLG8p
LCEodT5rYSkpe3I+LWthPyh0PWEuUCxlPWEpOnU+LWthPyh0PWEsZT1hLk4pOnQ9ZT1hO2JyZWFr
fWlmKCFhLlIpe3Q9YTticmVha31hPWEuUn12YXIgYz1McihuKTtpZihWYy5pbnNlcnQodCxjKSx0
fHxlKXtpZih0PT09ZSlyZXR1cm4gWXIodCksZT1Mcih0LnNpdGUpLFZjLmluc2VydChjLGUpLGMu
ZWRnZT1lLmVkZ2U9WHIodC5zaXRlLGMuc2l0ZSksT3IodCksT3IoZSksdm9pZCAwO2lmKCFlKXJl
dHVybiBjLmVkZ2U9WHIodC5zaXRlLGMuc2l0ZSksdm9pZCAwO1lyKHQpLFlyKGUpO3ZhciBzPXQu
c2l0ZSxsPXMueCxmPXMueSxoPW4ueC1sLGc9bi55LWYscD1lLnNpdGUsdj1wLngtbCxkPXAueS1m
LG09MiooaCpkLWcqdikseT1oKmgrZypnLHg9dip2K2QqZCxNPXt4OihkKnktZyp4KS9tK2wseToo
aCp4LXYqeSkvbStmfTtCcihlLmVkZ2UscyxwLE0pLGMuZWRnZT1YcihzLG4sbnVsbCxNKSxlLmVk
Z2U9WHIobixwLG51bGwsTSksT3IodCksT3IoZSl9fWZ1bmN0aW9uIERyKG4sdCl7dmFyIGU9bi5z
aXRlLHI9ZS54LHU9ZS55LGk9dS10O2lmKCFpKXJldHVybiByO3ZhciBvPW4uUDtpZighbylyZXR1
cm4tMS8wO2U9by5zaXRlO3ZhciBhPWUueCxjPWUueSxzPWMtdDtpZighcylyZXR1cm4gYTt2YXIg
bD1hLXIsZj0xL2ktMS9zLGg9bC9zO3JldHVybiBmPygtaCtNYXRoLnNxcnQoaCpoLTIqZioobCps
LygtMipzKS1jK3MvMit1LWkvMikpKS9mK3I6KHIrYSkvMn1mdW5jdGlvbiBQcihuLHQpe3ZhciBl
PW4uTjtpZihlKXJldHVybiBEcihlLHQpO3ZhciByPW4uc2l0ZTtyZXR1cm4gci55PT09dD9yLng6
MS8wfWZ1bmN0aW9uIFVyKG4pe3RoaXMuc2l0ZT1uLHRoaXMuZWRnZXM9W119ZnVuY3Rpb24ganIo
bil7Zm9yKHZhciB0LGUscix1LGksbyxhLGMscyxsLGY9blswXVswXSxoPW5bMV1bMF0sZz1uWzBd
WzFdLHA9blsxXVsxXSx2PVpjLGQ9di5sZW5ndGg7ZC0tOylpZihpPXZbZF0saSYmaS5wcmVwYXJl
KCkpZm9yKGE9aS5lZGdlcyxjPWEubGVuZ3RoLG89MDtjPm87KWw9YVtvXS5lbmQoKSxyPWwueCx1
PWwueSxzPWFbKytvJWNdLnN0YXJ0KCksdD1zLngsZT1zLnksKHVhKHItdCk+a2F8fHVhKHUtZSk+
a2EpJiYoYS5zcGxpY2UobywwLG5ldyBXcigkcihpLnNpdGUsbCx1YShyLWYpPGthJiZwLXU+a2E/
e3g6Zix5OnVhKHQtZik8a2E/ZTpwfTp1YSh1LXApPGthJiZoLXI+a2E/e3g6dWEoZS1wKTxrYT90
OmgseTpwfTp1YShyLWgpPGthJiZ1LWc+a2E/e3g6aCx5OnVhKHQtaCk8a2E/ZTpnfTp1YSh1LWcp
PGthJiZyLWY+a2E/e3g6dWEoZS1nKTxrYT90OmYseTpnfTpudWxsKSxpLnNpdGUsbnVsbCkpLCsr
Yyl9ZnVuY3Rpb24gSHIobix0KXtyZXR1cm4gdC5hbmdsZS1uLmFuZ2xlfWZ1bmN0aW9uIEZyKCl7
R3IodGhpcyksdGhpcy54PXRoaXMueT10aGlzLmFyYz10aGlzLnNpdGU9dGhpcy5jeT1udWxsfWZ1
bmN0aW9uIE9yKG4pe3ZhciB0PW4uUCxlPW4uTjtpZih0JiZlKXt2YXIgcj10LnNpdGUsdT1uLnNp
dGUsaT1lLnNpdGU7aWYociE9PWkpe3ZhciBvPXUueCxhPXUueSxjPXIueC1vLHM9ci55LWEsbD1p
LngtbyxmPWkueS1hLGg9MiooYypmLXMqbCk7aWYoIShoPj0tRWEpKXt2YXIgZz1jKmMrcypzLHA9
bCpsK2YqZix2PShmKmctcypwKS9oLGQ9KGMqcC1sKmcpL2gsZj1kK2EsbT1XYy5wb3AoKXx8bmV3
IEZyO20uYXJjPW4sbS5zaXRlPXUsbS54PXYrbyxtLnk9ZitNYXRoLnNxcnQodip2K2QqZCksbS5j
eT1mLG4uY2lyY2xlPW07Zm9yKHZhciB5PW51bGwseD0kYy5fO3g7KWlmKG0ueTx4Lnl8fG0ueT09
PXgueSYmbS54PD14Lngpe2lmKCF4Lkwpe3k9eC5QO2JyZWFrfXg9eC5MfWVsc2V7aWYoIXguUil7
eT14O2JyZWFrfXg9eC5SfSRjLmluc2VydCh5LG0pLHl8fChYYz1tKX19fX1mdW5jdGlvbiBZcihu
KXt2YXIgdD1uLmNpcmNsZTt0JiYodC5QfHwoWGM9dC5OKSwkYy5yZW1vdmUodCksV2MucHVzaCh0
KSxHcih0KSxuLmNpcmNsZT1udWxsKX1mdW5jdGlvbiBJcihuKXtmb3IodmFyIHQsZT1JYyxyPVBl
KG5bMF1bMF0sblswXVsxXSxuWzFdWzBdLG5bMV1bMV0pLHU9ZS5sZW5ndGg7dS0tOyl0PWVbdV0s
KCFacih0LG4pfHwhcih0KXx8dWEodC5hLngtdC5iLngpPGthJiZ1YSh0LmEueS10LmIueSk8a2Ep
JiYodC5hPXQuYj1udWxsLGUuc3BsaWNlKHUsMSkpfWZ1bmN0aW9uIFpyKG4sdCl7dmFyIGU9bi5i
O2lmKGUpcmV0dXJuITA7dmFyIHIsdSxpPW4uYSxvPXRbMF1bMF0sYT10WzFdWzBdLGM9dFswXVsx
XSxzPXRbMV1bMV0sbD1uLmwsZj1uLnIsaD1sLngsZz1sLnkscD1mLngsdj1mLnksZD0oaCtwKS8y
LG09KGcrdikvMjtpZih2PT09Zyl7aWYobz5kfHxkPj1hKXJldHVybjtpZihoPnApe2lmKGkpe2lm
KGkueT49cylyZXR1cm59ZWxzZSBpPXt4OmQseTpjfTtlPXt4OmQseTpzfX1lbHNle2lmKGkpe2lm
KGkueTxjKXJldHVybn1lbHNlIGk9e3g6ZCx5OnN9O2U9e3g6ZCx5OmN9fX1lbHNlIGlmKHI9KGgt
cCkvKHYtZyksdT1tLXIqZCwtMT5yfHxyPjEpaWYoaD5wKXtpZihpKXtpZihpLnk+PXMpcmV0dXJu
fWVsc2UgaT17eDooYy11KS9yLHk6Y307ZT17eDoocy11KS9yLHk6c319ZWxzZXtpZihpKXtpZihp
Lnk8YylyZXR1cm59ZWxzZSBpPXt4OihzLXUpL3IseTpzfTtlPXt4OihjLXUpL3IseTpjfX1lbHNl
IGlmKHY+Zyl7aWYoaSl7aWYoaS54Pj1hKXJldHVybn1lbHNlIGk9e3g6byx5OnIqbyt1fTtlPXt4
OmEseTpyKmErdX19ZWxzZXtpZihpKXtpZihpLng8bylyZXR1cm59ZWxzZSBpPXt4OmEseTpyKmEr
dX07ZT17eDpvLHk6cipvK3V9fXJldHVybiBuLmE9aSxuLmI9ZSwhMH1mdW5jdGlvbiBWcihuLHQp
e3RoaXMubD1uLHRoaXMucj10LHRoaXMuYT10aGlzLmI9bnVsbH1mdW5jdGlvbiBYcihuLHQsZSxy
KXt2YXIgdT1uZXcgVnIobix0KTtyZXR1cm4gSWMucHVzaCh1KSxlJiZCcih1LG4sdCxlKSxyJiZC
cih1LHQsbixyKSxaY1tuLmldLmVkZ2VzLnB1c2gobmV3IFdyKHUsbix0KSksWmNbdC5pXS5lZGdl
cy5wdXNoKG5ldyBXcih1LHQsbikpLHV9ZnVuY3Rpb24gJHIobix0LGUpe3ZhciByPW5ldyBWcihu
LG51bGwpO3JldHVybiByLmE9dCxyLmI9ZSxJYy5wdXNoKHIpLHJ9ZnVuY3Rpb24gQnIobix0LGUs
cil7bi5hfHxuLmI/bi5sPT09ZT9uLmI9cjpuLmE9cjoobi5hPXIsbi5sPXQsbi5yPWUpfWZ1bmN0
aW9uIFdyKG4sdCxlKXt2YXIgcj1uLmEsdT1uLmI7dGhpcy5lZGdlPW4sdGhpcy5zaXRlPXQsdGhp
cy5hbmdsZT1lP01hdGguYXRhbjIoZS55LXQueSxlLngtdC54KTpuLmw9PT10P01hdGguYXRhbjIo
dS54LXIueCxyLnktdS55KTpNYXRoLmF0YW4yKHIueC11LngsdS55LXIueSl9ZnVuY3Rpb24gSnIo
KXt0aGlzLl89bnVsbH1mdW5jdGlvbiBHcihuKXtuLlU9bi5DPW4uTD1uLlI9bi5QPW4uTj1udWxs
fWZ1bmN0aW9uIEtyKG4sdCl7dmFyIGU9dCxyPXQuUix1PWUuVTt1P3UuTD09PWU/dS5MPXI6dS5S
PXI6bi5fPXIsci5VPXUsZS5VPXIsZS5SPXIuTCxlLlImJihlLlIuVT1lKSxyLkw9ZX1mdW5jdGlv
biBRcihuLHQpe3ZhciBlPXQscj10LkwsdT1lLlU7dT91Lkw9PT1lP3UuTD1yOnUuUj1yOm4uXz1y
LHIuVT11LGUuVT1yLGUuTD1yLlIsZS5MJiYoZS5MLlU9ZSksci5SPWV9ZnVuY3Rpb24gbnUobil7
Zm9yKDtuLkw7KW49bi5MO3JldHVybiBufWZ1bmN0aW9uIHR1KG4sdCl7dmFyIGUscix1LGk9bi5z
b3J0KGV1KS5wb3AoKTtmb3IoSWM9W10sWmM9bmV3IEFycmF5KG4ubGVuZ3RoKSxWYz1uZXcgSnIs
JGM9bmV3IEpyOzspaWYodT1YYyxpJiYoIXV8fGkueTx1Lnl8fGkueT09PXUueSYmaS54PHUueCkp
KGkueCE9PWV8fGkueSE9PXIpJiYoWmNbaS5pXT1uZXcgVXIoaSksUnIoaSksZT1pLngscj1pLnkp
LGk9bi5wb3AoKTtlbHNle2lmKCF1KWJyZWFrO3FyKHUuYXJjKX10JiYoSXIodCksanIodCkpO3Zh
ciBvPXtjZWxsczpaYyxlZGdlczpJY307cmV0dXJuIFZjPSRjPUljPVpjPW51bGwsb31mdW5jdGlv
biBldShuLHQpe3JldHVybiB0Lnktbi55fHx0Lngtbi54fWZ1bmN0aW9uIHJ1KG4sdCxlKXtyZXR1
cm4obi54LWUueCkqKHQueS1uLnkpLShuLngtdC54KSooZS55LW4ueSl9ZnVuY3Rpb24gdXUobil7
cmV0dXJuIG4ueH1mdW5jdGlvbiBpdShuKXtyZXR1cm4gbi55fWZ1bmN0aW9uIG91KCl7cmV0dXJu
e2xlYWY6ITAsbm9kZXM6W10scG9pbnQ6bnVsbCx4Om51bGwseTpudWxsfX1mdW5jdGlvbiBhdShu
LHQsZSxyLHUsaSl7aWYoIW4odCxlLHIsdSxpKSl7dmFyIG89LjUqKGUrdSksYT0uNSoocitpKSxj
PXQubm9kZXM7Y1swXSYmYXUobixjWzBdLGUscixvLGEpLGNbMV0mJmF1KG4sY1sxXSxvLHIsdSxh
KSxjWzJdJiZhdShuLGNbMl0sZSxhLG8saSksY1szXSYmYXUobixjWzNdLG8sYSx1LGkpfX1mdW5j
dGlvbiBjdShuLHQpe249Wm8ucmdiKG4pLHQ9Wm8ucmdiKHQpO3ZhciBlPW4ucixyPW4uZyx1PW4u
YixpPXQuci1lLG89dC5nLXIsYT10LmItdTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIiMiK2R0
KE1hdGgucm91bmQoZStpKm4pKStkdChNYXRoLnJvdW5kKHIrbypuKSkrZHQoTWF0aC5yb3VuZCh1
K2EqbikpfX1mdW5jdGlvbiBzdShuLHQpe3ZhciBlLHI9e30sdT17fTtmb3IoZSBpbiBuKWUgaW4g
dD9yW2VdPWh1KG5bZV0sdFtlXSk6dVtlXT1uW2VdO2ZvcihlIGluIHQpZSBpbiBufHwodVtlXT10
W2VdKTtyZXR1cm4gZnVuY3Rpb24obil7Zm9yKGUgaW4gcil1W2VdPXJbZV0obik7cmV0dXJuIHV9
fWZ1bmN0aW9uIGx1KG4sdCl7cmV0dXJuIHQtPW49K24sZnVuY3Rpb24oZSl7cmV0dXJuIG4rdCpl
fX1mdW5jdGlvbiBmdShuLHQpe3ZhciBlLHIsdSxpPUdjLmxhc3RJbmRleD1LYy5sYXN0SW5kZXg9
MCxvPS0xLGE9W10sYz1bXTtmb3Iobis9IiIsdCs9IiI7KGU9R2MuZXhlYyhuKSkmJihyPUtjLmV4
ZWModCkpOykodT1yLmluZGV4KT5pJiYodT10LnN1YnN0cmluZyhpLHUpLGFbb10/YVtvXSs9dTph
Wysrb109dSksKGU9ZVswXSk9PT0ocj1yWzBdKT9hW29dP2Fbb10rPXI6YVsrK29dPXI6KGFbKytv
XT1udWxsLGMucHVzaCh7aTpvLHg6bHUoZSxyKX0pKSxpPUtjLmxhc3RJbmRleDtyZXR1cm4gaTx0
Lmxlbmd0aCYmKHU9dC5zdWJzdHJpbmcoaSksYVtvXT9hW29dKz11OmFbKytvXT11KSxhLmxlbmd0
aDwyP2NbMF0/KHQ9Y1swXS54LGZ1bmN0aW9uKG4pe3JldHVybiB0KG4pKyIifSk6ZnVuY3Rpb24o
KXtyZXR1cm4gdH06KHQ9Yy5sZW5ndGgsZnVuY3Rpb24obil7Zm9yKHZhciBlLHI9MDt0PnI7Kyty
KWFbKGU9Y1tyXSkuaV09ZS54KG4pO3JldHVybiBhLmpvaW4oIiIpfSl9ZnVuY3Rpb24gaHUobix0
KXtmb3IodmFyIGUscj1aby5pbnRlcnBvbGF0b3JzLmxlbmd0aDstLXI+PTAmJiEoZT1aby5pbnRl
cnBvbGF0b3JzW3JdKG4sdCkpOyk7cmV0dXJuIGV9ZnVuY3Rpb24gZ3Uobix0KXt2YXIgZSxyPVtd
LHU9W10saT1uLmxlbmd0aCxvPXQubGVuZ3RoLGE9TWF0aC5taW4obi5sZW5ndGgsdC5sZW5ndGgp
O2ZvcihlPTA7YT5lOysrZSlyLnB1c2goaHUobltlXSx0W2VdKSk7Zm9yKDtpPmU7KytlKXVbZV09
bltlXTtmb3IoO28+ZTsrK2UpdVtlXT10W2VdO3JldHVybiBmdW5jdGlvbihuKXtmb3IoZT0wO2E+
ZTsrK2UpdVtlXT1yW2VdKG4pO3JldHVybiB1fX1mdW5jdGlvbiBwdShuKXtyZXR1cm4gZnVuY3Rp
b24odCl7cmV0dXJuIDA+PXQ/MDp0Pj0xPzE6bih0KX19ZnVuY3Rpb24gdnUobil7cmV0dXJuIGZ1
bmN0aW9uKHQpe3JldHVybiAxLW4oMS10KX19ZnVuY3Rpb24gZHUobil7cmV0dXJuIGZ1bmN0aW9u
KHQpe3JldHVybi41KiguNT50P24oMip0KToyLW4oMi0yKnQpKX19ZnVuY3Rpb24gbXUobil7cmV0
dXJuIG4qbn1mdW5jdGlvbiB5dShuKXtyZXR1cm4gbipuKm59ZnVuY3Rpb24geHUobil7aWYoMD49
bilyZXR1cm4gMDtpZihuPj0xKXJldHVybiAxO3ZhciB0PW4qbixlPXQqbjtyZXR1cm4gNCooLjU+
bj9lOjMqKG4tdCkrZS0uNzUpfWZ1bmN0aW9uIE11KG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1
cm4gTWF0aC5wb3codCxuKX19ZnVuY3Rpb24gX3Uobil7cmV0dXJuIDEtTWF0aC5jb3MobipTYSl9
ZnVuY3Rpb24gYnUobil7cmV0dXJuIE1hdGgucG93KDIsMTAqKG4tMSkpfWZ1bmN0aW9uIHd1KG4p
e3JldHVybiAxLU1hdGguc3FydCgxLW4qbil9ZnVuY3Rpb24gU3Uobix0KXt2YXIgZTtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aDwyJiYodD0uNDUpLGFyZ3VtZW50cy5sZW5ndGg/ZT10L3dhKk1hdGgu
YXNpbigxL24pOihuPTEsZT10LzQpLGZ1bmN0aW9uKHIpe3JldHVybiAxK24qTWF0aC5wb3coMiwt
MTAqcikqTWF0aC5zaW4oKHItZSkqd2EvdCl9fWZ1bmN0aW9uIGt1KG4pe3JldHVybiBufHwobj0x
LjcwMTU4KSxmdW5jdGlvbih0KXtyZXR1cm4gdCp0KigobisxKSp0LW4pfX1mdW5jdGlvbiBFdShu
KXtyZXR1cm4gMS8yLjc1Pm4/Ny41NjI1Km4qbjoyLzIuNzU+bj83LjU2MjUqKG4tPTEuNS8yLjc1
KSpuKy43NToyLjUvMi43NT5uPzcuNTYyNSoobi09Mi4yNS8yLjc1KSpuKy45Mzc1OjcuNTYyNSoo
bi09Mi42MjUvMi43NSkqbisuOTg0Mzc1fWZ1bmN0aW9uIEF1KG4sdCl7bj1aby5oY2wobiksdD1a
by5oY2wodCk7dmFyIGU9bi5oLHI9bi5jLHU9bi5sLGk9dC5oLWUsbz10LmMtcixhPXQubC11O3Jl
dHVybiBpc05hTihvKSYmKG89MCxyPWlzTmFOKHIpP3QuYzpyKSxpc05hTihpKT8oaT0wLGU9aXNO
YU4oZSk/dC5oOmUpOmk+MTgwP2ktPTM2MDotMTgwPmkmJihpKz0zNjApLGZ1bmN0aW9uKG4pe3Jl
dHVybiBvdChlK2kqbixyK28qbix1K2EqbikrIiJ9fWZ1bmN0aW9uIEN1KG4sdCl7bj1aby5oc2wo
biksdD1aby5oc2wodCk7dmFyIGU9bi5oLHI9bi5zLHU9bi5sLGk9dC5oLWUsbz10LnMtcixhPXQu
bC11O3JldHVybiBpc05hTihvKSYmKG89MCxyPWlzTmFOKHIpP3QuczpyKSxpc05hTihpKT8oaT0w
LGU9aXNOYU4oZSk/dC5oOmUpOmk+MTgwP2ktPTM2MDotMTgwPmkmJihpKz0zNjApLGZ1bmN0aW9u
KG4pe3JldHVybiB1dChlK2kqbixyK28qbix1K2EqbikrIiJ9fWZ1bmN0aW9uIE51KG4sdCl7bj1a
by5sYWIobiksdD1aby5sYWIodCk7dmFyIGU9bi5sLHI9bi5hLHU9bi5iLGk9dC5sLWUsbz10LmEt
cixhPXQuYi11O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gY3QoZStpKm4scitvKm4sdSthKm4p
KyIifX1mdW5jdGlvbiB6dShuLHQpe3JldHVybiB0LT1uLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRo
LnJvdW5kKG4rdCplKX19ZnVuY3Rpb24gTHUobil7dmFyIHQ9W24uYSxuLmJdLGU9W24uYyxuLmRd
LHI9cXUodCksdT1UdSh0LGUpLGk9cXUoUnUoZSx0LC11KSl8fDA7dFswXSplWzFdPGVbMF0qdFsx
XSYmKHRbMF0qPS0xLHRbMV0qPS0xLHIqPS0xLHUqPS0xKSx0aGlzLnJvdGF0ZT0ocj9NYXRoLmF0
YW4yKHRbMV0sdFswXSk6TWF0aC5hdGFuMigtZVswXSxlWzFdKSkqQ2EsdGhpcy50cmFuc2xhdGU9
W24uZSxuLmZdLHRoaXMuc2NhbGU9W3IsaV0sdGhpcy5za2V3PWk/TWF0aC5hdGFuMih1LGkpKkNh
OjB9ZnVuY3Rpb24gVHUobix0KXtyZXR1cm4gblswXSp0WzBdK25bMV0qdFsxXX1mdW5jdGlvbiBx
dShuKXt2YXIgdD1NYXRoLnNxcnQoVHUobixuKSk7cmV0dXJuIHQmJihuWzBdLz10LG5bMV0vPXQp
LHR9ZnVuY3Rpb24gUnUobix0LGUpe3JldHVybiBuWzBdKz1lKnRbMF0sblsxXSs9ZSp0WzFdLG59
ZnVuY3Rpb24gRHUobix0KXt2YXIgZSxyPVtdLHU9W10saT1aby50cmFuc2Zvcm0obiksbz1aby50
cmFuc2Zvcm0odCksYT1pLnRyYW5zbGF0ZSxjPW8udHJhbnNsYXRlLHM9aS5yb3RhdGUsbD1vLnJv
dGF0ZSxmPWkuc2tldyxoPW8uc2tldyxnPWkuc2NhbGUscD1vLnNjYWxlO3JldHVybiBhWzBdIT1j
WzBdfHxhWzFdIT1jWzFdPyhyLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsIiwiLG51bGwsIikiKSx1
LnB1c2goe2k6MSx4Omx1KGFbMF0sY1swXSl9LHtpOjMseDpsdShhWzFdLGNbMV0pfSkpOmNbMF18
fGNbMV0/ci5wdXNoKCJ0cmFuc2xhdGUoIitjKyIpIik6ci5wdXNoKCIiKSxzIT1sPyhzLWw+MTgw
P2wrPTM2MDpsLXM+MTgwJiYocys9MzYwKSx1LnB1c2goe2k6ci5wdXNoKHIucG9wKCkrInJvdGF0
ZSgiLG51bGwsIikiKS0yLHg6bHUocyxsKX0pKTpsJiZyLnB1c2goci5wb3AoKSsicm90YXRlKCIr
bCsiKSIpLGYhPWg/dS5wdXNoKHtpOnIucHVzaChyLnBvcCgpKyJza2V3WCgiLG51bGwsIikiKS0y
LHg6bHUoZixoKX0pOmgmJnIucHVzaChyLnBvcCgpKyJza2V3WCgiK2grIikiKSxnWzBdIT1wWzBd
fHxnWzFdIT1wWzFdPyhlPXIucHVzaChyLnBvcCgpKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIiki
KSx1LnB1c2goe2k6ZS00LHg6bHUoZ1swXSxwWzBdKX0se2k6ZS0yLHg6bHUoZ1sxXSxwWzFdKX0p
KTooMSE9cFswXXx8MSE9cFsxXSkmJnIucHVzaChyLnBvcCgpKyJzY2FsZSgiK3ArIikiKSxlPXUu
bGVuZ3RoLGZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxpPS0xOysraTxlOylyWyh0PXVbaV0pLmldPXQu
eChuKTtyZXR1cm4gci5qb2luKCIiKX19ZnVuY3Rpb24gUHUobix0KXtyZXR1cm4gdD10LShuPStu
KT8xLyh0LW4pOjAsZnVuY3Rpb24oZSl7cmV0dXJuKGUtbikqdH19ZnVuY3Rpb24gVXUobix0KXty
ZXR1cm4gdD10LShuPStuKT8xLyh0LW4pOjAsZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubWF4KDAs
TWF0aC5taW4oMSwoZS1uKSp0KSl9fWZ1bmN0aW9uIGp1KG4pe2Zvcih2YXIgdD1uLnNvdXJjZSxl
PW4udGFyZ2V0LHI9RnUodCxlKSx1PVt0XTt0IT09cjspdD10LnBhcmVudCx1LnB1c2godCk7Zm9y
KHZhciBpPXUubGVuZ3RoO2UhPT1yOyl1LnNwbGljZShpLDAsZSksZT1lLnBhcmVudDtyZXR1cm4g
dX1mdW5jdGlvbiBIdShuKXtmb3IodmFyIHQ9W10sZT1uLnBhcmVudDtudWxsIT1lOyl0LnB1c2go
biksbj1lLGU9ZS5wYXJlbnQ7cmV0dXJuIHQucHVzaChuKSx0fWZ1bmN0aW9uIEZ1KG4sdCl7aWYo
bj09PXQpcmV0dXJuIG47Zm9yKHZhciBlPUh1KG4pLHI9SHUodCksdT1lLnBvcCgpLGk9ci5wb3Ao
KSxvPW51bGw7dT09PWk7KW89dSx1PWUucG9wKCksaT1yLnBvcCgpO3JldHVybiBvfWZ1bmN0aW9u
IE91KG4pe24uZml4ZWR8PTJ9ZnVuY3Rpb24gWXUobil7bi5maXhlZCY9LTd9ZnVuY3Rpb24gSXUo
bil7bi5maXhlZHw9NCxuLnB4PW4ueCxuLnB5PW4ueX1mdW5jdGlvbiBadShuKXtuLmZpeGVkJj0t
NX1mdW5jdGlvbiBWdShuLHQsZSl7dmFyIHI9MCx1PTA7aWYobi5jaGFyZ2U9MCwhbi5sZWFmKWZv
cih2YXIgaSxvPW4ubm9kZXMsYT1vLmxlbmd0aCxjPS0xOysrYzxhOylpPW9bY10sbnVsbCE9aSYm
KFZ1KGksdCxlKSxuLmNoYXJnZSs9aS5jaGFyZ2Uscis9aS5jaGFyZ2UqaS5jeCx1Kz1pLmNoYXJn
ZSppLmN5KTtpZihuLnBvaW50KXtuLmxlYWZ8fChuLnBvaW50LngrPU1hdGgucmFuZG9tKCktLjUs
bi5wb2ludC55Kz1NYXRoLnJhbmRvbSgpLS41KTt2YXIgcz10KmVbbi5wb2ludC5pbmRleF07bi5j
aGFyZ2UrPW4ucG9pbnRDaGFyZ2U9cyxyKz1zKm4ucG9pbnQueCx1Kz1zKm4ucG9pbnQueX1uLmN4
PXIvbi5jaGFyZ2Usbi5jeT11L24uY2hhcmdlfWZ1bmN0aW9uIFh1KG4sdCl7cmV0dXJuIFpvLnJl
YmluZChuLHQsInNvcnQiLCJjaGlsZHJlbiIsInZhbHVlIiksbi5ub2Rlcz1uLG4ubGlua3M9S3Us
bn1mdW5jdGlvbiAkdShuLHQpe2Zvcih2YXIgZT1bbl07bnVsbCE9KG49ZS5wb3AoKSk7KWlmKHQo
biksKHU9bi5jaGlsZHJlbikmJihyPXUubGVuZ3RoKSlmb3IodmFyIHIsdTstLXI+PTA7KWUucHVz
aCh1W3JdKX1mdW5jdGlvbiBCdShuLHQpe2Zvcih2YXIgZT1bbl0scj1bXTtudWxsIT0obj1lLnBv
cCgpKTspaWYoci5wdXNoKG4pLChpPW4uY2hpbGRyZW4pJiYodT1pLmxlbmd0aCkpZm9yKHZhciB1
LGksbz0tMTsrK288dTspZS5wdXNoKGlbb10pO2Zvcig7bnVsbCE9KG49ci5wb3AoKSk7KXQobil9
ZnVuY3Rpb24gV3Uobil7cmV0dXJuIG4uY2hpbGRyZW59ZnVuY3Rpb24gSnUobil7cmV0dXJuIG4u
dmFsdWV9ZnVuY3Rpb24gR3Uobix0KXtyZXR1cm4gdC52YWx1ZS1uLnZhbHVlfWZ1bmN0aW9uIEt1
KG4pe3JldHVybiBaby5tZXJnZShuLm1hcChmdW5jdGlvbihuKXtyZXR1cm4obi5jaGlsZHJlbnx8
W10pLm1hcChmdW5jdGlvbih0KXtyZXR1cm57c291cmNlOm4sdGFyZ2V0OnR9fSl9KSl9ZnVuY3Rp
b24gUXUobil7cmV0dXJuIG4ueH1mdW5jdGlvbiBuaShuKXtyZXR1cm4gbi55fWZ1bmN0aW9uIHRp
KG4sdCxlKXtuLnkwPXQsbi55PWV9ZnVuY3Rpb24gZWkobil7cmV0dXJuIFpvLnJhbmdlKG4ubGVu
Z3RoKX1mdW5jdGlvbiByaShuKXtmb3IodmFyIHQ9LTEsZT1uWzBdLmxlbmd0aCxyPVtdOysrdDxl
OylyW3RdPTA7cmV0dXJuIHJ9ZnVuY3Rpb24gdWkobil7Zm9yKHZhciB0LGU9MSxyPTAsdT1uWzBd
WzFdLGk9bi5sZW5ndGg7aT5lOysrZSkodD1uW2VdWzFdKT51JiYocj1lLHU9dCk7cmV0dXJuIHJ9
ZnVuY3Rpb24gaWkobil7cmV0dXJuIG4ucmVkdWNlKG9pLDApfWZ1bmN0aW9uIG9pKG4sdCl7cmV0
dXJuIG4rdFsxXX1mdW5jdGlvbiBhaShuLHQpe3JldHVybiBjaShuLE1hdGguY2VpbChNYXRoLmxv
Zyh0Lmxlbmd0aCkvTWF0aC5MTjIrMSkpfWZ1bmN0aW9uIGNpKG4sdCl7Zm9yKHZhciBlPS0xLHI9
K25bMF0sdT0oblsxXS1yKS90LGk9W107KytlPD10OylpW2VdPXUqZStyO3JldHVybiBpfWZ1bmN0
aW9uIHNpKG4pe3JldHVybltaby5taW4obiksWm8ubWF4KG4pXX1mdW5jdGlvbiBsaShuLHQpe3Jl
dHVybiBuLnZhbHVlLXQudmFsdWV9ZnVuY3Rpb24gZmkobix0KXt2YXIgZT1uLl9wYWNrX25leHQ7
bi5fcGFja19uZXh0PXQsdC5fcGFja19wcmV2PW4sdC5fcGFja19uZXh0PWUsZS5fcGFja19wcmV2
PXR9ZnVuY3Rpb24gaGkobix0KXtuLl9wYWNrX25leHQ9dCx0Ll9wYWNrX3ByZXY9bn1mdW5jdGlv
biBnaShuLHQpe3ZhciBlPXQueC1uLngscj10Lnktbi55LHU9bi5yK3QucjtyZXR1cm4uOTk5KnUq
dT5lKmUrcipyfWZ1bmN0aW9uIHBpKG4pe2Z1bmN0aW9uIHQobil7bD1NYXRoLm1pbihuLngtbi5y
LGwpLGY9TWF0aC5tYXgobi54K24ucixmKSxoPU1hdGgubWluKG4ueS1uLnIsaCksZz1NYXRoLm1h
eChuLnkrbi5yLGcpfWlmKChlPW4uY2hpbGRyZW4pJiYocz1lLmxlbmd0aCkpe3ZhciBlLHIsdSxp
LG8sYSxjLHMsbD0xLzAsZj0tMS8wLGg9MS8wLGc9LTEvMDtpZihlLmZvckVhY2godmkpLHI9ZVsw
XSxyLng9LXIucixyLnk9MCx0KHIpLHM+MSYmKHU9ZVsxXSx1Lng9dS5yLHUueT0wLHQodSkscz4y
KSlmb3IoaT1lWzJdLHlpKHIsdSxpKSx0KGkpLGZpKHIsaSksci5fcGFja19wcmV2PWksZmkoaSx1
KSx1PXIuX3BhY2tfbmV4dCxvPTM7cz5vO28rKyl7eWkocix1LGk9ZVtvXSk7dmFyIHA9MCx2PTEs
ZD0xO2ZvcihhPXUuX3BhY2tfbmV4dDthIT09dTthPWEuX3BhY2tfbmV4dCx2KyspaWYoZ2koYSxp
KSl7cD0xO2JyZWFrfWlmKDE9PXApZm9yKGM9ci5fcGFja19wcmV2O2MhPT1hLl9wYWNrX3ByZXYm
JiFnaShjLGkpO2M9Yy5fcGFja19wcmV2LGQrKyk7cD8oZD52fHx2PT1kJiZ1LnI8ci5yP2hpKHIs
dT1hKTpoaShyPWMsdSksby0tKTooZmkocixpKSx1PWksdChpKSl9dmFyIG09KGwrZikvMix5PSho
K2cpLzIseD0wO2ZvcihvPTA7cz5vO28rKylpPWVbb10saS54LT1tLGkueS09eSx4PU1hdGgubWF4
KHgsaS5yK01hdGguc3FydChpLngqaS54K2kueSppLnkpKTtuLnI9eCxlLmZvckVhY2goZGkpfX1m
dW5jdGlvbiB2aShuKXtuLl9wYWNrX25leHQ9bi5fcGFja19wcmV2PW59ZnVuY3Rpb24gZGkobil7
ZGVsZXRlIG4uX3BhY2tfbmV4dCxkZWxldGUgbi5fcGFja19wcmV2fWZ1bmN0aW9uIG1pKG4sdCxl
LHIpe3ZhciB1PW4uY2hpbGRyZW47aWYobi54PXQrPXIqbi54LG4ueT1lKz1yKm4ueSxuLnIqPXIs
dSlmb3IodmFyIGk9LTEsbz11Lmxlbmd0aDsrK2k8bzspbWkodVtpXSx0LGUscil9ZnVuY3Rpb24g
eWkobix0LGUpe3ZhciByPW4ucitlLnIsdT10Lngtbi54LGk9dC55LW4ueTtpZihyJiYodXx8aSkp
e3ZhciBvPXQucitlLnIsYT11KnUraSppO28qPW8scio9cjt2YXIgYz0uNSsoci1vKS8oMiphKSxz
PU1hdGguc3FydChNYXRoLm1heCgwLDIqbyoocithKS0oci09YSkqci1vKm8pKS8oMiphKTtlLng9
bi54K2MqdStzKmksZS55PW4ueStjKmktcyp1fWVsc2UgZS54PW4ueCtyLGUueT1uLnl9ZnVuY3Rp
b24geGkobix0KXtyZXR1cm4gbi5wYXJlbnQ9PXQucGFyZW50PzE6Mn1mdW5jdGlvbiBNaShuKXt2
YXIgdD1uLmNoaWxkcmVuO3JldHVybiB0Lmxlbmd0aD90WzBdOm4udH1mdW5jdGlvbiBfaShuKXt2
YXIgdCxlPW4uY2hpbGRyZW47cmV0dXJuKHQ9ZS5sZW5ndGgpP2VbdC0xXTpuLnR9ZnVuY3Rpb24g
Ymkobix0LGUpe3ZhciByPWUvKHQuaS1uLmkpO3QuYy09cix0LnMrPWUsbi5jKz1yLHQueis9ZSx0
Lm0rPWV9ZnVuY3Rpb24gd2kobil7Zm9yKHZhciB0LGU9MCxyPTAsdT1uLmNoaWxkcmVuLGk9dS5s
ZW5ndGg7LS1pPj0wOyl0PXVbaV0sdC56Kz1lLHQubSs9ZSxlKz10LnMrKHIrPXQuYyl9ZnVuY3Rp
b24gU2kobix0LGUpe3JldHVybiBuLmEucGFyZW50PT09dC5wYXJlbnQ/bi5hOmV9ZnVuY3Rpb24g
a2kobil7cmV0dXJuIDErWm8ubWF4KG4sZnVuY3Rpb24obil7cmV0dXJuIG4ueX0pfWZ1bmN0aW9u
IEVpKG4pe3JldHVybiBuLnJlZHVjZShmdW5jdGlvbihuLHQpe3JldHVybiBuK3QueH0sMCkvbi5s
ZW5ndGh9ZnVuY3Rpb24gQWkobil7dmFyIHQ9bi5jaGlsZHJlbjtyZXR1cm4gdCYmdC5sZW5ndGg/
QWkodFswXSk6bn1mdW5jdGlvbiBDaShuKXt2YXIgdCxlPW4uY2hpbGRyZW47cmV0dXJuIGUmJih0
PWUubGVuZ3RoKT9DaShlW3QtMV0pOm59ZnVuY3Rpb24gTmkobil7cmV0dXJue3g6bi54LHk6bi55
LGR4Om4uZHgsZHk6bi5keX19ZnVuY3Rpb24gemkobix0KXt2YXIgZT1uLngrdFszXSxyPW4ueSt0
WzBdLHU9bi5keC10WzFdLXRbM10saT1uLmR5LXRbMF0tdFsyXTtyZXR1cm4gMD51JiYoZSs9dS8y
LHU9MCksMD5pJiYocis9aS8yLGk9MCkse3g6ZSx5OnIsZHg6dSxkeTppfX1mdW5jdGlvbiBMaShu
KXt2YXIgdD1uWzBdLGU9bltuLmxlbmd0aC0xXTtyZXR1cm4gZT50P1t0LGVdOltlLHRdfWZ1bmN0
aW9uIFRpKG4pe3JldHVybiBuLnJhbmdlRXh0ZW50P24ucmFuZ2VFeHRlbnQoKTpMaShuLnJhbmdl
KCkpfWZ1bmN0aW9uIHFpKG4sdCxlLHIpe3ZhciB1PWUoblswXSxuWzFdKSxpPXIodFswXSx0WzFd
KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGkodShuKSl9fWZ1bmN0aW9uIFJpKG4sdCl7dmFy
IGUscj0wLHU9bi5sZW5ndGgtMSxpPW5bcl0sbz1uW3VdO3JldHVybiBpPm8mJihlPXIscj11LHU9
ZSxlPWksaT1vLG89ZSksbltyXT10LmZsb29yKGkpLG5bdV09dC5jZWlsKG8pLG59ZnVuY3Rpb24g
RGkobil7cmV0dXJuIG4/e2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmZsb29yKHQvbikq
bn0sY2VpbDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5jZWlsKHQvbikqbn19OnNzfWZ1bmN0aW9u
IFBpKG4sdCxlLHIpe3ZhciB1PVtdLGk9W10sbz0wLGE9TWF0aC5taW4obi5sZW5ndGgsdC5sZW5n
dGgpLTE7Zm9yKG5bYV08blswXSYmKG49bi5zbGljZSgpLnJldmVyc2UoKSx0PXQuc2xpY2UoKS5y
ZXZlcnNlKCkpOysrbzw9YTspdS5wdXNoKGUobltvLTFdLG5bb10pKSxpLnB1c2gocih0W28tMV0s
dFtvXSkpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1aby5iaXNlY3Qobix0LDEsYSktMTtyZXR1
cm4gaVtlXSh1W2VdKHQpKX19ZnVuY3Rpb24gVWkobix0LGUscil7ZnVuY3Rpb24gdSgpe3ZhciB1
PU1hdGgubWluKG4ubGVuZ3RoLHQubGVuZ3RoKT4yP1BpOnFpLGM9cj9VdTpQdTtyZXR1cm4gbz11
KG4sdCxjLGUpLGE9dSh0LG4sYyxodSksaX1mdW5jdGlvbiBpKG4pe3JldHVybiBvKG4pfXZhciBv
LGE7cmV0dXJuIGkuaW52ZXJ0PWZ1bmN0aW9uKG4pe3JldHVybiBhKG4pfSxpLmRvbWFpbj1mdW5j
dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10Lm1hcChOdW1iZXIpLHUoKSk6bn0s
aS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLHUoKSk6dH0s
aS5yYW5nZVJvdW5kPWZ1bmN0aW9uKG4pe3JldHVybiBpLnJhbmdlKG4pLmludGVycG9sYXRlKHp1
KX0saS5jbGFtcD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHUoKSk6
cn0saS5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1u
LHUoKSk6ZX0saS50aWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gT2kobix0KX0saS50aWNrRm9ybWF0
PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFlpKG4sdCxlKX0saS5uaWNlPWZ1bmN0aW9uKHQpe3JldHVy
biBIaShuLHQpLHUoKX0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFVpKG4sdCxlLHIpfSx1KCl9
ZnVuY3Rpb24gamkobix0KXtyZXR1cm4gWm8ucmViaW5kKG4sdCwicmFuZ2UiLCJyYW5nZVJvdW5k
IiwiaW50ZXJwb2xhdGUiLCJjbGFtcCIpfWZ1bmN0aW9uIEhpKG4sdCl7cmV0dXJuIFJpKG4sRGko
Rmkobix0KVsyXSkpfWZ1bmN0aW9uIEZpKG4sdCl7bnVsbD09dCYmKHQ9MTApO3ZhciBlPUxpKG4p
LHI9ZVsxXS1lWzBdLHU9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhyL3QpL01hdGgu
TE4xMCkpLGk9dC9yKnU7cmV0dXJuLjE1Pj1pP3UqPTEwOi4zNT49aT91Kj01Oi43NT49aSYmKHUq
PTIpLGVbMF09TWF0aC5jZWlsKGVbMF0vdSkqdSxlWzFdPU1hdGguZmxvb3IoZVsxXS91KSp1Ky41
KnUsZVsyXT11LGV9ZnVuY3Rpb24gT2kobix0KXtyZXR1cm4gWm8ucmFuZ2UuYXBwbHkoWm8sRmko
bix0KSl9ZnVuY3Rpb24gWWkobix0LGUpe3ZhciByPUZpKG4sdCk7aWYoZSl7dmFyIHU9R2EuZXhl
YyhlKTtpZih1LnNoaWZ0KCksInMiPT09dVs4XSl7dmFyIGk9Wm8uZm9ybWF0UHJlZml4KE1hdGgu
bWF4KHVhKHJbMF0pLHVhKHJbMV0pKSk7cmV0dXJuIHVbN118fCh1WzddPSIuIitJaShpLnNjYWxl
KHJbMl0pKSksdVs4XT0iZiIsZT1aby5mb3JtYXQodS5qb2luKCIiKSksZnVuY3Rpb24obil7cmV0
dXJuIGUoaS5zY2FsZShuKSkraS5zeW1ib2x9fXVbN118fCh1WzddPSIuIitaaSh1WzhdLHIpKSxl
PXUuam9pbigiIil9ZWxzZSBlPSIsLiIrSWkoclsyXSkrImYiO3JldHVybiBaby5mb3JtYXQoZSl9
ZnVuY3Rpb24gSWkobil7cmV0dXJuLU1hdGguZmxvb3IoTWF0aC5sb2cobikvTWF0aC5MTjEwKy4w
MSl9ZnVuY3Rpb24gWmkobix0KXt2YXIgZT1JaSh0WzJdKTtyZXR1cm4gbiBpbiBscz9NYXRoLmFi
cyhlLUlpKE1hdGgubWF4KHVhKHRbMF0pLHVhKHRbMV0pKSkpKyArKCJlIiE9PW4pOmUtMiooIiUi
PT09bil9ZnVuY3Rpb24gVmkobix0LGUscil7ZnVuY3Rpb24gdShuKXtyZXR1cm4oZT9NYXRoLmxv
ZygwPm4/MDpuKTotTWF0aC5sb2cobj4wPzA6LW4pKS9NYXRoLmxvZyh0KX1mdW5jdGlvbiBpKG4p
e3JldHVybiBlP01hdGgucG93KHQsbik6LU1hdGgucG93KHQsLW4pfWZ1bmN0aW9uIG8odCl7cmV0
dXJuIG4odSh0KSl9cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBpKG4uaW52ZXJ0
KHQpKX0sby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dFsw
XT49MCxuLmRvbWFpbigocj10Lm1hcChOdW1iZXIpKS5tYXAodSkpLG8pOnJ9LG8uYmFzZT1mdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxuLmRvbWFpbihyLm1hcCh1KSks
byk6dH0sby5uaWNlPWZ1bmN0aW9uKCl7dmFyIHQ9Umkoci5tYXAodSksZT9NYXRoOmhzKTtyZXR1
cm4gbi5kb21haW4odCkscj10Lm1hcChpKSxvfSxvLnRpY2tzPWZ1bmN0aW9uKCl7dmFyIG49TGko
ciksbz1bXSxhPW5bMF0sYz1uWzFdLHM9TWF0aC5mbG9vcih1KGEpKSxsPU1hdGguY2VpbCh1KGMp
KSxmPXQlMT8yOnQ7aWYoaXNGaW5pdGUobC1zKSl7aWYoZSl7Zm9yKDtsPnM7cysrKWZvcih2YXIg
aD0xO2Y+aDtoKyspby5wdXNoKGkocykqaCk7by5wdXNoKGkocykpfWVsc2UgZm9yKG8ucHVzaChp
KHMpKTtzKys8bDspZm9yKHZhciBoPWYtMTtoPjA7aC0tKW8ucHVzaChpKHMpKmgpO2ZvcihzPTA7
b1tzXTxhO3MrKyk7Zm9yKGw9by5sZW5ndGg7b1tsLTFdPmM7bC0tKTtvPW8uc2xpY2UocyxsKX1y
ZXR1cm4gb30sby50aWNrRm9ybWF0PWZ1bmN0aW9uKG4sdCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgp
cmV0dXJuIGZzO2FyZ3VtZW50cy5sZW5ndGg8Mj90PWZzOiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYo
dD1aby5mb3JtYXQodCkpO3ZhciByLGE9TWF0aC5tYXgoLjEsbi9vLnRpY2tzKCkubGVuZ3RoKSxj
PWU/KHI9MWUtMTIsTWF0aC5jZWlsKToocj0tMWUtMTIsTWF0aC5mbG9vcik7cmV0dXJuIGZ1bmN0
aW9uKG4pe3JldHVybiBuL2koYyh1KG4pK3IpKTw9YT90KG4pOiIifX0sby5jb3B5PWZ1bmN0aW9u
KCl7cmV0dXJuIFZpKG4uY29weSgpLHQsZSxyKX0samkobyxuKX1mdW5jdGlvbiBYaShuLHQsZSl7
ZnVuY3Rpb24gcih0KXtyZXR1cm4gbih1KHQpKX12YXIgdT0kaSh0KSxpPSRpKDEvdCk7cmV0dXJu
IHIuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBpKG4uaW52ZXJ0KHQpKX0sci5kb21haW49ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4uZG9tYWluKChlPXQubWFwKE51bWJl
cikpLm1hcCh1KSkscik6ZX0sci50aWNrcz1mdW5jdGlvbihuKXtyZXR1cm4gT2koZSxuKX0sci50
aWNrRm9ybWF0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIFlpKGUsbix0KX0sci5uaWNlPWZ1bmN0aW9u
KG4pe3JldHVybiByLmRvbWFpbihIaShlLG4pKX0sci5leHBvbmVudD1mdW5jdGlvbihvKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8odT0kaSh0PW8pLGk9JGkoMS90KSxuLmRvbWFpbihlLm1hcCh1
KSkscik6dH0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFhpKG4uY29weSgpLHQsZSl9LGppKHIs
bil9ZnVuY3Rpb24gJGkobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAwPnQ/LU1hdGgucG93
KC10LG4pOk1hdGgucG93KHQsbil9fWZ1bmN0aW9uIEJpKG4sdCl7ZnVuY3Rpb24gZShlKXtyZXR1
cm4gaVsoKHUuZ2V0KGUpfHwoInJhbmdlIj09PXQudD91LnNldChlLG4ucHVzaChlKSk6MC8wKSkt
MSklaS5sZW5ndGhdfWZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gWm8ucmFuZ2Uobi5sZW5ndGgpLm1h
cChmdW5jdGlvbihuKXtyZXR1cm4gdCtlKm59KX12YXIgdSxpLGE7cmV0dXJuIGUuZG9tYWluPWZ1
bmN0aW9uKHIpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBuO249W10sdT1uZXcgbztmb3Io
dmFyIGksYT0tMSxjPXIubGVuZ3RoOysrYTxjOyl1LmhhcyhpPXJbYV0pfHx1LnNldChpLG4ucHVz
aChpKSk7cmV0dXJuIGVbdC50XS5hcHBseShlLHQuYSl9LGUucmFuZ2U9ZnVuY3Rpb24obil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bixhPTAsdD17dDoicmFuZ2UiLGE6YXJndW1lbnRzfSxl
KTppfSxlLnJhbmdlUG9pbnRzPWZ1bmN0aW9uKHUsbyl7YXJndW1lbnRzLmxlbmd0aDwyJiYobz0w
KTt2YXIgYz11WzBdLHM9dVsxXSxsPShzLWMpLyhNYXRoLm1heCgxLG4ubGVuZ3RoLTEpK28pO3Jl
dHVybiBpPXIobi5sZW5ndGg8Mj8oYytzKS8yOmMrbCpvLzIsbCksYT0wLHQ9e3Q6InJhbmdlUG9p
bnRzIixhOmFyZ3VtZW50c30sZX0sZS5yYW5nZUJhbmRzPWZ1bmN0aW9uKHUsbyxjKXthcmd1bWVu
dHMubGVuZ3RoPDImJihvPTApLGFyZ3VtZW50cy5sZW5ndGg8MyYmKGM9byk7dmFyIHM9dVsxXTx1
WzBdLGw9dVtzLTBdLGY9dVsxLXNdLGg9KGYtbCkvKG4ubGVuZ3RoLW8rMipjKTtyZXR1cm4gaT1y
KGwraCpjLGgpLHMmJmkucmV2ZXJzZSgpLGE9aCooMS1vKSx0PXt0OiJyYW5nZUJhbmRzIixhOmFy
Z3VtZW50c30sZX0sZS5yYW5nZVJvdW5kQmFuZHM9ZnVuY3Rpb24odSxvLGMpe2FyZ3VtZW50cy5s
ZW5ndGg8MiYmKG89MCksYXJndW1lbnRzLmxlbmd0aDwzJiYoYz1vKTt2YXIgcz11WzFdPHVbMF0s
bD11W3MtMF0sZj11WzEtc10saD1NYXRoLmZsb29yKChmLWwpLyhuLmxlbmd0aC1vKzIqYykpLGc9
Zi1sLShuLmxlbmd0aC1vKSpoO3JldHVybiBpPXIobCtNYXRoLnJvdW5kKGcvMiksaCkscyYmaS5y
ZXZlcnNlKCksYT1NYXRoLnJvdW5kKGgqKDEtbykpLHQ9e3Q6InJhbmdlUm91bmRCYW5kcyIsYTph
cmd1bWVudHN9LGV9LGUucmFuZ2VCYW5kPWZ1bmN0aW9uKCl7cmV0dXJuIGF9LGUucmFuZ2VFeHRl
bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gTGkodC5hWzBdKX0sZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJu
IEJpKG4sdCl9LGUuZG9tYWluKG4pfWZ1bmN0aW9uIFdpKGUscil7ZnVuY3Rpb24gdSgpe3ZhciBu
PTAsdD1yLmxlbmd0aDtmb3Iobz1bXTsrK248dDspb1tuLTFdPVpvLnF1YW50aWxlKGUsbi90KTty
ZXR1cm4gaX1mdW5jdGlvbiBpKG4pe3JldHVybiBpc05hTihuPStuKT92b2lkIDA6cltaby5iaXNl
Y3QobyxuKV19dmFyIG87cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhlPXIuZmlsdGVyKHQpLnNvcnQobiksdSgpKTplfSxpLnJhbmdlPWZ1bmN0aW9u
KG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdSgpKTpyfSxpLnF1YW50aWxlcz1mdW5j
dGlvbigpe3JldHVybiBvfSxpLmludmVydEV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4gbj1yLmlu
ZGV4T2YobiksMD5uP1swLzAsMC8wXTpbbj4wP29bbi0xXTplWzBdLG48by5sZW5ndGg/b1tuXTpl
W2UubGVuZ3RoLTFdXX0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFdpKGUscil9LHUoKX1mdW5j
dGlvbiBKaShuLHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZVtNYXRoLm1heCgwLE1hdGgubWlu
KG8sTWF0aC5mbG9vcihpKih0LW4pKSkpXX1mdW5jdGlvbiB1KCl7cmV0dXJuIGk9ZS5sZW5ndGgv
KHQtbiksbz1lLmxlbmd0aC0xLHJ9dmFyIGksbztyZXR1cm4gci5kb21haW49ZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K2VbMF0sdD0rZVtlLmxlbmd0aC0xXSx1KCkpOltu
LHRdfSxyLnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdSgp
KTplfSxyLmludmVydEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gdD1lLmluZGV4T2YodCksdD0w
PnQ/MC8wOnQvaStuLFt0LHQrMS9pXX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEppKG4sdCxl
KX0sdSgpfWZ1bmN0aW9uIEdpKG4sdCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZT49ZT90W1pvLmJp
c2VjdChuLGUpXTp2b2lkIDB9cmV0dXJuIGUuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhuPXQsZSk6bn0sZS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odD1uLGUpOnR9LGUuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKGUpe3JldHVybiBl
PXQuaW5kZXhPZihlKSxbbltlLTFdLG5bZV1dfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gR2ko
bix0KX0sZX1mdW5jdGlvbiBLaShuKXtmdW5jdGlvbiB0KG4pe3JldHVybitufXJldHVybiB0Lmlu
dmVydD10LHQuZG9tYWluPXQucmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KG49ZS5tYXAodCksdCk6bn0sdC50aWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gT2kobix0KX0s
dC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFlpKG4sdCxlKX0sdC5jb3B5PWZ1bmN0
aW9uKCl7cmV0dXJuIEtpKG4pfSx0fWZ1bmN0aW9uIFFpKG4pe3JldHVybiBuLmlubmVyUmFkaXVz
fWZ1bmN0aW9uIG5vKG4pe3JldHVybiBuLm91dGVyUmFkaXVzfWZ1bmN0aW9uIHRvKG4pe3JldHVy
biBuLnN0YXJ0QW5nbGV9ZnVuY3Rpb24gZW8obil7cmV0dXJuIG4uZW5kQW5nbGV9ZnVuY3Rpb24g
cm8obil7ZnVuY3Rpb24gdCh0KXtmdW5jdGlvbiBvKCl7cy5wdXNoKCJNIixpKG4obCksYSkpfWZv
cih2YXIgYyxzPVtdLGw9W10sZj0tMSxoPXQubGVuZ3RoLGc9YnQoZSkscD1idChyKTsrK2Y8aDsp
dS5jYWxsKHRoaXMsYz10W2ZdLGYpP2wucHVzaChbK2cuY2FsbCh0aGlzLGMsZiksK3AuY2FsbCh0
aGlzLGMsZildKTpsLmxlbmd0aCYmKG8oKSxsPVtdKTtyZXR1cm4gbC5sZW5ndGgmJm8oKSxzLmxl
bmd0aD9zLmpvaW4oIiIpOm51bGx9dmFyIGU9d3Iscj1Tcix1PXdlLGk9dW8sbz1pLmtleSxhPS43
O3JldHVybiB0Lng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bix0KTpl
fSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bix0KTpyfSx0LmRl
ZmluZWQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bix0KTp1fSx0Lmlu
dGVycG9sYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlv
biI9PXR5cGVvZiBuP2k9bjooaT14cy5nZXQobil8fHVvKS5rZXksdCk6b30sdC50ZW5zaW9uPWZ1
bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPW4sdCk6YX0sdH1mdW5jdGlvbiB1
byhuKXtyZXR1cm4gbi5qb2luKCJMIil9ZnVuY3Rpb24gaW8obil7cmV0dXJuIHVvKG4pKyJaIn1m
dW5jdGlvbiBvbyhuKXtmb3IodmFyIHQ9MCxlPW4ubGVuZ3RoLHI9blswXSx1PVtyWzBdLCIsIixy
WzFdXTsrK3Q8ZTspdS5wdXNoKCJIIiwoclswXSsocj1uW3RdKVswXSkvMiwiViIsclsxXSk7cmV0
dXJuIGU+MSYmdS5wdXNoKCJIIixyWzBdKSx1LmpvaW4oIiIpfWZ1bmN0aW9uIGFvKG4pe2Zvcih2
YXIgdD0wLGU9bi5sZW5ndGgscj1uWzBdLHU9W3JbMF0sIiwiLHJbMV1dOysrdDxlOyl1LnB1c2go
IlYiLChyPW5bdF0pWzFdLCJIIixyWzBdKTtyZXR1cm4gdS5qb2luKCIiKX1mdW5jdGlvbiBjbyhu
KXtmb3IodmFyIHQ9MCxlPW4ubGVuZ3RoLHI9blswXSx1PVtyWzBdLCIsIixyWzFdXTsrK3Q8ZTsp
dS5wdXNoKCJIIiwocj1uW3RdKVswXSwiViIsclsxXSk7cmV0dXJuIHUuam9pbigiIil9ZnVuY3Rp
b24gc28obix0KXtyZXR1cm4gbi5sZW5ndGg8ND91byhuKTpuWzFdK2hvKG4uc2xpY2UoMSxuLmxl
bmd0aC0xKSxnbyhuLHQpKX1mdW5jdGlvbiBsbyhuLHQpe3JldHVybiBuLmxlbmd0aDwzP3VvKG4p
Om5bMF0raG8oKG4ucHVzaChuWzBdKSxuKSxnbyhbbltuLmxlbmd0aC0yXV0uY29uY2F0KG4sW25b
MV1dKSx0KSl9ZnVuY3Rpb24gZm8obix0KXtyZXR1cm4gbi5sZW5ndGg8Mz91byhuKTpuWzBdK2hv
KG4sZ28obix0KSl9ZnVuY3Rpb24gaG8obix0KXtpZih0Lmxlbmd0aDwxfHxuLmxlbmd0aCE9dC5s
ZW5ndGgmJm4ubGVuZ3RoIT10Lmxlbmd0aCsyKXJldHVybiB1byhuKTt2YXIgZT1uLmxlbmd0aCE9
dC5sZW5ndGgscj0iIix1PW5bMF0saT1uWzFdLG89dFswXSxhPW8sYz0xO2lmKGUmJihyKz0iUSIr
KGlbMF0tMipvWzBdLzMpKyIsIisoaVsxXS0yKm9bMV0vMykrIiwiK2lbMF0rIiwiK2lbMV0sdT1u
WzFdLGM9MiksdC5sZW5ndGg+MSl7YT10WzFdLGk9bltjXSxjKysscis9IkMiKyh1WzBdK29bMF0p
KyIsIisodVsxXStvWzFdKSsiLCIrKGlbMF0tYVswXSkrIiwiKyhpWzFdLWFbMV0pKyIsIitpWzBd
KyIsIitpWzFdO2Zvcih2YXIgcz0yO3M8dC5sZW5ndGg7cysrLGMrKylpPW5bY10sYT10W3NdLHIr
PSJTIisoaVswXS1hWzBdKSsiLCIrKGlbMV0tYVsxXSkrIiwiK2lbMF0rIiwiK2lbMV19aWYoZSl7
dmFyIGw9bltjXTtyKz0iUSIrKGlbMF0rMiphWzBdLzMpKyIsIisoaVsxXSsyKmFbMV0vMykrIiwi
K2xbMF0rIiwiK2xbMV19cmV0dXJuIHJ9ZnVuY3Rpb24gZ28obix0KXtmb3IodmFyIGUscj1bXSx1
PSgxLXQpLzIsaT1uWzBdLG89blsxXSxhPTEsYz1uLmxlbmd0aDsrK2E8YzspZT1pLGk9byxvPW5b
YV0sci5wdXNoKFt1KihvWzBdLWVbMF0pLHUqKG9bMV0tZVsxXSldKTtyZXR1cm4gcn1mdW5jdGlv
biBwbyhuKXtpZihuLmxlbmd0aDwzKXJldHVybiB1byhuKTt2YXIgdD0xLGU9bi5sZW5ndGgscj1u
WzBdLHU9clswXSxpPXJbMV0sbz1bdSx1LHUsKHI9blsxXSlbMF1dLGE9W2ksaSxpLHJbMV1dLGM9
W3UsIiwiLGksIkwiLHhvKGJzLG8pLCIsIix4byhicyxhKV07Zm9yKG4ucHVzaChuW2UtMV0pOysr
dDw9ZTspcj1uW3RdLG8uc2hpZnQoKSxvLnB1c2goclswXSksYS5zaGlmdCgpLGEucHVzaChyWzFd
KSxNbyhjLG8sYSk7cmV0dXJuIG4ucG9wKCksYy5wdXNoKCJMIixyKSxjLmpvaW4oIiIpfWZ1bmN0
aW9uIHZvKG4pe2lmKG4ubGVuZ3RoPDQpcmV0dXJuIHVvKG4pO2Zvcih2YXIgdCxlPVtdLHI9LTEs
dT1uLmxlbmd0aCxpPVswXSxvPVswXTsrK3I8MzspdD1uW3JdLGkucHVzaCh0WzBdKSxvLnB1c2go
dFsxXSk7Zm9yKGUucHVzaCh4byhicyxpKSsiLCIreG8oYnMsbykpLC0tcjsrK3I8dTspdD1uW3Jd
LGkuc2hpZnQoKSxpLnB1c2godFswXSksby5zaGlmdCgpLG8ucHVzaCh0WzFdKSxNbyhlLGksbyk7
cmV0dXJuIGUuam9pbigiIil9ZnVuY3Rpb24gbW8obil7Zm9yKHZhciB0LGUscj0tMSx1PW4ubGVu
Z3RoLGk9dSs0LG89W10sYT1bXTsrK3I8NDspZT1uW3IldV0sby5wdXNoKGVbMF0pLGEucHVzaChl
WzFdKTtmb3IodD1beG8oYnMsbyksIiwiLHhvKGJzLGEpXSwtLXI7KytyPGk7KWU9bltyJXVdLG8u
c2hpZnQoKSxvLnB1c2goZVswXSksYS5zaGlmdCgpLGEucHVzaChlWzFdKSxNbyh0LG8sYSk7cmV0
dXJuIHQuam9pbigiIil9ZnVuY3Rpb24geW8obix0KXt2YXIgZT1uLmxlbmd0aC0xO2lmKGUpZm9y
KHZhciByLHUsaT1uWzBdWzBdLG89blswXVsxXSxhPW5bZV1bMF0taSxjPW5bZV1bMV0tbyxzPS0x
Oysrczw9ZTspcj1uW3NdLHU9cy9lLHJbMF09dCpyWzBdKygxLXQpKihpK3UqYSksclsxXT10KnJb
MV0rKDEtdCkqKG8rdSpjKTtyZXR1cm4gcG8obil9ZnVuY3Rpb24geG8obix0KXtyZXR1cm4gblsw
XSp0WzBdK25bMV0qdFsxXStuWzJdKnRbMl0rblszXSp0WzNdfWZ1bmN0aW9uIE1vKG4sdCxlKXtu
LnB1c2goIkMiLHhvKE1zLHQpLCIsIix4byhNcyxlKSwiLCIseG8oX3MsdCksIiwiLHhvKF9zLGUp
LCIsIix4byhicyx0KSwiLCIseG8oYnMsZSkpfWZ1bmN0aW9uIF9vKG4sdCl7cmV0dXJuKHRbMV0t
blsxXSkvKHRbMF0tblswXSl9ZnVuY3Rpb24gYm8obil7Zm9yKHZhciB0PTAsZT1uLmxlbmd0aC0x
LHI9W10sdT1uWzBdLGk9blsxXSxvPXJbMF09X28odSxpKTsrK3Q8ZTspclt0XT0obysobz1fbyh1
PWksaT1uW3QrMV0pKSkvMjtyZXR1cm4gclt0XT1vLHJ9ZnVuY3Rpb24gd28obil7Zm9yKHZhciB0
LGUscix1LGk9W10sbz1ibyhuKSxhPS0xLGM9bi5sZW5ndGgtMTsrK2E8YzspdD1fbyhuW2FdLG5b
YSsxXSksdWEodCk8a2E/b1thXT1vW2ErMV09MDooZT1vW2FdL3Qscj1vW2ErMV0vdCx1PWUqZSty
KnIsdT45JiYodT0zKnQvTWF0aC5zcXJ0KHUpLG9bYV09dSplLG9bYSsxXT11KnIpKTtmb3IoYT0t
MTsrK2E8PWM7KXU9KG5bTWF0aC5taW4oYyxhKzEpXVswXS1uW01hdGgubWF4KDAsYS0xKV1bMF0p
Lyg2KigxK29bYV0qb1thXSkpLGkucHVzaChbdXx8MCxvW2FdKnV8fDBdKTtyZXR1cm4gaX1mdW5j
dGlvbiBTbyhuKXtyZXR1cm4gbi5sZW5ndGg8Mz91byhuKTpuWzBdK2hvKG4sd28obikpfWZ1bmN0
aW9uIGtvKG4pe2Zvcih2YXIgdCxlLHIsdT0tMSxpPW4ubGVuZ3RoOysrdTxpOyl0PW5bdV0sZT10
WzBdLHI9dFsxXSttcyx0WzBdPWUqTWF0aC5jb3MociksdFsxXT1lKk1hdGguc2luKHIpO3JldHVy
biBufWZ1bmN0aW9uIEVvKG4pe2Z1bmN0aW9uIHQodCl7ZnVuY3Rpb24gYygpe3YucHVzaCgiTSIs
YShuKG0pLGYpLGwscyhuKGQucmV2ZXJzZSgpKSxmKSwiWiIpfWZvcih2YXIgaCxnLHAsdj1bXSxk
PVtdLG09W10seT0tMSx4PXQubGVuZ3RoLE09YnQoZSksXz1idCh1KSxiPWU9PT1yP2Z1bmN0aW9u
KCl7cmV0dXJuIGd9OmJ0KHIpLHc9dT09PWk/ZnVuY3Rpb24oKXtyZXR1cm4gcH06YnQoaSk7Kyt5
PHg7KW8uY2FsbCh0aGlzLGg9dFt5XSx5KT8oZC5wdXNoKFtnPStNLmNhbGwodGhpcyxoLHkpLHA9
K18uY2FsbCh0aGlzLGgseSldKSxtLnB1c2goWytiLmNhbGwodGhpcyxoLHkpLCt3LmNhbGwodGhp
cyxoLHkpXSkpOmQubGVuZ3RoJiYoYygpLGQ9W10sbT1bXSk7cmV0dXJuIGQubGVuZ3RoJiZjKCks
di5sZW5ndGg/di5qb2luKCIiKTpudWxsfXZhciBlPXdyLHI9d3IsdT0wLGk9U3Isbz13ZSxhPXVv
LGM9YS5rZXkscz1hLGw9IkwiLGY9Ljc7cmV0dXJuIHQueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oZT1yPW4sdCk6cn0sdC54MD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oZT1uLHQpOmV9LHQueDE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHI9bix0KTpyfSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHU9aT1uLHQpOml9LHQueTA9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9
bix0KTp1fSx0LnkxPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW4sdCk6
aX0sdC5kZWZpbmVkPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPW4sdCk6
b30sdC5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0i
ZnVuY3Rpb24iPT10eXBlb2Ygbj9hPW46KGE9eHMuZ2V0KG4pfHx1bykua2V5LHM9YS5yZXZlcnNl
fHxhLGw9YS5jbG9zZWQ/Ik0iOiJMIix0KTpjfSx0LnRlbnNpb249ZnVuY3Rpb24obil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGY9bix0KTpmfSx0fWZ1bmN0aW9uIEFvKG4pe3JldHVybiBuLnJh
ZGl1c31mdW5jdGlvbiBDbyhuKXtyZXR1cm5bbi54LG4ueV19ZnVuY3Rpb24gTm8obil7cmV0dXJu
IGZ1bmN0aW9uKCl7dmFyIHQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksZT10WzBdLHI9dFsxXStt
cztyZXR1cm5bZSpNYXRoLmNvcyhyKSxlKk1hdGguc2luKHIpXX19ZnVuY3Rpb24gem8oKXtyZXR1
cm4gNjR9ZnVuY3Rpb24gTG8oKXtyZXR1cm4iY2lyY2xlIn1mdW5jdGlvbiBUbyhuKXt2YXIgdD1N
YXRoLnNxcnQobi9iYSk7cmV0dXJuIk0wLCIrdCsiQSIrdCsiLCIrdCsiIDAgMSwxIDAsIistdCsi
QSIrdCsiLCIrdCsiIDAgMSwxIDAsIit0KyJaIn1mdW5jdGlvbiBxbyhuLHQpe3JldHVybiBzYShu
LENzKSxuLmlkPXQsbn1mdW5jdGlvbiBSbyhuLHQsZSxyKXt2YXIgdT1uLmlkO3JldHVybiBQKG4s
ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZnVuY3Rpb24obixpLG8pe24uX190cmFuc2l0aW9uX19bdV0u
dHdlZW4uc2V0KHQscihlLmNhbGwobixuLl9fZGF0YV9fLGksbykpKX06KGU9cihlKSxmdW5jdGlv
bihuKXtuLl9fdHJhbnNpdGlvbl9fW3VdLnR3ZWVuLnNldCh0LGUpfSkpfWZ1bmN0aW9uIERvKG4p
e3JldHVybiBudWxsPT1uJiYobj0iIiksZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PW59fWZ1
bmN0aW9uIFBvKG4sdCxlLHIpe3ZhciB1PW4uX190cmFuc2l0aW9uX198fChuLl9fdHJhbnNpdGlv
bl9fPXthY3RpdmU6MCxjb3VudDowfSksaT11W2VdO2lmKCFpKXt2YXIgYT1yLnRpbWU7aT11W2Vd
PXt0d2VlbjpuZXcgbyx0aW1lOmEsZWFzZTpyLmVhc2UsZGVsYXk6ci5kZWxheSxkdXJhdGlvbjpy
LmR1cmF0aW9ufSwrK3UuY291bnQsWm8udGltZXIoZnVuY3Rpb24ocil7ZnVuY3Rpb24gbyhyKXty
ZXR1cm4gdS5hY3RpdmU+ZT9zKCk6KHUuYWN0aXZlPWUsaS5ldmVudCYmaS5ldmVudC5zdGFydC5j
YWxsKG4sbCx0KSxpLnR3ZWVuLmZvckVhY2goZnVuY3Rpb24oZSxyKXsocj1yLmNhbGwobixsLHQp
KSYmdi5wdXNoKHIpfSksWm8udGltZXIoZnVuY3Rpb24oKXtyZXR1cm4gcC5jPWMocnx8MSk/d2U6
YywxfSwwLGEpLHZvaWQgMCl9ZnVuY3Rpb24gYyhyKXtpZih1LmFjdGl2ZSE9PWUpcmV0dXJuIHMo
KTtmb3IodmFyIG89ci9nLGE9ZihvKSxjPXYubGVuZ3RoO2M+MDspdlstLWNdLmNhbGwobixhKTsK
K3JldHVybiBvPj0xPyhpLmV2ZW50JiZpLmV2ZW50LmVuZC5jYWxsKG4sbCx0KSxzKCkpOnZvaWQg
MH1mdW5jdGlvbiBzKCl7cmV0dXJuLS11LmNvdW50P2RlbGV0ZSB1W2VdOmRlbGV0ZSBuLl9fdHJh
bnNpdGlvbl9fLDF9dmFyIGw9bi5fX2RhdGFfXyxmPWkuZWFzZSxoPWkuZGVsYXksZz1pLmR1cmF0
aW9uLHA9QmEsdj1bXTtyZXR1cm4gcC50PWgrYSxyPj1oP28oci1oKToocC5jPW8sdm9pZCAwKX0s
MCxhKX19ZnVuY3Rpb24gVW8obix0KXtuLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24obil7cmV0
dXJuInRyYW5zbGF0ZSgiK3QobikrIiwwKSJ9KX1mdW5jdGlvbiBqbyhuLHQpe24uYXR0cigidHJh
bnNmb3JtIixmdW5jdGlvbihuKXtyZXR1cm4idHJhbnNsYXRlKDAsIit0KG4pKyIpIn0pfWZ1bmN0
aW9uIEhvKG4pe3JldHVybiBuLnRvSVNPU3RyaW5nKCl9ZnVuY3Rpb24gRm8obix0LGUpe2Z1bmN0
aW9uIHIodCl7cmV0dXJuIG4odCl9ZnVuY3Rpb24gdShuLGUpe3ZhciByPW5bMV0tblswXSx1PXIv
ZSxpPVpvLmJpc2VjdChVcyx1KTtyZXR1cm4gaT09VXMubGVuZ3RoP1t0LnllYXIsRmkobi5tYXAo
ZnVuY3Rpb24obil7cmV0dXJuIG4vMzE1MzZlNn0pLGUpWzJdXTppP3RbdS9Vc1tpLTFdPFVzW2ld
L3U/aS0xOmldOltGcyxGaShuLGUpWzJdXX1yZXR1cm4gci5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0
dXJuIE9vKG4uaW52ZXJ0KHQpKX0sci5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG4uZG9tYWluKHQpLHIpOm4uZG9tYWluKCkubWFwKE9vKX0sci5uaWNlPWZ1bmN0
aW9uKG4sdCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4haXNOYU4oZSkmJiFuLnJhbmdlKGUsT28oK2Ur
MSksdCkubGVuZ3RofXZhciBpPXIuZG9tYWluKCksbz1MaShpKSxhPW51bGw9PW4/dShvLDEwKToi
bnVtYmVyIj09dHlwZW9mIG4mJnUobyxuKTtyZXR1cm4gYSYmKG49YVswXSx0PWFbMV0pLHIuZG9t
YWluKFJpKGksdD4xP3tmbG9vcjpmdW5jdGlvbih0KXtmb3IoO2UodD1uLmZsb29yKHQpKTspdD1P
byh0LTEpO3JldHVybiB0fSxjZWlsOmZ1bmN0aW9uKHQpe2Zvcig7ZSh0PW4uY2VpbCh0KSk7KXQ9
T28oK3QrMSk7cmV0dXJuIHR9fTpuKSl9LHIudGlja3M9ZnVuY3Rpb24obix0KXt2YXIgZT1MaShy
LmRvbWFpbigpKSxpPW51bGw9PW4/dShlLDEwKToibnVtYmVyIj09dHlwZW9mIG4/dShlLG4pOiFu
LnJhbmdlJiZbe3JhbmdlOm59LHRdO3JldHVybiBpJiYobj1pWzBdLHQ9aVsxXSksbi5yYW5nZShl
WzBdLE9vKCtlWzFdKzEpLDE+dD8xOnQpfSxyLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm4g
ZX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEZvKG4uY29weSgpLHQsZSl9LGppKHIsbil9ZnVu
Y3Rpb24gT28obil7cmV0dXJuIG5ldyBEYXRlKG4pfWZ1bmN0aW9uIFlvKG4pe3JldHVybiBKU09O
LnBhcnNlKG4ucmVzcG9uc2VUZXh0KX1mdW5jdGlvbiBJbyhuKXt2YXIgdD0kby5jcmVhdGVSYW5n
ZSgpO3JldHVybiB0LnNlbGVjdE5vZGUoJG8uYm9keSksdC5jcmVhdGVDb250ZXh0dWFsRnJhZ21l
bnQobi5yZXNwb25zZVRleHQpfXZhciBabz17dmVyc2lvbjoiMy40LjExIn07RGF0ZS5ub3d8fChE
YXRlLm5vdz1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0pO3ZhciBWbz1bXS5zbGljZSxYbz1m
dW5jdGlvbihuKXtyZXR1cm4gVm8uY2FsbChuKX0sJG89ZG9jdW1lbnQsQm89JG8uZG9jdW1lbnRF
bGVtZW50LFdvPXdpbmRvdzt0cnl7WG8oQm8uY2hpbGROb2RlcylbMF0ubm9kZVR5cGV9Y2F0Y2go
Sm8pe1hvPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1uLmxlbmd0aCxlPW5ldyBBcnJheSh0KTt0LS07
KWVbdF09blt0XTtyZXR1cm4gZX19dHJ5eyRvLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLnNl
dFByb3BlcnR5KCJvcGFjaXR5IiwwLCIiKX1jYXRjaChHbyl7dmFyIEtvPVdvLkVsZW1lbnQucHJv
dG90eXBlLFFvPUtvLnNldEF0dHJpYnV0ZSxuYT1Lby5zZXRBdHRyaWJ1dGVOUyx0YT1Xby5DU1NT
dHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSxlYT10YS5zZXRQcm9wZXJ0eTtLby5zZXRBdHRyaWJ1
dGU9ZnVuY3Rpb24obix0KXtRby5jYWxsKHRoaXMsbix0KyIiKX0sS28uc2V0QXR0cmlidXRlTlM9
ZnVuY3Rpb24obix0LGUpe25hLmNhbGwodGhpcyxuLHQsZSsiIil9LHRhLnNldFByb3BlcnR5PWZ1
bmN0aW9uKG4sdCxlKXtlYS5jYWxsKHRoaXMsbix0KyIiLGUpfX1aby5hc2NlbmRpbmc9bixaby5k
ZXNjZW5kaW5nPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4+dD8tMTp0Pm4/MTp0Pj1uPzA6MC8wfSxa
by5taW49ZnVuY3Rpb24obix0KXt2YXIgZSxyLHU9LTEsaT1uLmxlbmd0aDtpZigxPT09YXJndW1l
bnRzLmxlbmd0aCl7Zm9yKDsrK3U8aSYmIShudWxsIT0oZT1uW3VdKSYmZT49ZSk7KWU9dm9pZCAw
O2Zvcig7Kyt1PGk7KW51bGwhPShyPW5bdV0pJiZlPnImJihlPXIpfWVsc2V7Zm9yKDsrK3U8aSYm
IShudWxsIT0oZT10LmNhbGwobixuW3VdLHUpKSYmZT49ZSk7KWU9dm9pZCAwO2Zvcig7Kyt1PGk7
KW51bGwhPShyPXQuY2FsbChuLG5bdV0sdSkpJiZlPnImJihlPXIpfXJldHVybiBlfSxaby5tYXg9
ZnVuY3Rpb24obix0KXt2YXIgZSxyLHU9LTEsaT1uLmxlbmd0aDtpZigxPT09YXJndW1lbnRzLmxl
bmd0aCl7Zm9yKDsrK3U8aSYmIShudWxsIT0oZT1uW3VdKSYmZT49ZSk7KWU9dm9pZCAwO2Zvcig7
Kyt1PGk7KW51bGwhPShyPW5bdV0pJiZyPmUmJihlPXIpfWVsc2V7Zm9yKDsrK3U8aSYmIShudWxs
IT0oZT10LmNhbGwobixuW3VdLHUpKSYmZT49ZSk7KWU9dm9pZCAwO2Zvcig7Kyt1PGk7KW51bGwh
PShyPXQuY2FsbChuLG5bdV0sdSkpJiZyPmUmJihlPXIpfXJldHVybiBlfSxaby5leHRlbnQ9ZnVu
Y3Rpb24obix0KXt2YXIgZSxyLHUsaT0tMSxvPW4ubGVuZ3RoO2lmKDE9PT1hcmd1bWVudHMubGVu
Z3RoKXtmb3IoOysraTxvJiYhKG51bGwhPShlPXU9bltpXSkmJmU+PWUpOyllPXU9dm9pZCAwO2Zv
cig7KytpPG87KW51bGwhPShyPW5baV0pJiYoZT5yJiYoZT1yKSxyPnUmJih1PXIpKX1lbHNle2Zv
cig7KytpPG8mJiEobnVsbCE9KGU9dT10LmNhbGwobixuW2ldLGkpKSYmZT49ZSk7KWU9dm9pZCAw
O2Zvcig7KytpPG87KW51bGwhPShyPXQuY2FsbChuLG5baV0saSkpJiYoZT5yJiYoZT1yKSxyPnUm
Jih1PXIpKX1yZXR1cm5bZSx1XX0sWm8uc3VtPWZ1bmN0aW9uKG4sdCl7dmFyIGUscj0wLHU9bi5s
ZW5ndGgsaT0tMTtpZigxPT09YXJndW1lbnRzLmxlbmd0aClmb3IoOysraTx1Oylpc05hTihlPStu
W2ldKXx8KHIrPWUpO2Vsc2UgZm9yKDsrK2k8dTspaXNOYU4oZT0rdC5jYWxsKG4sbltpXSxpKSl8
fChyKz1lKTtyZXR1cm4gcn0sWm8ubWVhbj1mdW5jdGlvbihuLGUpe3ZhciByLHU9MCxpPW4ubGVu
Z3RoLG89LTEsYT1pO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7KytvPGk7KXQocj1uW29d
KT91Kz1yOi0tYTtlbHNlIGZvcig7KytvPGk7KXQocj1lLmNhbGwobixuW29dLG8pKT91Kz1yOi0t
YTtyZXR1cm4gYT91L2E6dm9pZCAwfSxaby5xdWFudGlsZT1mdW5jdGlvbihuLHQpe3ZhciBlPShu
Lmxlbmd0aC0xKSp0KzEscj1NYXRoLmZsb29yKGUpLHU9K25bci0xXSxpPWUtcjtyZXR1cm4gaT91
K2kqKG5bcl0tdSk6dX0sWm8ubWVkaWFuPWZ1bmN0aW9uKGUscil7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg+MSYmKGU9ZS5tYXAocikpLGU9ZS5maWx0ZXIodCksZS5sZW5ndGg/Wm8ucXVhbnRpbGUo
ZS5zb3J0KG4pLC41KTp2b2lkIDB9O3ZhciByYT1lKG4pO1pvLmJpc2VjdExlZnQ9cmEubGVmdCxa
by5iaXNlY3Q9Wm8uYmlzZWN0UmlnaHQ9cmEucmlnaHQsWm8uYmlzZWN0b3I9ZnVuY3Rpb24odCl7
cmV0dXJuIGUoMT09PXQubGVuZ3RoP2Z1bmN0aW9uKGUscil7cmV0dXJuIG4odChlKSxyKX06dCl9
LFpvLnNodWZmbGU9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGUscj1uLmxlbmd0aDtyOyllPTB8TWF0
aC5yYW5kb20oKSpyLS0sdD1uW3JdLG5bcl09bltlXSxuW2VdPXQ7cmV0dXJuIG59LFpvLnBlcm11
dGU9ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1uZXcgQXJyYXkoZSk7ZS0tOyly
W2VdPW5bdFtlXV07cmV0dXJuIHJ9LFpvLnBhaXJzPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxlPTAs
cj1uLmxlbmd0aC0xLHU9blswXSxpPW5ldyBBcnJheSgwPnI/MDpyKTtyPmU7KWlbZV09W3Q9dSx1
PW5bKytlXV07cmV0dXJuIGl9LFpvLnppcD1mdW5jdGlvbigpe2lmKCEodT1hcmd1bWVudHMubGVu
Z3RoKSlyZXR1cm5bXTtmb3IodmFyIG49LTEsdD1aby5taW4oYXJndW1lbnRzLHIpLGU9bmV3IEFy
cmF5KHQpOysrbjx0Oylmb3IodmFyIHUsaT0tMSxvPWVbbl09bmV3IEFycmF5KHUpOysraTx1Oylv
W2ldPWFyZ3VtZW50c1tpXVtuXTtyZXR1cm4gZX0sWm8udHJhbnNwb3NlPWZ1bmN0aW9uKG4pe3Jl
dHVybiBaby56aXAuYXBwbHkoWm8sbil9LFpvLmtleXM9ZnVuY3Rpb24obil7dmFyIHQ9W107Zm9y
KHZhciBlIGluIG4pdC5wdXNoKGUpO3JldHVybiB0fSxaby52YWx1ZXM9ZnVuY3Rpb24obil7dmFy
IHQ9W107Zm9yKHZhciBlIGluIG4pdC5wdXNoKG5bZV0pO3JldHVybiB0fSxaby5lbnRyaWVzPWZ1
bmN0aW9uKG4pe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiBuKXQucHVzaCh7a2V5OmUsdmFsdWU6bltl
XX0pO3JldHVybiB0fSxaby5tZXJnZT1mdW5jdGlvbihuKXtmb3IodmFyIHQsZSxyLHU9bi5sZW5n
dGgsaT0tMSxvPTA7KytpPHU7KW8rPW5baV0ubGVuZ3RoO2ZvcihlPW5ldyBBcnJheShvKTstLXU+
PTA7KWZvcihyPW5bdV0sdD1yLmxlbmd0aDstLXQ+PTA7KWVbLS1vXT1yW3RdO3JldHVybiBlfTt2
YXIgdWE9TWF0aC5hYnM7Wm8ucmFuZ2U9ZnVuY3Rpb24obix0LGUpe2lmKGFyZ3VtZW50cy5sZW5n
dGg8MyYmKGU9MSxhcmd1bWVudHMubGVuZ3RoPDImJih0PW4sbj0wKSksMS8wPT09KHQtbikvZSl0
aHJvdyBuZXcgRXJyb3IoImluZmluaXRlIHJhbmdlIik7dmFyIHIsaT1bXSxvPXUodWEoZSkpLGE9
LTE7aWYobio9byx0Kj1vLGUqPW8sMD5lKWZvcig7KHI9bitlKisrYSk+dDspaS5wdXNoKHIvbyk7
ZWxzZSBmb3IoOyhyPW4rZSorK2EpPHQ7KWkucHVzaChyL28pO3JldHVybiBpfSxaby5tYXA9ZnVu
Y3Rpb24obil7dmFyIHQ9bmV3IG87aWYobiBpbnN0YW5jZW9mIG8pbi5mb3JFYWNoKGZ1bmN0aW9u
KG4sZSl7dC5zZXQobixlKX0pO2Vsc2UgZm9yKHZhciBlIGluIG4pdC5zZXQoZSxuW2VdKTtyZXR1
cm4gdH0saShvLHtoYXM6YSxnZXQ6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXNbaWErbl19LHNldDpm
dW5jdGlvbihuLHQpe3JldHVybiB0aGlzW2lhK25dPXR9LHJlbW92ZTpjLGtleXM6cyx2YWx1ZXM6
ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7bi5w
dXNoKGUpfSksbn0sZW50cmllczpmdW5jdGlvbigpe3ZhciBuPVtdO3JldHVybiB0aGlzLmZvckVh
Y2goZnVuY3Rpb24odCxlKXtuLnB1c2goe2tleTp0LHZhbHVlOmV9KX0pLG59LHNpemU6bCxlbXB0
eTpmLGZvckVhY2g6ZnVuY3Rpb24obil7Zm9yKHZhciB0IGluIHRoaXMpdC5jaGFyQ29kZUF0KDAp
PT09b2EmJm4uY2FsbCh0aGlzLHQuc3Vic3RyaW5nKDEpLHRoaXNbdF0pfX0pO3ZhciBpYT0iXHgw
MCIsb2E9aWEuY2hhckNvZGVBdCgwKTtaby5uZXN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0LGEs
Yyl7aWYoYz49aS5sZW5ndGgpcmV0dXJuIHI/ci5jYWxsKHUsYSk6ZT9hLnNvcnQoZSk6YTtmb3Io
dmFyIHMsbCxmLGgsZz0tMSxwPWEubGVuZ3RoLHY9aVtjKytdLGQ9bmV3IG87KytnPHA7KShoPWQu
Z2V0KHM9dihsPWFbZ10pKSk/aC5wdXNoKGwpOmQuc2V0KHMsW2xdKTtyZXR1cm4gdD8obD10KCks
Zj1mdW5jdGlvbihlLHIpe2wuc2V0KGUsbih0LHIsYykpfSk6KGw9e30sZj1mdW5jdGlvbihlLHIp
e2xbZV09bih0LHIsYyl9KSxkLmZvckVhY2goZiksbH1mdW5jdGlvbiB0KG4sZSl7aWYoZT49aS5s
ZW5ndGgpcmV0dXJuIG47dmFyIHI9W10sdT1hW2UrK107cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlv
bihuLHUpe3IucHVzaCh7a2V5Om4sdmFsdWVzOnQodSxlKX0pfSksdT9yLnNvcnQoZnVuY3Rpb24o
bix0KXtyZXR1cm4gdShuLmtleSx0LmtleSl9KTpyfXZhciBlLHIsdT17fSxpPVtdLGE9W107cmV0
dXJuIHUubWFwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oZSx0LDApfSx1LmVudHJpZXM9ZnVuY3Rp
b24oZSl7cmV0dXJuIHQobihaby5tYXAsZSwwKSwwKX0sdS5rZXk9ZnVuY3Rpb24obil7cmV0dXJu
IGkucHVzaChuKSx1fSx1LnNvcnRLZXlzPWZ1bmN0aW9uKG4pe3JldHVybiBhW2kubGVuZ3RoLTFd
PW4sdX0sdS5zb3J0VmFsdWVzPWZ1bmN0aW9uKG4pe3JldHVybiBlPW4sdX0sdS5yb2xsdXA9ZnVu
Y3Rpb24obil7cmV0dXJuIHI9bix1fSx1fSxaby5zZXQ9ZnVuY3Rpb24obil7dmFyIHQ9bmV3IGg7
aWYobilmb3IodmFyIGU9MCxyPW4ubGVuZ3RoO3I+ZTsrK2UpdC5hZGQobltlXSk7cmV0dXJuIHR9
LGkoaCx7aGFzOmEsYWRkOmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzW2lhK25dPSEwLG59LHJlbW92
ZTpmdW5jdGlvbihuKXtyZXR1cm4gbj1pYStuLG4gaW4gdGhpcyYmZGVsZXRlIHRoaXNbbl19LHZh
bHVlczpzLHNpemU6bCxlbXB0eTpmLGZvckVhY2g6ZnVuY3Rpb24obil7Zm9yKHZhciB0IGluIHRo
aXMpdC5jaGFyQ29kZUF0KDApPT09b2EmJm4uY2FsbCh0aGlzLHQuc3Vic3RyaW5nKDEpKX19KSxa
by5iZWhhdmlvcj17fSxaby5yZWJpbmQ9ZnVuY3Rpb24obix0KXtmb3IodmFyIGUscj0xLHU9YXJn
dW1lbnRzLmxlbmd0aDsrK3I8dTspbltlPWFyZ3VtZW50c1tyXV09ZyhuLHQsdFtlXSk7cmV0dXJu
IG59O3ZhciBhYT1bIndlYmtpdCIsIm1zIiwibW96IiwiTW96IiwibyIsIk8iXTtaby5kaXNwYXRj
aD1mdW5jdGlvbigpe2Zvcih2YXIgbj1uZXcgZCx0PS0xLGU9YXJndW1lbnRzLmxlbmd0aDsrK3Q8
ZTspblthcmd1bWVudHNbdF1dPW0obik7cmV0dXJuIG59LGQucHJvdG90eXBlLm9uPWZ1bmN0aW9u
KG4sdCl7dmFyIGU9bi5pbmRleE9mKCIuIikscj0iIjtpZihlPj0wJiYocj1uLnN1YnN0cmluZyhl
KzEpLG49bi5zdWJzdHJpbmcoMCxlKSksbilyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP3RoaXNb
bl0ub24ocik6dGhpc1tuXS5vbihyLHQpO2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoKXtpZihudWxs
PT10KWZvcihuIGluIHRoaXMpdGhpcy5oYXNPd25Qcm9wZXJ0eShuKSYmdGhpc1tuXS5vbihyLG51
bGwpO3JldHVybiB0aGlzfX0sWm8uZXZlbnQ9bnVsbCxaby5yZXF1b3RlPWZ1bmN0aW9uKG4pe3Jl
dHVybiBuLnJlcGxhY2UoY2EsIlxcJCYiKX07dmFyIGNhPS9bXFxcXlwkXCpcK1w/XHxcW1xdXChc
KVwuXHtcfV0vZyxzYT17fS5fX3Byb3RvX18/ZnVuY3Rpb24obix0KXtuLl9fcHJvdG9fXz10fTpm
dW5jdGlvbihuLHQpe2Zvcih2YXIgZSBpbiB0KW5bZV09dFtlXX0sbGE9ZnVuY3Rpb24obix0KXty
ZXR1cm4gdC5xdWVyeVNlbGVjdG9yKG4pfSxmYT1mdW5jdGlvbihuLHQpe3JldHVybiB0LnF1ZXJ5
U2VsZWN0b3JBbGwobil9LGhhPUJvLm1hdGNoZXN8fEJvW3AoQm8sIm1hdGNoZXNTZWxlY3RvciIp
XSxnYT1mdW5jdGlvbihuLHQpe3JldHVybiBoYS5jYWxsKG4sdCl9OyJmdW5jdGlvbiI9PXR5cGVv
ZiBTaXp6bGUmJihsYT1mdW5jdGlvbihuLHQpe3JldHVybiBTaXp6bGUobix0KVswXXx8bnVsbH0s
ZmE9U2l6emxlLGdhPVNpenpsZS5tYXRjaGVzU2VsZWN0b3IpLFpvLnNlbGVjdGlvbj1mdW5jdGlv
bigpe3JldHVybiBtYX07dmFyIHBhPVpvLnNlbGVjdGlvbi5wcm90b3R5cGU9W107cGEuc2VsZWN0
PWZ1bmN0aW9uKG4pe3ZhciB0LGUscix1LGk9W107bj1iKG4pO2Zvcih2YXIgbz0tMSxhPXRoaXMu
bGVuZ3RoOysrbzxhOyl7aS5wdXNoKHQ9W10pLHQucGFyZW50Tm9kZT0ocj10aGlzW29dKS5wYXJl
bnROb2RlO2Zvcih2YXIgYz0tMSxzPXIubGVuZ3RoOysrYzxzOykodT1yW2NdKT8odC5wdXNoKGU9
bi5jYWxsKHUsdS5fX2RhdGFfXyxjLG8pKSxlJiYiX19kYXRhX18iaW4gdSYmKGUuX19kYXRhX189
dS5fX2RhdGFfXykpOnQucHVzaChudWxsKX1yZXR1cm4gXyhpKX0scGEuc2VsZWN0QWxsPWZ1bmN0
aW9uKG4pe3ZhciB0LGUscj1bXTtuPXcobik7Zm9yKHZhciB1PS0xLGk9dGhpcy5sZW5ndGg7Kyt1
PGk7KWZvcih2YXIgbz10aGlzW3VdLGE9LTEsYz1vLmxlbmd0aDsrK2E8YzspKGU9b1thXSkmJihy
LnB1c2godD1YbyhuLmNhbGwoZSxlLl9fZGF0YV9fLGEsdSkpKSx0LnBhcmVudE5vZGU9ZSk7cmV0
dXJuIF8ocil9O3ZhciB2YT17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1s
bnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07Wm8ubnM9e3ByZWZpeDp2YSxxdWFs
aWZ5OmZ1bmN0aW9uKG4pe3ZhciB0PW4uaW5kZXhPZigiOiIpLGU9bjtyZXR1cm4gdD49MCYmKGU9
bi5zdWJzdHJpbmcoMCx0KSxuPW4uc3Vic3RyaW5nKHQrMSkpLHZhLmhhc093blByb3BlcnR5KGUp
P3tzcGFjZTp2YVtlXSxsb2NhbDpufTpufX0scGEuYXR0cj1mdW5jdGlvbihuLHQpe2lmKGFyZ3Vt
ZW50cy5sZW5ndGg8Mil7aWYoInN0cmluZyI9PXR5cGVvZiBuKXt2YXIgZT10aGlzLm5vZGUoKTty
ZXR1cm4gbj1aby5ucy5xdWFsaWZ5KG4pLG4ubG9jYWw/ZS5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNl
LG4ubG9jYWwpOmUuZ2V0QXR0cmlidXRlKG4pfWZvcih0IGluIG4pdGhpcy5lYWNoKFModCxuW3Rd
KSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFjaChTKG4sdCkpfSxwYS5jbGFzc2VkPWZ1bmN0
aW9uKG4sdCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtpZigic3RyaW5nIj09dHlwZW9mIG4pe3Zh
ciBlPXRoaXMubm9kZSgpLHI9KG49QShuKSkubGVuZ3RoLHU9LTE7aWYodD1lLmNsYXNzTGlzdCl7
Zm9yKDsrK3U8cjspaWYoIXQuY29udGFpbnMoblt1XSkpcmV0dXJuITF9ZWxzZSBmb3IodD1lLmdl
dEF0dHJpYnV0ZSgiY2xhc3MiKTsrK3U8cjspaWYoIUUoblt1XSkudGVzdCh0KSlyZXR1cm4hMTty
ZXR1cm4hMH1mb3IodCBpbiBuKXRoaXMuZWFjaChDKHQsblt0XSkpO3JldHVybiB0aGlzfXJldHVy
biB0aGlzLmVhY2goQyhuLHQpKX0scGEuc3R5bGU9ZnVuY3Rpb24obix0LGUpe3ZhciByPWFyZ3Vt
ZW50cy5sZW5ndGg7aWYoMz5yKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pezI+ciYmKHQ9IiIpO2Zv
cihlIGluIG4pdGhpcy5lYWNoKHooZSxuW2VdLHQpKTtyZXR1cm4gdGhpc31pZigyPnIpcmV0dXJu
IFdvLmdldENvbXB1dGVkU3R5bGUodGhpcy5ub2RlKCksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShu
KTtlPSIifXJldHVybiB0aGlzLmVhY2goeihuLHQsZSkpfSxwYS5wcm9wZXJ0eT1mdW5jdGlvbihu
LHQpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7aWYoInN0cmluZyI9PXR5cGVvZiBuKXJldHVybiB0
aGlzLm5vZGUoKVtuXTtmb3IodCBpbiBuKXRoaXMuZWFjaChMKHQsblt0XSkpO3JldHVybiB0aGlz
fXJldHVybiB0aGlzLmVhY2goTChuLHQpKX0scGEudGV4dD1mdW5jdGlvbihuKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD90aGlzLmVhY2goImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVuY3Rpb24oKXt2
YXIgdD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PXQ/IiI6
dH06bnVsbD09bj9mdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9IiJ9OmZ1bmN0aW9uKCl7dGhp
cy50ZXh0Q29udGVudD1ufSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LHBhLmh0bWw9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCJmdW5jdGlvbiI9PXR5cGVv
ZiBuP2Z1bmN0aW9uKCl7dmFyIHQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5pbm5lckhU
TUw9bnVsbD09dD8iIjp0fTpudWxsPT1uP2Z1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9IiJ9OmZ1
bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9bn0pOnRoaXMubm9kZSgpLmlubmVySFRNTH0scGEuYXBw
ZW5kPWZ1bmN0aW9uKG4pe3JldHVybiBuPVQobiksdGhpcy5zZWxlY3QoZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5hcHBlbmRDaGlsZChuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KX0scGEuaW5zZXJ0
PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49VChuKSx0PWIodCksdGhpcy5zZWxlY3QoZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5hcHBs
eSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSl9LHBhLnJlbW92ZT1mdW5jdGlvbigpe3JldHVybiB0
aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbj10aGlzLnBhcmVudE5vZGU7biYmbi5yZW1vdmVDaGls
ZCh0aGlzKX0pfSxwYS5kYXRhPWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZShuLGUpe3ZhciByLHUs
aSxhPW4ubGVuZ3RoLGY9ZS5sZW5ndGgsaD1NYXRoLm1pbihhLGYpLGc9bmV3IEFycmF5KGYpLHA9
bmV3IEFycmF5KGYpLHY9bmV3IEFycmF5KGEpO2lmKHQpe3ZhciBkLG09bmV3IG8seT1uZXcgbyx4
PVtdO2ZvcihyPS0xOysrcjxhOylkPXQuY2FsbCh1PW5bcl0sdS5fX2RhdGFfXyxyKSxtLmhhcyhk
KT92W3JdPXU6bS5zZXQoZCx1KSx4LnB1c2goZCk7Zm9yKHI9LTE7KytyPGY7KWQ9dC5jYWxsKGUs
aT1lW3JdLHIpLCh1PW0uZ2V0KGQpKT8oZ1tyXT11LHUuX19kYXRhX189aSk6eS5oYXMoZCl8fChw
W3JdPXEoaSkpLHkuc2V0KGQsaSksbS5yZW1vdmUoZCk7Zm9yKHI9LTE7KytyPGE7KW0uaGFzKHhb
cl0pJiYodltyXT1uW3JdKX1lbHNle2ZvcihyPS0xOysrcjxoOyl1PW5bcl0saT1lW3JdLHU/KHUu
X19kYXRhX189aSxnW3JdPXUpOnBbcl09cShpKTtmb3IoO2Y+cjsrK3IpcFtyXT1xKGVbcl0pO2Zv
cig7YT5yOysrcil2W3JdPW5bcl19cC51cGRhdGU9ZyxwLnBhcmVudE5vZGU9Zy5wYXJlbnROb2Rl
PXYucGFyZW50Tm9kZT1uLnBhcmVudE5vZGUsYy5wdXNoKHApLHMucHVzaChnKSxsLnB1c2godil9
dmFyIHIsdSxpPS0xLGE9dGhpcy5sZW5ndGg7aWYoIWFyZ3VtZW50cy5sZW5ndGgpe2ZvcihuPW5l
dyBBcnJheShhPShyPXRoaXNbMF0pLmxlbmd0aCk7KytpPGE7KSh1PXJbaV0pJiYobltpXT11Ll9f
ZGF0YV9fKTtyZXR1cm4gbn12YXIgYz1VKFtdKSxzPV8oW10pLGw9XyhbXSk7aWYoImZ1bmN0aW9u
Ij09dHlwZW9mIG4pZm9yKDsrK2k8YTspZShyPXRoaXNbaV0sbi5jYWxsKHIsci5wYXJlbnROb2Rl
Ll9fZGF0YV9fLGkpKTtlbHNlIGZvcig7KytpPGE7KWUocj10aGlzW2ldLG4pO3JldHVybiBzLmVu
dGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGN9LHMuZXhpdD1mdW5jdGlvbigpe3JldHVybiBsfSxzfSxw
YS5kYXR1bT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5
KCJfX2RhdGFfXyIsbik6dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iKX0scGEuZmlsdGVyPWZ1bmN0
aW9uKG4pe3ZhciB0LGUscix1PVtdOyJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj1SKG4pKTtmb3Io
dmFyIGk9MCxvPXRoaXMubGVuZ3RoO28+aTtpKyspe3UucHVzaCh0PVtdKSx0LnBhcmVudE5vZGU9
KGU9dGhpc1tpXSkucGFyZW50Tm9kZTtmb3IodmFyIGE9MCxjPWUubGVuZ3RoO2M+YTthKyspKHI9
ZVthXSkmJm4uY2FsbChyLHIuX19kYXRhX18sYSxpKSYmdC5wdXNoKHIpfXJldHVybiBfKHUpfSxw
YS5vcmRlcj1mdW5jdGlvbigpe2Zvcih2YXIgbj0tMSx0PXRoaXMubGVuZ3RoOysrbjx0Oylmb3Io
dmFyIGUscj10aGlzW25dLHU9ci5sZW5ndGgtMSxpPXJbdV07LS11Pj0wOykoZT1yW3VdKSYmKGkm
JmkhPT1lLm5leHRTaWJsaW5nJiZpLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsaSksaT1lKTty
ZXR1cm4gdGhpc30scGEuc29ydD1mdW5jdGlvbihuKXtuPUQuYXBwbHkodGhpcyxhcmd1bWVudHMp
O2Zvcih2YXIgdD0tMSxlPXRoaXMubGVuZ3RoOysrdDxlOyl0aGlzW3RdLnNvcnQobik7cmV0dXJu
IHRoaXMub3JkZXIoKX0scGEuZWFjaD1mdW5jdGlvbihuKXtyZXR1cm4gUCh0aGlzLGZ1bmN0aW9u
KHQsZSxyKXtuLmNhbGwodCx0Ll9fZGF0YV9fLGUscil9KX0scGEuY2FsbD1mdW5jdGlvbihuKXt2
YXIgdD1Ybyhhcmd1bWVudHMpO3JldHVybiBuLmFwcGx5KHRbMF09dGhpcyx0KSx0aGlzfSxwYS5l
bXB0eT1mdW5jdGlvbigpe3JldHVybiF0aGlzLm5vZGUoKX0scGEubm9kZT1mdW5jdGlvbigpe2Zv
cih2YXIgbj0wLHQ9dGhpcy5sZW5ndGg7dD5uO24rKylmb3IodmFyIGU9dGhpc1tuXSxyPTAsdT1l
Lmxlbmd0aDt1PnI7cisrKXt2YXIgaT1lW3JdO2lmKGkpcmV0dXJuIGl9cmV0dXJuIG51bGx9LHBh
LnNpemU9ZnVuY3Rpb24oKXt2YXIgbj0wO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsrK259
KSxufTt2YXIgZGE9W107Wm8uc2VsZWN0aW9uLmVudGVyPVUsWm8uc2VsZWN0aW9uLmVudGVyLnBy
b3RvdHlwZT1kYSxkYS5hcHBlbmQ9cGEuYXBwZW5kLGRhLmVtcHR5PXBhLmVtcHR5LGRhLm5vZGU9
cGEubm9kZSxkYS5jYWxsPXBhLmNhbGwsZGEuc2l6ZT1wYS5zaXplLGRhLnNlbGVjdD1mdW5jdGlv
bihuKXtmb3IodmFyIHQsZSxyLHUsaSxvPVtdLGE9LTEsYz10aGlzLmxlbmd0aDsrK2E8Yzspe3I9
KHU9dGhpc1thXSkudXBkYXRlLG8ucHVzaCh0PVtdKSx0LnBhcmVudE5vZGU9dS5wYXJlbnROb2Rl
O2Zvcih2YXIgcz0tMSxsPXUubGVuZ3RoOysrczxsOykoaT11W3NdKT8odC5wdXNoKHJbc109ZT1u
LmNhbGwodS5wYXJlbnROb2RlLGkuX19kYXRhX18scyxhKSksZS5fX2RhdGFfXz1pLl9fZGF0YV9f
KTp0LnB1c2gobnVsbCl9cmV0dXJuIF8obyl9LGRhLmluc2VydD1mdW5jdGlvbihuLHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPDImJih0PWoodGhpcykpLHBhLmluc2VydC5jYWxsKHRoaXMsbix0
KX0scGEudHJhbnNpdGlvbj1mdW5jdGlvbigpe2Zvcih2YXIgbix0LGU9U3N8fCsrTnMscj1bXSx1
PWtzfHx7dGltZTpEYXRlLm5vdygpLGVhc2U6eHUsZGVsYXk6MCxkdXJhdGlvbjoyNTB9LGk9LTEs
bz10aGlzLmxlbmd0aDsrK2k8bzspe3IucHVzaChuPVtdKTtmb3IodmFyIGE9dGhpc1tpXSxjPS0x
LHM9YS5sZW5ndGg7KytjPHM7KSh0PWFbY10pJiZQbyh0LGMsZSx1KSxuLnB1c2godCl9cmV0dXJu
IHFvKHIsZSl9LHBhLmludGVycnVwdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goSCl9LFpv
LnNlbGVjdD1mdW5jdGlvbihuKXt2YXIgdD1bInN0cmluZyI9PXR5cGVvZiBuP2xhKG4sJG8pOm5d
O3JldHVybiB0LnBhcmVudE5vZGU9Qm8sXyhbdF0pfSxaby5zZWxlY3RBbGw9ZnVuY3Rpb24obil7
dmFyIHQ9WG8oInN0cmluZyI9PXR5cGVvZiBuP2ZhKG4sJG8pOm4pO3JldHVybiB0LnBhcmVudE5v
ZGU9Qm8sXyhbdF0pfTt2YXIgbWE9Wm8uc2VsZWN0KEJvKTtwYS5vbj1mdW5jdGlvbihuLHQsZSl7
dmFyIHI9YXJndW1lbnRzLmxlbmd0aDtpZigzPnIpe2lmKCJzdHJpbmciIT10eXBlb2Ygbil7Mj5y
JiYodD0hMSk7Zm9yKGUgaW4gbil0aGlzLmVhY2goRihlLG5bZV0sdCkpO3JldHVybiB0aGlzfWlm
KDI+cilyZXR1cm4ocj10aGlzLm5vZGUoKVsiX19vbiIrbl0pJiZyLl87ZT0hMX1yZXR1cm4gdGhp
cy5lYWNoKEYobix0LGUpKX07dmFyIHlhPVpvLm1hcCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixt
b3VzZWxlYXZlOiJtb3VzZW91dCJ9KTt5YS5mb3JFYWNoKGZ1bmN0aW9uKG4peyJvbiIrbiBpbiAk
byYmeWEucmVtb3ZlKG4pfSk7dmFyIHhhPSJvbnNlbGVjdHN0YXJ0ImluICRvP251bGw6cChCby5z
dHlsZSwidXNlclNlbGVjdCIpLE1hPTA7Wm8ubW91c2U9ZnVuY3Rpb24obil7cmV0dXJuIFoobix4
KCkpfTt2YXIgX2E9L1dlYktpdC8udGVzdChXby5uYXZpZ2F0b3IudXNlckFnZW50KT8tMTowO1pv
LnRvdWNoZXM9ZnVuY3Rpb24obix0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYodD14KCku
dG91Y2hlcyksdD9Ybyh0KS5tYXAoZnVuY3Rpb24odCl7dmFyIGU9WihuLHQpO3JldHVybiBlLmlk
ZW50aWZpZXI9dC5pZGVudGlmaWVyLGV9KTpbXX0sWm8uYmVoYXZpb3IuZHJhZz1mdW5jdGlvbigp
e2Z1bmN0aW9uIG4oKXt0aGlzLm9uKCJtb3VzZWRvd24uZHJhZyIsdSkub24oInRvdWNoc3RhcnQu
ZHJhZyIsaSl9ZnVuY3Rpb24gdChuLHQsdSxpLG8pe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9u
IGEoKXt2YXIgbixlLHI9dChoLHYpO3ImJihuPXJbMF0teFswXSxlPXJbMV0teFsxXSxwfD1ufGUs
eD1yLGcoe3R5cGU6ImRyYWciLHg6clswXStzWzBdLHk6clsxXStzWzFdLGR4Om4sZHk6ZX0pKX1m
dW5jdGlvbiBjKCl7dChoLHYpJiYobS5vbihpK2QsbnVsbCkub24obytkLG51bGwpLHkocCYmWm8u
ZXZlbnQudGFyZ2V0PT09ZiksZyh7dHlwZToiZHJhZ2VuZCJ9KSl9dmFyIHMsbD10aGlzLGY9Wm8u
ZXZlbnQudGFyZ2V0LGg9bC5wYXJlbnROb2RlLGc9ZS5vZihsLGFyZ3VtZW50cykscD0wLHY9bigp
LGQ9Ii5kcmFnIisobnVsbD09dj8iIjoiLSIrdiksbT1aby5zZWxlY3QodSgpKS5vbihpK2QsYSku
b24obytkLGMpLHk9SSgpLHg9dChoLHYpO3I/KHM9ci5hcHBseShsLGFyZ3VtZW50cykscz1bcy54
LXhbMF0scy55LXhbMV1dKTpzPVswLDBdLGcoe3R5cGU6ImRyYWdzdGFydCJ9KX19dmFyIGU9TShu
LCJkcmFnIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIpLHI9bnVsbCx1PXQodixaby5tb3VzZSwkLCJt
b3VzZW1vdmUiLCJtb3VzZXVwIiksaT10KFYsWm8udG91Y2gsWCwidG91Y2htb3ZlIiwidG91Y2hl
bmQiKTtyZXR1cm4gbi5vcmlnaW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHI9dCxuKTpyfSxaby5yZWJpbmQobixlLCJvbiIpfTt2YXIgYmE9TWF0aC5QSSx3YT0yKmJhLFNh
PWJhLzIsa2E9MWUtNixFYT1rYSprYSxBYT1iYS8xODAsQ2E9MTgwL2JhLE5hPU1hdGguU1FSVDIs
emE9MixMYT00O1pvLmludGVycG9sYXRlWm9vbT1mdW5jdGlvbihuLHQpe2Z1bmN0aW9uIGUobil7
dmFyIHQ9bip5O2lmKG0pe3ZhciBlPVEodiksbz1pLyh6YSpoKSooZSpudChOYSp0K3YpLUsodikp
O3JldHVybltyK28qcyx1K28qbCxpKmUvUShOYSp0K3YpXX1yZXR1cm5bcituKnMsdStuKmwsaSpN
YXRoLmV4cChOYSp0KV19dmFyIHI9blswXSx1PW5bMV0saT1uWzJdLG89dFswXSxhPXRbMV0sYz10
WzJdLHM9by1yLGw9YS11LGY9cypzK2wqbCxoPU1hdGguc3FydChmKSxnPShjKmMtaSppK0xhKmYp
LygyKmkqemEqaCkscD0oYypjLWkqaS1MYSpmKS8oMipjKnphKmgpLHY9TWF0aC5sb2coTWF0aC5z
cXJ0KGcqZysxKS1nKSxkPU1hdGgubG9nKE1hdGguc3FydChwKnArMSktcCksbT1kLXYseT0obXx8
TWF0aC5sb2coYy9pKSkvTmE7cmV0dXJuIGUuZHVyYXRpb249MWUzKnksZX0sWm8uYmVoYXZpb3Iu
em9vbT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7bi5vbihBLHMpLm9uKFJhKyIuem9vbSIsZiku
b24oImRibGNsaWNrLnpvb20iLGgpLm9uKHosbCl9ZnVuY3Rpb24gdChuKXtyZXR1cm5bKG5bMF0t
Uy54KS9TLmssKG5bMV0tUy55KS9TLmtdfWZ1bmN0aW9uIGUobil7cmV0dXJuW25bMF0qUy5rK1Mu
eCxuWzFdKlMuaytTLnldfWZ1bmN0aW9uIHIobil7Uy5rPU1hdGgubWF4KEVbMF0sTWF0aC5taW4o
RVsxXSxuKSl9ZnVuY3Rpb24gdShuLHQpe3Q9ZSh0KSxTLngrPW5bMF0tdFswXSxTLnkrPW5bMV0t
dFsxXX1mdW5jdGlvbiBpKCl7XyYmXy5kb21haW4oeC5yYW5nZSgpLm1hcChmdW5jdGlvbihuKXty
ZXR1cm4obi1TLngpL1Mua30pLm1hcCh4LmludmVydCkpLHcmJncuZG9tYWluKGIucmFuZ2UoKS5t
YXAoZnVuY3Rpb24obil7cmV0dXJuKG4tUy55KS9TLmt9KS5tYXAoYi5pbnZlcnQpKX1mdW5jdGlv
biBvKG4pe24oe3R5cGU6Inpvb21zdGFydCJ9KX1mdW5jdGlvbiBhKG4pe2koKSxuKHt0eXBlOiJ6
b29tIixzY2FsZTpTLmssdHJhbnNsYXRlOltTLngsUy55XX0pfWZ1bmN0aW9uIGMobil7bih7dHlw
ZToiem9vbWVuZCJ9KX1mdW5jdGlvbiBzKCl7ZnVuY3Rpb24gbigpe2w9MSx1KFpvLm1vdXNlKHIp
LGgpLGEocyl9ZnVuY3Rpb24gZSgpe2Yub24oQyxudWxsKS5vbihOLG51bGwpLGcobCYmWm8uZXZl
bnQudGFyZ2V0PT09aSksYyhzKX12YXIgcj10aGlzLGk9Wm8uZXZlbnQudGFyZ2V0LHM9TC5vZihy
LGFyZ3VtZW50cyksbD0wLGY9Wm8uc2VsZWN0KFdvKS5vbihDLG4pLm9uKE4sZSksaD10KFpvLm1v
dXNlKHIpKSxnPUkoKTtILmNhbGwociksbyhzKX1mdW5jdGlvbiBsKCl7ZnVuY3Rpb24gbigpe3Zh
ciBuPVpvLnRvdWNoZXMoZyk7cmV0dXJuIGg9Uy5rLG4uZm9yRWFjaChmdW5jdGlvbihuKXtuLmlk
ZW50aWZpZXIgaW4gdiYmKHZbbi5pZGVudGlmaWVyXT10KG4pKX0pLG59ZnVuY3Rpb24gZSgpe3Zh
ciB0PVpvLmV2ZW50LnRhcmdldDtaby5zZWxlY3QodCkub24oTSxpKS5vbihfLGYpLGIucHVzaCh0
KTtmb3IodmFyIGU9Wm8uZXZlbnQuY2hhbmdlZFRvdWNoZXMsbz0wLGM9ZS5sZW5ndGg7Yz5vOysr
byl2W2Vbb10uaWRlbnRpZmllcl09bnVsbDt2YXIgcz1uKCksbD1EYXRlLm5vdygpO2lmKDE9PT1z
Lmxlbmd0aCl7aWYoNTAwPmwtbSl7dmFyIGg9c1swXSxnPXZbaC5pZGVudGlmaWVyXTtyKDIqUy5r
KSx1KGgsZykseSgpLGEocCl9bT1sfWVsc2UgaWYocy5sZW5ndGg+MSl7dmFyIGg9c1swXSx4PXNb
MV0sdz1oWzBdLXhbMF0saz1oWzFdLXhbMV07ZD13KncrayprfX1mdW5jdGlvbiBpKCl7Zm9yKHZh
ciBuLHQsZSxpLG89Wm8udG91Y2hlcyhnKSxjPTAscz1vLmxlbmd0aDtzPmM7KytjLGk9bnVsbClp
ZihlPW9bY10saT12W2UuaWRlbnRpZmllcl0pe2lmKHQpYnJlYWs7bj1lLHQ9aX1pZihpKXt2YXIg
bD0obD1lWzBdLW5bMF0pKmwrKGw9ZVsxXS1uWzFdKSpsLGY9ZCYmTWF0aC5zcXJ0KGwvZCk7bj1b
KG5bMF0rZVswXSkvMiwoblsxXStlWzFdKS8yXSx0PVsodFswXStpWzBdKS8yLCh0WzFdK2lbMV0p
LzJdLHIoZipoKX1tPW51bGwsdShuLHQpLGEocCl9ZnVuY3Rpb24gZigpe2lmKFpvLmV2ZW50LnRv
dWNoZXMubGVuZ3RoKXtmb3IodmFyIHQ9Wm8uZXZlbnQuY2hhbmdlZFRvdWNoZXMsZT0wLHI9dC5s
ZW5ndGg7cj5lOysrZSlkZWxldGUgdlt0W2VdLmlkZW50aWZpZXJdO2Zvcih2YXIgdSBpbiB2KXJl
dHVybiB2b2lkIG4oKX1aby5zZWxlY3RBbGwoYikub24oeCxudWxsKSx3Lm9uKEEscykub24oeixs
KSxrKCksYyhwKX12YXIgaCxnPXRoaXMscD1MLm9mKGcsYXJndW1lbnRzKSx2PXt9LGQ9MCx4PSIu
em9vbS0iK1pvLmV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIsTT0idG91Y2htb3Zl
Iit4LF89InRvdWNoZW5kIit4LGI9W10sdz1aby5zZWxlY3QoZykub24oQSxudWxsKS5vbih6LGUp
LGs9SSgpO0guY2FsbChnKSxlKCksbyhwKX1mdW5jdGlvbiBmKCl7dmFyIG49TC5vZih0aGlzLGFy
Z3VtZW50cyk7ZD9jbGVhclRpbWVvdXQoZCk6KGc9dChwPXZ8fFpvLm1vdXNlKHRoaXMpKSxILmNh
bGwodGhpcyksbyhuKSksZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZD1udWxsLGMobil9LDUwKSx5
KCkscihNYXRoLnBvdygyLC4wMDIqVGEoKSkqUy5rKSx1KHAsZyksYShuKX1mdW5jdGlvbiBoKCl7
dmFyIG49TC5vZih0aGlzLGFyZ3VtZW50cyksZT1aby5tb3VzZSh0aGlzKSxpPXQoZSkscz1NYXRo
LmxvZyhTLmspL01hdGguTE4yO28obikscihNYXRoLnBvdygyLFpvLmV2ZW50LnNoaWZ0S2V5P01h
dGguY2VpbChzKS0xOk1hdGguZmxvb3IocykrMSkpLHUoZSxpKSxhKG4pLGMobil9dmFyIGcscCx2
LGQsbSx4LF8sYix3LFM9e3g6MCx5OjAsazoxfSxrPVs5NjAsNTAwXSxFPXFhLEE9Im1vdXNlZG93
bi56b29tIixDPSJtb3VzZW1vdmUuem9vbSIsTj0ibW91c2V1cC56b29tIix6PSJ0b3VjaHN0YXJ0
Lnpvb20iLEw9TShuLCJ6b29tc3RhcnQiLCJ6b29tIiwiem9vbWVuZCIpO3JldHVybiBuLmV2ZW50
PWZ1bmN0aW9uKG4pe24uZWFjaChmdW5jdGlvbigpe3ZhciBuPUwub2YodGhpcyxhcmd1bWVudHMp
LHQ9UztTcz9aby5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmVhY2goInN0YXJ0Lnpvb20iLGZ1
bmN0aW9uKCl7Uz10aGlzLl9fY2hhcnRfX3x8e3g6MCx5OjAsazoxfSxvKG4pfSkudHdlZW4oInpv
b206em9vbSIsZnVuY3Rpb24oKXt2YXIgZT1rWzBdLHI9a1sxXSx1PWUvMixpPXIvMixvPVpvLmlu
dGVycG9sYXRlWm9vbShbKHUtUy54KS9TLmssKGktUy55KS9TLmssZS9TLmtdLFsodS10LngpL3Qu
aywoaS10LnkpL3QuayxlL3Qua10pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgcj1vKHQpLGM9ZS9y
WzJdO3RoaXMuX19jaGFydF9fPVM9e3g6dS1yWzBdKmMseTppLXJbMV0qYyxrOmN9LGEobil9fSku
ZWFjaCgiZW5kLnpvb20iLGZ1bmN0aW9uKCl7YyhuKX0pOih0aGlzLl9fY2hhcnRfXz1TLG8obiks
YShuKSxjKG4pKX0pfSxuLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oUz17eDordFswXSx5Oit0WzFdLGs6Uy5rfSxpKCksbik6W1MueCxTLnldfSxuLnNjYWxl
PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPXt4OlMueCx5OlMueSxrOit0
fSxpKCksbik6Uy5rfSxuLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhFPW51bGw9PXQ/cWE6Wyt0WzBdLCt0WzFdXSxuKTpFfSxuLmNlbnRlcj1mdW5jdGlv
bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj10JiZbK3RbMF0sK3RbMV1dLG4pOnZ9LG4u
c2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz10JiZbK3RbMF0sK3Rb
MV1dLG4pOmt9LG4ueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz10LHg9
dC5jb3B5KCksUz17eDowLHk6MCxrOjF9LG4pOl99LG4ueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8odz10LGI9dC5jb3B5KCksUz17eDowLHk6MCxrOjF9LG4pOnd9LFpvLnJl
YmluZChuLEwsIm9uIil9O3ZhciBUYSxxYT1bMCwxLzBdLFJhPSJvbndoZWVsImluICRvPyhUYT1m
dW5jdGlvbigpe3JldHVybi1aby5ldmVudC5kZWx0YVkqKFpvLmV2ZW50LmRlbHRhTW9kZT8xMjA6
MSl9LCJ3aGVlbCIpOiJvbm1vdXNld2hlZWwiaW4gJG8/KFRhPWZ1bmN0aW9uKCl7cmV0dXJuIFpv
LmV2ZW50LndoZWVsRGVsdGF9LCJtb3VzZXdoZWVsIik6KFRhPWZ1bmN0aW9uKCl7cmV0dXJuLVpv
LmV2ZW50LmRldGFpbH0sIk1vek1vdXNlUGl4ZWxTY3JvbGwiKTtaby5jb2xvcj1ldCxldC5wcm90
b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKSsiIn0sWm8uaHNsPXJ0
O3ZhciBEYT1ydC5wcm90b3R5cGU9bmV3IGV0O0RhLmJyaWdodGVyPWZ1bmN0aW9uKG4pe3JldHVy
biBuPU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/bjoxKSxuZXcgcnQodGhpcy5oLHRoaXMu
cyx0aGlzLmwvbil9LERhLmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4gbj1NYXRoLnBvdyguNyxh
cmd1bWVudHMubGVuZ3RoP246MSksbmV3IHJ0KHRoaXMuaCx0aGlzLnMsbip0aGlzLmwpfSxEYS5y
Z2I9ZnVuY3Rpb24oKXtyZXR1cm4gdXQodGhpcy5oLHRoaXMucyx0aGlzLmwpfSxaby5oY2w9aXQ7
dmFyIFBhPWl0LnByb3RvdHlwZT1uZXcgZXQ7UGEuYnJpZ2h0ZXI9ZnVuY3Rpb24obil7cmV0dXJu
IG5ldyBpdCh0aGlzLmgsdGhpcy5jLE1hdGgubWluKDEwMCx0aGlzLmwrVWEqKGFyZ3VtZW50cy5s
ZW5ndGg/bjoxKSkpfSxQYS5kYXJrZXI9ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBpdCh0aGlzLmgs
dGhpcy5jLE1hdGgubWF4KDAsdGhpcy5sLVVhKihhcmd1bWVudHMubGVuZ3RoP246MSkpKX0sUGEu
cmdiPWZ1bmN0aW9uKCl7cmV0dXJuIG90KHRoaXMuaCx0aGlzLmMsdGhpcy5sKS5yZ2IoKX0sWm8u
bGFiPWF0O3ZhciBVYT0xOCxqYT0uOTUwNDcsSGE9MSxGYT0xLjA4ODgzLE9hPWF0LnByb3RvdHlw
ZT1uZXcgZXQ7T2EuYnJpZ2h0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBhdChNYXRoLm1pbigx
MDAsdGhpcy5sK1VhKihhcmd1bWVudHMubGVuZ3RoP246MSkpLHRoaXMuYSx0aGlzLmIpfSxPYS5k
YXJrZXI9ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBhdChNYXRoLm1heCgwLHRoaXMubC1VYSooYXJn
dW1lbnRzLmxlbmd0aD9uOjEpKSx0aGlzLmEsdGhpcy5iKX0sT2EucmdiPWZ1bmN0aW9uKCl7cmV0
dXJuIGN0KHRoaXMubCx0aGlzLmEsdGhpcy5iKX0sWm8ucmdiPWd0O3ZhciBZYT1ndC5wcm90b3R5
cGU9bmV3IGV0O1lhLmJyaWdodGVyPWZ1bmN0aW9uKG4pe249TWF0aC5wb3coLjcsYXJndW1lbnRz
Lmxlbmd0aD9uOjEpO3ZhciB0PXRoaXMucixlPXRoaXMuZyxyPXRoaXMuYix1PTMwO3JldHVybiB0
fHxlfHxyPyh0JiZ1PnQmJih0PXUpLGUmJnU+ZSYmKGU9dSksciYmdT5yJiYocj11KSxuZXcgZ3Qo
TWF0aC5taW4oMjU1LHQvbiksTWF0aC5taW4oMjU1LGUvbiksTWF0aC5taW4oMjU1LHIvbikpKTpu
ZXcgZ3QodSx1LHUpfSxZYS5kYXJrZXI9ZnVuY3Rpb24obil7cmV0dXJuIG49TWF0aC5wb3coLjcs
YXJndW1lbnRzLmxlbmd0aD9uOjEpLG5ldyBndChuKnRoaXMucixuKnRoaXMuZyxuKnRoaXMuYil9
LFlhLmhzbD1mdW5jdGlvbigpe3JldHVybiB5dCh0aGlzLnIsdGhpcy5nLHRoaXMuYil9LFlhLnRv
U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiMiK2R0KHRoaXMucikrZHQodGhpcy5nKStkdCh0aGlz
LmIpfTt2YXIgSWE9Wm8ubWFwKHthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0
Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2
MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJs
dWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYy
MzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3
MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4
LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMs
ZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAs
ZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMs
ZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAw
NDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0
MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xh
dGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVl
cHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6
NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRl
OjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86
MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMy
OTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4
NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4
NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVy
OjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25j
aGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxp
Z2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6
MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6
MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0
c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6Nzgz
Mzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1
MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFy
b29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1
bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4
MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1
bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6
MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2
NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xp
dmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2
NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjox
MDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFw
YXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2
NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixy
ZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJy
b3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46
MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2
LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0
ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0
NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2
NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3
aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dn
cmVlbjoxMDE0NTA3NH0pO0lhLmZvckVhY2goZnVuY3Rpb24obix0KXtJYS5zZXQobixwdCh0KSl9
KSxaby5mdW5jdG9yPWJ0LFpvLnhocj1TdCh3dCksWm8uZHN2PWZ1bmN0aW9uKG4sdCl7ZnVuY3Rp
b24gZShuLGUsaSl7YXJndW1lbnRzLmxlbmd0aDwzJiYoaT1lLGU9bnVsbCk7dmFyIG89a3Qobix0
LG51bGw9PWU/cjp1KGUpLGkpO3JldHVybiBvLnJvdz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD9vLnJlc3BvbnNlKG51bGw9PShlPW4pP3I6dShuKSk6ZX0sb31mdW5jdGlvbiBy
KG4pe3JldHVybiBlLnBhcnNlKG4ucmVzcG9uc2VUZXh0KX1mdW5jdGlvbiB1KG4pe3JldHVybiBm
dW5jdGlvbih0KXtyZXR1cm4gZS5wYXJzZSh0LnJlc3BvbnNlVGV4dCxuKX19ZnVuY3Rpb24gaSh0
KXtyZXR1cm4gdC5tYXAobykuam9pbihuKX1mdW5jdGlvbiBvKG4pe3JldHVybiBhLnRlc3Qobik/
JyInK24ucmVwbGFjZSgvXCIvZywnIiInKSsnIic6bn12YXIgYT1uZXcgUmVnRXhwKCdbIicrbisi
XG5dIiksYz1uLmNoYXJDb2RlQXQoMCk7cmV0dXJuIGUucGFyc2U9ZnVuY3Rpb24obix0KXt2YXIg
cjtyZXR1cm4gZS5wYXJzZVJvd3MobixmdW5jdGlvbihuLGUpe2lmKHIpcmV0dXJuIHIobixlLTEp
O3ZhciB1PW5ldyBGdW5jdGlvbigiZCIsInJldHVybiB7IituLm1hcChmdW5jdGlvbihuLHQpe3Jl
dHVybiBKU09OLnN0cmluZ2lmeShuKSsiOiBkWyIrdCsiXSJ9KS5qb2luKCIsIikrIn0iKTtyPXQ/
ZnVuY3Rpb24obixlKXtyZXR1cm4gdCh1KG4pLGUpfTp1fSl9LGUucGFyc2VSb3dzPWZ1bmN0aW9u
KG4sdCl7ZnVuY3Rpb24gZSgpe2lmKGw+PXMpcmV0dXJuIG87aWYodSlyZXR1cm4gdT0hMSxpO3Zh
ciB0PWw7aWYoMzQ9PT1uLmNoYXJDb2RlQXQodCkpe2Zvcih2YXIgZT10O2UrKzxzOylpZigzND09
PW4uY2hhckNvZGVBdChlKSl7aWYoMzQhPT1uLmNoYXJDb2RlQXQoZSsxKSlicmVhazsrK2V9bD1l
KzI7dmFyIHI9bi5jaGFyQ29kZUF0KGUrMSk7cmV0dXJuIDEzPT09cj8odT0hMCwxMD09PW4uY2hh
ckNvZGVBdChlKzIpJiYrK2wpOjEwPT09ciYmKHU9ITApLG4uc3Vic3RyaW5nKHQrMSxlKS5yZXBs
YWNlKC8iIi9nLCciJyl9Zm9yKDtzPmw7KXt2YXIgcj1uLmNoYXJDb2RlQXQobCsrKSxhPTE7aWYo
MTA9PT1yKXU9ITA7ZWxzZSBpZigxMz09PXIpdT0hMCwxMD09PW4uY2hhckNvZGVBdChsKSYmKCsr
bCwrK2EpO2Vsc2UgaWYociE9PWMpY29udGludWU7cmV0dXJuIG4uc3Vic3RyaW5nKHQsbC1hKX1y
ZXR1cm4gbi5zdWJzdHJpbmcodCl9Zm9yKHZhciByLHUsaT17fSxvPXt9LGE9W10scz1uLmxlbmd0
aCxsPTAsZj0wOyhyPWUoKSkhPT1vOyl7Zm9yKHZhciBoPVtdO3IhPT1pJiZyIT09bzspaC5wdXNo
KHIpLHI9ZSgpOyghdHx8KGg9dChoLGYrKykpKSYmYS5wdXNoKGgpfXJldHVybiBhfSxlLmZvcm1h
dD1mdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHRbMF0pKXJldHVybiBlLmZvcm1hdFJvd3Mo
dCk7dmFyIHI9bmV3IGgsdT1bXTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKG4pe2Zvcih2YXIg
dCBpbiBuKXIuaGFzKHQpfHx1LnB1c2goci5hZGQodCkpfSksW3UubWFwKG8pLmpvaW4obildLmNv
bmNhdCh0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG8o
dFtuXSl9KS5qb2luKG4pfSkpLmpvaW4oIlxuIil9LGUuZm9ybWF0Um93cz1mdW5jdGlvbihuKXty
ZXR1cm4gbi5tYXAoaSkuam9pbigiXG4iKX0sZX0sWm8uY3N2PVpvLmRzdigiLCIsInRleHQvY3N2
IiksWm8udHN2PVpvLmRzdigiICAgICIsInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXMiKSxaby50
b3VjaD1mdW5jdGlvbihuLHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwzJiYoZT10LHQ9eCgpLmNo
YW5nZWRUb3VjaGVzKSx0KWZvcih2YXIgcix1PTAsaT10Lmxlbmd0aDtpPnU7Kyt1KWlmKChyPXRb
dV0pLmlkZW50aWZpZXI9PT1lKXJldHVybiBaKG4scil9O3ZhciBaYSxWYSxYYSwkYSxCYSxXYT1X
b1twKFdvLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKV18fGZ1bmN0aW9uKG4pe3NldFRpbWVvdXQo
biwxNyl9O1pvLnRpbWVyPWZ1bmN0aW9uKG4sdCxlKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoOzI+
ciYmKHQ9MCksMz5yJiYoZT1EYXRlLm5vdygpKTt2YXIgdT1lK3QsaT17YzpuLHQ6dSxmOiExLG46
bnVsbH07VmE/VmEubj1pOlphPWksVmE9aSxYYXx8KCRhPWNsZWFyVGltZW91dCgkYSksWGE9MSxX
YShBdCkpfSxaby50aW1lci5mbHVzaD1mdW5jdGlvbigpe0N0KCksTnQoKX0sWm8ucm91bmQ9ZnVu
Y3Rpb24obix0KXtyZXR1cm4gdD9NYXRoLnJvdW5kKG4qKHQ9TWF0aC5wb3coMTAsdCkpKS90Ok1h
dGgucm91bmQobil9O3ZhciBKYT1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIlx4YjUiLCJtIiwi
IiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXS5tYXAoTHQpO1pvLmZvcm1hdFByZWZp
eD1mdW5jdGlvbihuLHQpe3ZhciBlPTA7cmV0dXJuIG4mJigwPm4mJihuKj0tMSksdCYmKG49Wm8u
cm91bmQobix6dChuLHQpKSksZT0xK01hdGguZmxvb3IoMWUtMTIrTWF0aC5sb2cobikvTWF0aC5M
TjEwKSxlPU1hdGgubWF4KC0yNCxNYXRoLm1pbigyNCwzKk1hdGguZmxvb3IoKGUtMSkvMykpKSks
SmFbOCtlLzNdfTt2YXIgR2E9Lyg/OihbXntdKT8oWzw+PV5dKSk/KFsrXC0gXSk/KFskI10pPygw
KT8oXGQrKT8oLCk/KFwuLT9cZCspPyhbYS16JV0pPy9pLEthPVpvLm1hcCh7YjpmdW5jdGlvbihu
KXtyZXR1cm4gbi50b1N0cmluZygyKX0sYzpmdW5jdGlvbihuKXtyZXR1cm4gU3RyaW5nLmZyb21D
aGFyQ29kZShuKX0sbzpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZyg4KX0seDpmdW5jdGlv
bihuKXtyZXR1cm4gbi50b1N0cmluZygxNil9LFg6ZnVuY3Rpb24obil7cmV0dXJuIG4udG9TdHJp
bmcoMTYpLnRvVXBwZXJDYXNlKCl9LGc6ZnVuY3Rpb24obix0KXtyZXR1cm4gbi50b1ByZWNpc2lv
bih0KX0sZTpmdW5jdGlvbihuLHQpe3JldHVybiBuLnRvRXhwb25lbnRpYWwodCl9LGY6ZnVuY3Rp
b24obix0KXtyZXR1cm4gbi50b0ZpeGVkKHQpfSxyOmZ1bmN0aW9uKG4sdCl7cmV0dXJuKG49Wm8u
cm91bmQobix6dChuLHQpKSkudG9GaXhlZChNYXRoLm1heCgwLE1hdGgubWluKDIwLHp0KG4qKDEr
MWUtMTUpLHQpKSkpfX0pLFFhPVpvLnRpbWU9e30sbmM9RGF0ZTtSdC5wcm90b3R5cGU9e2dldERh
dGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ0RhdGUoKX0sZ2V0RGF5OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuXy5nZXRVVENEYXkoKX0sZ2V0RnVsbFllYXI6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fLmdldFVUQ0Z1bGxZZWFyKCl9LGdldEhvdXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuXy5nZXRVVENIb3VycygpfSxnZXRNaWxsaXNlY29uZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fLmdldFVUQ01pbGxpc2Vjb25kcygpfSxnZXRNaW51dGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuXy5nZXRVVENNaW51dGVzKCl9LGdldE1vbnRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5n
ZXRVVENNb250aCgpfSxnZXRTZWNvbmRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENT
ZWNvbmRzKCl9LGdldFRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFRpbWUoKX0sZ2V0
VGltZXpvbmVPZmZzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sdmFsdWVPZjpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl8udmFsdWVPZigpfSxzZXREYXRlOmZ1bmN0aW9uKCl7dGMuc2V0VVRDRGF0ZS5h
cHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0RGF5OmZ1bmN0aW9uKCl7dGMuc2V0VVRDRGF5LmFw
cGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRGdWxsWWVhcjpmdW5jdGlvbigpe3RjLnNldFVUQ0Z1
bGxZZWFyLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRIb3VyczpmdW5jdGlvbigpe3RjLnNl
dFVUQ0hvdXJzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRNaWxsaXNlY29uZHM6ZnVuY3Rp
b24oKXt0Yy5zZXRVVENNaWxsaXNlY29uZHMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldE1p
bnV0ZXM6ZnVuY3Rpb24oKXt0Yy5zZXRVVENNaW51dGVzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMp
fSxzZXRNb250aDpmdW5jdGlvbigpe3RjLnNldFVUQ01vbnRoLmFwcGx5KHRoaXMuXyxhcmd1bWVu
dHMpfSxzZXRTZWNvbmRzOmZ1bmN0aW9uKCl7dGMuc2V0VVRDU2Vjb25kcy5hcHBseSh0aGlzLl8s
YXJndW1lbnRzKX0sc2V0VGltZTpmdW5jdGlvbigpe3RjLnNldFRpbWUuYXBwbHkodGhpcy5fLGFy
Z3VtZW50cyl9fTt2YXIgdGM9RGF0ZS5wcm90b3R5cGU7UWEueWVhcj1EdChmdW5jdGlvbihuKXty
ZXR1cm4gbj1RYS5kYXkobiksbi5zZXRNb250aCgwLDEpLG59LGZ1bmN0aW9uKG4sdCl7bi5zZXRG
dWxsWWVhcihuLmdldEZ1bGxZZWFyKCkrdCl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldEZ1bGxZ
ZWFyKCl9KSxRYS55ZWFycz1RYS55ZWFyLnJhbmdlLFFhLnllYXJzLnV0Yz1RYS55ZWFyLnV0Yy5y
YW5nZSxRYS5kYXk9RHQoZnVuY3Rpb24obil7dmFyIHQ9bmV3IG5jKDJlMywwKTtyZXR1cm4gdC5z
ZXRGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCksbi5nZXRNb250aCgpLG4uZ2V0RGF0ZSgpKSx0fSxm
dW5jdGlvbihuLHQpe24uc2V0RGF0ZShuLmdldERhdGUoKSt0KX0sZnVuY3Rpb24obil7cmV0dXJu
IG4uZ2V0RGF0ZSgpLTF9KSxRYS5kYXlzPVFhLmRheS5yYW5nZSxRYS5kYXlzLnV0Yz1RYS5kYXku
dXRjLnJhbmdlLFFhLmRheU9mWWVhcj1mdW5jdGlvbihuKXt2YXIgdD1RYS55ZWFyKG4pO3JldHVy
biBNYXRoLmZsb29yKChuLXQtNmU0KihuLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9u
ZU9mZnNldCgpKSkvODY0ZTUpfSxbInN1bmRheSIsIm1vbmRheSIsInR1ZXNkYXkiLCJ3ZWRuZXNk
YXkiLCJ0aHVyc2RheSIsImZyaWRheSIsInNhdHVyZGF5Il0uZm9yRWFjaChmdW5jdGlvbihuLHQp
e3Q9Ny10O3ZhciBlPVFhW25dPUR0KGZ1bmN0aW9uKG4pe3JldHVybihuPVFhLmRheShuKSkuc2V0
RGF0ZShuLmdldERhdGUoKS0obi5nZXREYXkoKSt0KSU3KSxufSxmdW5jdGlvbihuLHQpe24uc2V0
RGF0ZShuLmdldERhdGUoKSs3Kk1hdGguZmxvb3IodCkpfSxmdW5jdGlvbihuKXt2YXIgZT1RYS55
ZWFyKG4pLmdldERheSgpO3JldHVybiBNYXRoLmZsb29yKChRYS5kYXlPZlllYXIobikrKGUrdCkl
NykvNyktKGUhPT10KX0pO1FhW24rInMiXT1lLnJhbmdlLFFhW24rInMiXS51dGM9ZS51dGMucmFu
Z2UsUWFbbisiT2ZZZWFyIl09ZnVuY3Rpb24obil7dmFyIGU9UWEueWVhcihuKS5nZXREYXkoKTty
ZXR1cm4gTWF0aC5mbG9vcigoUWEuZGF5T2ZZZWFyKG4pKyhlK3QpJTcpLzcpfX0pLFFhLndlZWs9
UWEuc3VuZGF5LFFhLndlZWtzPVFhLnN1bmRheS5yYW5nZSxRYS53ZWVrcy51dGM9UWEuc3VuZGF5
LnV0Yy5yYW5nZSxRYS53ZWVrT2ZZZWFyPVFhLnN1bmRheU9mWWVhcjt2YXIgZWM9eyItIjoiIixf
OiIgIiwwOiIwIn0scmM9L15ccypcZCsvLHVjPS9eJS87Wm8ubG9jYWxlPWZ1bmN0aW9uKG4pe3Jl
dHVybntudW1iZXJGb3JtYXQ6VHQobiksdGltZUZvcm1hdDpVdChuKX19O3ZhciBpYz1aby5sb2Nh
bGUoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIs
IiJdLGRhdGVUaW1lOiIlYSAlYiAlZSAlWCAlWSIsZGF0ZToiJW0vJWQvJVkiLHRpbWU6IiVIOiVN
OiVTIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5
IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpb
IlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVh
cnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3Vz
dCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250
aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAi
LCJPY3QiLCJOb3YiLCJEZWMiXX0pO1pvLmZvcm1hdD1pYy5udW1iZXJGb3JtYXQsWm8uZ2VvPXt9
LHVlLnByb3RvdHlwZT17czowLHQ6MCxhZGQ6ZnVuY3Rpb24obil7aWUobix0aGlzLnQsb2MpLGll
KG9jLnMsdGhpcy5zLHRoaXMpLHRoaXMucz90aGlzLnQrPW9jLnQ6dGhpcy5zPW9jLnR9LHJlc2V0
OmZ1bmN0aW9uKCl7dGhpcy5zPXRoaXMudD0wfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuc319O3ZhciBvYz1uZXcgdWU7Wm8uZ2VvLnN0cmVhbT1mdW5jdGlvbihuLHQpe24mJmFjLmhh
c093blByb3BlcnR5KG4udHlwZSk/YWNbbi50eXBlXShuLHQpOm9lKG4sdCl9O3ZhciBhYz17RmVh
dHVyZTpmdW5jdGlvbihuLHQpe29lKG4uZ2VvbWV0cnksdCl9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1
bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uZmVhdHVyZXMscj0tMSx1PWUubGVuZ3RoOysrcjx1Oylv
ZShlW3JdLmdlb21ldHJ5LHQpfX0sY2M9e1NwaGVyZTpmdW5jdGlvbihuLHQpe3Quc3BoZXJlKCl9
LFBvaW50OmZ1bmN0aW9uKG4sdCl7bj1uLmNvb3JkaW5hdGVzLHQucG9pbnQoblswXSxuWzFdLG5b
Ml0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uY29vcmRpbmF0ZXMscj0t
MSx1PWUubGVuZ3RoOysrcjx1OyluPWVbcl0sdC5wb2ludChuWzBdLG5bMV0sblsyXSl9LExpbmVT
dHJpbmc6ZnVuY3Rpb24obix0KXthZShuLmNvb3JkaW5hdGVzLHQsMCl9LE11bHRpTGluZVN0cmlu
ZzpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1uLmNvb3JkaW5hdGVzLHI9LTEsdT1lLmxlbmd0aDsr
K3I8dTspYWUoZVtyXSx0LDApfSxQb2x5Z29uOmZ1bmN0aW9uKG4sdCl7Y2Uobi5jb29yZGluYXRl
cyx0KX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uY29vcmRpbmF0ZXMs
cj0tMSx1PWUubGVuZ3RoOysrcjx1OyljZShlW3JdLHQpfSxHZW9tZXRyeUNvbGxlY3Rpb246ZnVu
Y3Rpb24obix0KXtmb3IodmFyIGU9bi5nZW9tZXRyaWVzLHI9LTEsdT1lLmxlbmd0aDsrK3I8dTsp
b2UoZVtyXSx0KX19O1pvLmdlby5hcmVhPWZ1bmN0aW9uKG4pe3JldHVybiBzYz0wLFpvLmdlby5z
dHJlYW0obixmYyksc2N9O3ZhciBzYyxsYz1uZXcgdWUsZmM9e3NwaGVyZTpmdW5jdGlvbigpe3Nj
Kz00KmJhfSxwb2ludDp2LGxpbmVTdGFydDp2LGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6ZnVuY3Rp
b24oKXtsYy5yZXNldCgpLGZjLmxpbmVTdGFydD1zZX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3Zh
ciBuPTIqbGM7c2MrPTA+bj80KmJhK246bixmYy5saW5lU3RhcnQ9ZmMubGluZUVuZD1mYy5wb2lu
dD12fX07Wm8uZ2VvLmJvdW5kcz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obix0KXt4LnB1c2goTT1b
bD1uLGg9bl0pLGY+dCYmKGY9dCksdD5nJiYoZz10KX1mdW5jdGlvbiB0KHQsZSl7dmFyIHI9bGUo
W3QqQWEsZSpBYV0pO2lmKG0pe3ZhciB1PWhlKG0sciksaT1bdVsxXSwtdVswXSwwXSxvPWhlKGks
dSk7dmUobyksbz1kZShvKTt2YXIgYz10LXAscz1jPjA/MTotMSx2PW9bMF0qQ2EqcyxkPXVhKGMp
PjE4MDtpZihkXih2PnMqcCYmcyp0PnYpKXt2YXIgeT1vWzFdKkNhO3k+ZyYmKGc9eSl9ZWxzZSBp
Zih2PSh2KzM2MCklMzYwLTE4MCxkXih2PnMqcCYmcyp0PnYpKXt2YXIgeT0tb1sxXSpDYTtmPnkm
JihmPXkpfWVsc2UgZj5lJiYoZj1lKSxlPmcmJihnPWUpO2Q/cD50P2EobCx0KT5hKGwsaCkmJiho
PXQpOmEodCxoKT5hKGwsaCkmJihsPXQpOmg+PWw/KGw+dCYmKGw9dCksdD5oJiYoaD10KSk6dD5w
P2EobCx0KT5hKGwsaCkmJihoPXQpOmEodCxoKT5hKGwsaCkmJihsPXQpfWVsc2Ugbih0LGUpO209
cixwPXR9ZnVuY3Rpb24gZSgpe18ucG9pbnQ9dH1mdW5jdGlvbiByKCl7TVswXT1sLE1bMV09aCxf
LnBvaW50PW4sbT1udWxsfWZ1bmN0aW9uIHUobixlKXtpZihtKXt2YXIgcj1uLXA7eSs9dWEocik+
MTgwP3IrKHI+MD8zNjA6LTM2MCk6cn1lbHNlIHY9bixkPWU7ZmMucG9pbnQobixlKSx0KG4sZSl9
ZnVuY3Rpb24gaSgpe2ZjLmxpbmVTdGFydCgpfWZ1bmN0aW9uIG8oKXt1KHYsZCksZmMubGluZUVu
ZCgpLHVhKHkpPmthJiYobD0tKGg9MTgwKSksTVswXT1sLE1bMV09aCxtPW51bGx9ZnVuY3Rpb24g
YShuLHQpe3JldHVybih0LT1uKTwwP3QrMzYwOnR9ZnVuY3Rpb24gYyhuLHQpe3JldHVybiBuWzBd
LXRbMF19ZnVuY3Rpb24gcyhuLHQpe3JldHVybiB0WzBdPD10WzFdP3RbMF08PW4mJm48PXRbMV06
bjx0WzBdfHx0WzFdPG59dmFyIGwsZixoLGcscCx2LGQsbSx5LHgsTSxfPXtwb2ludDpuLGxpbmVT
dGFydDplLGxpbmVFbmQ6cixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtfLnBvaW50PXUsXy5saW5l
U3RhcnQ9aSxfLmxpbmVFbmQ9byx5PTAsZmMucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVu
Y3Rpb24oKXtmYy5wb2x5Z29uRW5kKCksXy5wb2ludD1uLF8ubGluZVN0YXJ0PWUsXy5saW5lRW5k
PXIsMD5sYz8obD0tKGg9MTgwKSxmPS0oZz05MCkpOnk+a2E/Zz05MDota2E+eSYmKGY9LTkwKSxN
WzBdPWwsTVsxXT1ofX07cmV0dXJuIGZ1bmN0aW9uKG4pe2c9aD0tKGw9Zj0xLzApLHg9W10sWm8u
Z2VvLnN0cmVhbShuLF8pO3ZhciB0PXgubGVuZ3RoO2lmKHQpe3guc29ydChjKTtmb3IodmFyIGUs
cj0xLHU9eFswXSxpPVt1XTt0PnI7KytyKWU9eFtyXSxzKGVbMF0sdSl8fHMoZVsxXSx1KT8oYSh1
WzBdLGVbMV0pPmEodVswXSx1WzFdKSYmKHVbMV09ZVsxXSksYShlWzBdLHVbMV0pPmEodVswXSx1
WzFdKSYmKHVbMF09ZVswXSkpOmkucHVzaCh1PWUpOworZm9yKHZhciBvLGUscD0tMS8wLHQ9aS5s
ZW5ndGgtMSxyPTAsdT1pW3RdO3Q+PXI7dT1lLCsrcillPWlbcl0sKG89YSh1WzFdLGVbMF0pKT5w
JiYocD1vLGw9ZVswXSxoPXVbMV0pfXJldHVybiB4PU09bnVsbCwxLzA9PT1sfHwxLzA9PT1mP1tb
MC8wLDAvMF0sWzAvMCwwLzBdXTpbW2wsZl0sW2gsZ11dfX0oKSxaby5nZW8uY2VudHJvaWQ9ZnVu
Y3Rpb24obil7aGM9Z2M9cGM9dmM9ZGM9bWM9eWM9eGM9TWM9X2M9YmM9MCxaby5nZW8uc3RyZWFt
KG4sd2MpO3ZhciB0PU1jLGU9X2Mscj1iYyx1PXQqdCtlKmUrcipyO3JldHVybiBFYT51JiYodD1t
YyxlPXljLHI9eGMsa2E+Z2MmJih0PXBjLGU9dmMscj1kYyksdT10KnQrZSplK3IqcixFYT51KT9b
MC8wLDAvMF06W01hdGguYXRhbjIoZSx0KSpDYSxHKHIvTWF0aC5zcXJ0KHUpKSpDYV19O3ZhciBo
YyxnYyxwYyx2YyxkYyxtYyx5Yyx4YyxNYyxfYyxiYyx3Yz17c3BoZXJlOnYscG9pbnQ6eWUsbGlu
ZVN0YXJ0Ok1lLGxpbmVFbmQ6X2UscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7d2MubGluZVN0YXJ0
PWJlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7d2MubGluZVN0YXJ0PU1lfX0sU2M9QWUod2UsVGUs
UmUsWy1iYSwtYmEvMl0pLGtjPTFlOTtaby5nZW8uY2xpcEV4dGVudD1mdW5jdGlvbigpe3ZhciBu
LHQsZSxyLHUsaSxvPXtzdHJlYW06ZnVuY3Rpb24obil7cmV0dXJuIHUmJih1LnZhbGlkPSExKSx1
PWkobiksdS52YWxpZD0hMCx1fSxleHRlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGk9VWUobj0rYVswXVswXSx0PSthWzBdWzFdLGU9K2FbMV1bMF0scj0rYVsxXVsxXSks
dSYmKHUudmFsaWQ9ITEsdT1udWxsKSxvKTpbW24sdF0sW2Uscl1dfX07cmV0dXJuIG8uZXh0ZW50
KFtbMCwwXSxbOTYwLDUwMF1dKX0sKFpvLmdlby5jb25pY0VxdWFsQXJlYT1mdW5jdGlvbigpe3Jl
dHVybiBIZShGZSl9KS5yYXc9RmUsWm8uZ2VvLmFsYmVycz1mdW5jdGlvbigpe3JldHVybiBaby5n
ZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43XSkucGFy
YWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKX0sWm8uZ2VvLmFsYmVyc1VzYT1mdW5jdGlv
bigpe2Z1bmN0aW9uIG4obil7dmFyIGk9blswXSxvPW5bMV07cmV0dXJuIHQ9bnVsbCxlKGksbyks
dHx8KHIoaSxvKSx0KXx8dShpLG8pLHR9dmFyIHQsZSxyLHUsaT1aby5nZW8uYWxiZXJzKCksbz1a
by5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSku
cGFyYWxsZWxzKFs1NSw2NV0pLGE9Wm8uZ2VvLmNvbmljRXF1YWxBcmVhKCkucm90YXRlKFsxNTcs
MF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGM9e3BvaW50OmZ1bmN0aW9u
KG4sZSl7dD1bbixlXX19O3JldHVybiBuLmludmVydD1mdW5jdGlvbihuKXt2YXIgdD1pLnNjYWxl
KCksZT1pLnRyYW5zbGF0ZSgpLHI9KG5bMF0tZVswXSkvdCx1PShuWzFdLWVbMV0pL3Q7cmV0dXJu
KHU+PS4xMiYmLjIzND51JiZyPj0tLjQyNSYmLS4yMTQ+cj9vOnU+PS4xNjYmJi4yMzQ+dSYmcj49
LS4yMTQmJi0uMTE1PnI/YTppKS5pbnZlcnQobil9LG4uc3RyZWFtPWZ1bmN0aW9uKG4pe3ZhciB0
PWkuc3RyZWFtKG4pLGU9by5zdHJlYW0obikscj1hLnN0cmVhbShuKTtyZXR1cm57cG9pbnQ6ZnVu
Y3Rpb24obix1KXt0LnBvaW50KG4sdSksZS5wb2ludChuLHUpLHIucG9pbnQobix1KX0sc3BoZXJl
OmZ1bmN0aW9uKCl7dC5zcGhlcmUoKSxlLnNwaGVyZSgpLHIuc3BoZXJlKCl9LGxpbmVTdGFydDpm
dW5jdGlvbigpe3QubGluZVN0YXJ0KCksZS5saW5lU3RhcnQoKSxyLmxpbmVTdGFydCgpfSxsaW5l
RW5kOmZ1bmN0aW9uKCl7dC5saW5lRW5kKCksZS5saW5lRW5kKCksci5saW5lRW5kKCl9LHBvbHln
b25TdGFydDpmdW5jdGlvbigpe3QucG9seWdvblN0YXJ0KCksZS5wb2x5Z29uU3RhcnQoKSxyLnBv
bHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dC5wb2x5Z29uRW5kKCksZS5wb2x5
Z29uRW5kKCksci5wb2x5Z29uRW5kKCl9fX0sbi5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGkucHJlY2lzaW9uKHQpLG8ucHJlY2lzaW9uKHQpLGEucHJlY2lz
aW9uKHQpLG4pOmkucHJlY2lzaW9uKCl9LG4uc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGkuc2NhbGUodCksby5zY2FsZSguMzUqdCksYS5zY2FsZSh0KSxuLnRyYW5z
bGF0ZShpLnRyYW5zbGF0ZSgpKSk6aS5zY2FsZSgpfSxuLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtp
ZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gaS50cmFuc2xhdGUoKTt2YXIgcz1pLnNjYWxlKCks
bD0rdFswXSxmPSt0WzFdO3JldHVybiBlPWkudHJhbnNsYXRlKHQpLmNsaXBFeHRlbnQoW1tsLS40
NTUqcyxmLS4yMzgqc10sW2wrLjQ1NSpzLGYrLjIzOCpzXV0pLnN0cmVhbShjKS5wb2ludCxyPW8u
dHJhbnNsYXRlKFtsLS4zMDcqcyxmKy4yMDEqc10pLmNsaXBFeHRlbnQoW1tsLS40MjUqcytrYSxm
Ky4xMipzK2thXSxbbC0uMjE0KnMta2EsZisuMjM0KnMta2FdXSkuc3RyZWFtKGMpLnBvaW50LHU9
YS50cmFuc2xhdGUoW2wtLjIwNSpzLGYrLjIxMipzXSkuY2xpcEV4dGVudChbW2wtLjIxNCpzK2th
LGYrLjE2NipzK2thXSxbbC0uMTE1KnMta2EsZisuMjM0KnMta2FdXSkuc3RyZWFtKGMpLnBvaW50
LG59LG4uc2NhbGUoMTA3MCl9O3ZhciBFYyxBYyxDYyxOYyx6YyxMYyxUYz17cG9pbnQ6dixsaW5l
U3RhcnQ6dixsaW5lRW5kOnYscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7QWM9MCxUYy5saW5lU3Rh
cnQ9T2V9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtUYy5saW5lU3RhcnQ9VGMubGluZUVuZD1UYy5w
b2ludD12LEVjKz11YShBYy8yKX19LHFjPXtwb2ludDpZZSxsaW5lU3RhcnQ6dixsaW5lRW5kOnYs
cG9seWdvblN0YXJ0OnYscG9seWdvbkVuZDp2fSxSYz17cG9pbnQ6VmUsbGluZVN0YXJ0OlhlLGxp
bmVFbmQ6JGUscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7UmMubGluZVN0YXJ0PUJlfSxwb2x5Z29u
RW5kOmZ1bmN0aW9uKCl7UmMucG9pbnQ9VmUsUmMubGluZVN0YXJ0PVhlLFJjLmxpbmVFbmQ9JGV9
fTtaby5nZW8ucGF0aD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7cmV0dXJuIG4mJigiZnVuY3Rp
b24iPT10eXBlb2YgYSYmaS5wb2ludFJhZGl1cygrYS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLG8m
Jm8udmFsaWR8fChvPXUoaSkpLFpvLmdlby5zdHJlYW0obixvKSksaS5yZXN1bHQoKX1mdW5jdGlv
biB0KCl7cmV0dXJuIG89bnVsbCxufXZhciBlLHIsdSxpLG8sYT00LjU7cmV0dXJuIG4uYXJlYT1m
dW5jdGlvbihuKXtyZXR1cm4gRWM9MCxaby5nZW8uc3RyZWFtKG4sdShUYykpLEVjfSxuLmNlbnRy
b2lkPWZ1bmN0aW9uKG4pe3JldHVybiBwYz12Yz1kYz1tYz15Yz14Yz1NYz1fYz1iYz0wLFpvLmdl
by5zdHJlYW0obix1KFJjKSksYmM/W01jL2JjLF9jL2JjXTp4Yz9bbWMveGMseWMveGNdOmRjP1tw
Yy9kYyx2Yy9kY106WzAvMCwwLzBdfSxuLmJvdW5kcz1mdW5jdGlvbihuKXtyZXR1cm4gemM9TGM9
LShDYz1OYz0xLzApLFpvLmdlby5zdHJlYW0obix1KHFjKSksW1tDYyxOY10sW3pjLExjXV19LG4u
cHJvamVjdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0oZT1uKT9u
LnN0cmVhbXx8R2Uobik6d3QsdCgpKTplfSxuLmNvbnRleHQ9ZnVuY3Rpb24obil7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGk9bnVsbD09KHI9bik/bmV3IEllOm5ldyBXZShuKSwiZnVuY3Rpb24i
IT10eXBlb2YgYSYmaS5wb2ludFJhZGl1cyhhKSx0KCkpOnJ9LG4ucG9pbnRSYWRpdXM9ZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDoo
aS5wb2ludFJhZGl1cygrdCksK3QpLG4pOmF9LG4ucHJvamVjdGlvbihaby5nZW8uYWxiZXJzVXNh
KCkpLmNvbnRleHQobnVsbCl9LFpvLmdlby50cmFuc2Zvcm09ZnVuY3Rpb24obil7cmV0dXJue3N0
cmVhbTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgS2UodCk7Zm9yKHZhciByIGluIG4pZVtyXT1uW3Jd
O3JldHVybiBlfX19LEtlLnByb3RvdHlwZT17cG9pbnQ6ZnVuY3Rpb24obix0KXt0aGlzLnN0cmVh
bS5wb2ludChuLHQpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGlu
ZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rp
b24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMu
c3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0u
cG9seWdvbkVuZCgpfX0sWm8uZ2VvLnByb2plY3Rpb249bnIsWm8uZ2VvLnByb2plY3Rpb25NdXRh
dG9yPXRyLChaby5nZW8uZXF1aXJlY3Rhbmd1bGFyPWZ1bmN0aW9uKCl7cmV0dXJuIG5yKHJyKX0p
LnJhdz1yci5pbnZlcnQ9cnIsWm8uZ2VvLnJvdGF0aW9uPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHQo
dCl7cmV0dXJuIHQ9bih0WzBdKkFhLHRbMV0qQWEpLHRbMF0qPUNhLHRbMV0qPUNhLHR9cmV0dXJu
IG49aXIoblswXSUzNjAqQWEsblsxXSpBYSxuLmxlbmd0aD4yP25bMl0qQWE6MCksdC5pbnZlcnQ9
ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bi5pbnZlcnQodFswXSpBYSx0WzFdKkFhKSx0WzBdKj1DYSx0
WzFdKj1DYSx0fSx0fSx1ci5pbnZlcnQ9cnIsWm8uZ2VvLmNpcmNsZT1mdW5jdGlvbigpe2Z1bmN0
aW9uIG4oKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yLmFwcGx5KHRoaXMsYXJndW1lbnRz
KTpyLHQ9aXIoLW5bMF0qQWEsLW5bMV0qQWEsMCkuaW52ZXJ0LHU9W107cmV0dXJuIGUobnVsbCxu
dWxsLDEse3BvaW50OmZ1bmN0aW9uKG4sZSl7dS5wdXNoKG49dChuLGUpKSxuWzBdKj1DYSxuWzFd
Kj1DYX19KSx7dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W3VdfX12YXIgdCxlLHI9WzAsMF0s
dT02O3JldHVybiBuLm9yaWdpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cj10LG4pOnJ9LG4uYW5nbGU9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9
c3IoKHQ9K3IpKkFhLHUqQWEpLG4pOnR9LG4ucHJlY2lzaW9uPWZ1bmN0aW9uKHIpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhlPXNyKHQqQWEsKHU9K3IpKkFhKSxuKTp1fSxuLmFuZ2xlKDkwKX0s
Wm8uZ2VvLmRpc3RhbmNlPWZ1bmN0aW9uKG4sdCl7dmFyIGUscj0odFswXS1uWzBdKSpBYSx1PW5b
MV0qQWEsaT10WzFdKkFhLG89TWF0aC5zaW4ociksYT1NYXRoLmNvcyhyKSxjPU1hdGguc2luKHUp
LHM9TWF0aC5jb3ModSksbD1NYXRoLnNpbihpKSxmPU1hdGguY29zKGkpO3JldHVybiBNYXRoLmF0
YW4yKE1hdGguc3FydCgoZT1mKm8pKmUrKGU9cypsLWMqZiphKSplKSxjKmwrcypmKmEpfSxaby5n
ZW8uZ3JhdGljdWxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3JldHVybnt0eXBlOiJNdWx0aUxp
bmVTdHJpbmciLGNvb3JkaW5hdGVzOnQoKX19ZnVuY3Rpb24gdCgpe3JldHVybiBaby5yYW5nZShN
YXRoLmNlaWwoaS9kKSpkLHUsZCkubWFwKGgpLmNvbmNhdChaby5yYW5nZShNYXRoLmNlaWwocy9t
KSptLGMsbSkubWFwKGcpKS5jb25jYXQoWm8ucmFuZ2UoTWF0aC5jZWlsKHIvcCkqcCxlLHApLmZp
bHRlcihmdW5jdGlvbihuKXtyZXR1cm4gdWEobiVkKT5rYX0pLm1hcChsKSkuY29uY2F0KFpvLnJh
bmdlKE1hdGguY2VpbChhL3YpKnYsbyx2KS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIHVhKG4l
bSk+a2F9KS5tYXAoZikpfXZhciBlLHIsdSxpLG8sYSxjLHMsbCxmLGgsZyxwPTEwLHY9cCxkPTkw
LG09MzYwLHk9Mi41O3JldHVybiBuLmxpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5tYXAoZnVu
Y3Rpb24obil7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOm59fSl9LG4ub3V0
bGluZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbaChpKS5j
b25jYXQoZyhjKS5zbGljZSgxKSxoKHUpLnJldmVyc2UoKS5zbGljZSgxKSxnKHMpLnJldmVyc2Uo
KS5zbGljZSgxKSldfX0sbi5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/bi5tYWpvckV4dGVudCh0KS5taW5vckV4dGVudCh0KTpuLm1pbm9yRXh0ZW50KCl9LG4ubWFq
b3JFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3RbMF1bMF0s
dT0rdFsxXVswXSxzPSt0WzBdWzFdLGM9K3RbMV1bMV0saT51JiYodD1pLGk9dSx1PXQpLHM+YyYm
KHQ9cyxzPWMsYz10KSxuLnByZWNpc2lvbih5KSk6W1tpLHNdLFt1LGNdXX0sbi5taW5vckV4dGVu
dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdFswXVswXSxlPSt0WzFd
WzBdLGE9K3RbMF1bMV0sbz0rdFsxXVsxXSxyPmUmJih0PXIscj1lLGU9dCksYT5vJiYodD1hLGE9
byxvPXQpLG4ucHJlY2lzaW9uKHkpKTpbW3IsYV0sW2Usb11dfSxuLnN0ZXA9ZnVuY3Rpb24odCl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bi5tYWpvclN0ZXAodCkubWlub3JTdGVwKHQpOm4ubWlu
b3JTdGVwKCl9LG4ubWFqb3JTdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhkPSt0WzBdLG09K3RbMV0sbik6W2QsbV19LG4ubWlub3JTdGVwPWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhwPSt0WzBdLHY9K3RbMV0sbik6W3Asdl19LG4ucHJlY2lzaW9u
PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PSt0LGw9ZnIoYSxvLDkwKSxm
PWhyKHIsZSx5KSxoPWZyKHMsYyw5MCksZz1ocihpLHUseSksbik6eX0sbi5tYWpvckV4dGVudChb
Wy0xODAsLTkwK2thXSxbMTgwLDkwLWthXV0pLm1pbm9yRXh0ZW50KFtbLTE4MCwtODAta2FdLFsx
ODAsODAra2FdXSl9LFpvLmdlby5ncmVhdEFyYz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXtyZXR1
cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6W3R8fHIuYXBwbHkodGhpcyxhcmd1bWVu
dHMpLGV8fHUuYXBwbHkodGhpcyxhcmd1bWVudHMpXX19dmFyIHQsZSxyPWdyLHU9cHI7cmV0dXJu
IG4uZGlzdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gWm8uZ2VvLmRpc3RhbmNlKHR8fHIuYXBwbHko
dGhpcyxhcmd1bWVudHMpLGV8fHUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sbi5zb3VyY2U9ZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSx0PSJmdW5jdGlvbiI9PXR5cGVv
ZiBlP251bGw6ZSxuKTpyfSxuLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odT10LGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/bnVsbDp0LG4pOnV9LG4ucHJlY2lzaW9u
PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bjowfSxufSxaby5nZW8uaW50ZXJw
b2xhdGU9ZnVuY3Rpb24obix0KXtyZXR1cm4gdnIoblswXSpBYSxuWzFdKkFhLHRbMF0qQWEsdFsx
XSpBYSl9LFpvLmdlby5sZW5ndGg9ZnVuY3Rpb24obil7cmV0dXJuIERjPTAsWm8uZ2VvLnN0cmVh
bShuLFBjKSxEY307dmFyIERjLFBjPXtzcGhlcmU6dixwb2ludDp2LGxpbmVTdGFydDpkcixsaW5l
RW5kOnYscG9seWdvblN0YXJ0OnYscG9seWdvbkVuZDp2fSxVYz1tcihmdW5jdGlvbihuKXtyZXR1
cm4gTWF0aC5zcXJ0KDIvKDErbikpfSxmdW5jdGlvbihuKXtyZXR1cm4gMipNYXRoLmFzaW4obi8y
KX0pOyhaby5nZW8uYXppbXV0aGFsRXF1YWxBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIG5yKFVjKX0p
LnJhdz1VYzt2YXIgamM9bXIoZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5hY29zKG4pO3JldHVybiB0
JiZ0L01hdGguc2luKHQpfSx3dCk7KFpvLmdlby5hemltdXRoYWxFcXVpZGlzdGFudD1mdW5jdGlv
bigpe3JldHVybiBucihqYyl9KS5yYXc9amMsKFpvLmdlby5jb25pY0NvbmZvcm1hbD1mdW5jdGlv
bigpe3JldHVybiBIZSh5cil9KS5yYXc9eXIsKFpvLmdlby5jb25pY0VxdWlkaXN0YW50PWZ1bmN0
aW9uKCl7cmV0dXJuIEhlKHhyKX0pLnJhdz14cjt2YXIgSGM9bXIoZnVuY3Rpb24obil7cmV0dXJu
IDEvbn0sTWF0aC5hdGFuKTsoWm8uZ2VvLmdub21vbmljPWZ1bmN0aW9uKCl7cmV0dXJuIG5yKEhj
KX0pLnJhdz1IYyxNci5pbnZlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm5bbiwyKk1hdGguYXRhbihN
YXRoLmV4cCh0KSktU2FdfSwoWm8uZ2VvLm1lcmNhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIF9yKE1y
KX0pLnJhdz1Ncjt2YXIgRmM9bXIoZnVuY3Rpb24oKXtyZXR1cm4gMX0sTWF0aC5hc2luKTsoWm8u
Z2VvLm9ydGhvZ3JhcGhpYz1mdW5jdGlvbigpe3JldHVybiBucihGYyl9KS5yYXc9RmM7dmFyIE9j
PW1yKGZ1bmN0aW9uKG4pe3JldHVybiAxLygxK24pfSxmdW5jdGlvbihuKXtyZXR1cm4gMipNYXRo
LmF0YW4obil9KTsoWm8uZ2VvLnN0ZXJlb2dyYXBoaWM9ZnVuY3Rpb24oKXtyZXR1cm4gbnIoT2Mp
fSkucmF3PU9jLGJyLmludmVydD1mdW5jdGlvbihuLHQpe3JldHVyblstdCwyKk1hdGguYXRhbihN
YXRoLmV4cChuKSktU2FdfSwoWm8uZ2VvLnRyYW5zdmVyc2VNZXJjYXRvcj1mdW5jdGlvbigpe3Zh
ciBuPV9yKGJyKSx0PW4uY2VudGVyLGU9bi5yb3RhdGU7cmV0dXJuIG4uY2VudGVyPWZ1bmN0aW9u
KG4pe3JldHVybiBuP3QoWy1uWzFdLG5bMF1dKToobj10KCksW25bMV0sLW5bMF1dKX0sbi5yb3Rh
dGU9ZnVuY3Rpb24obil7cmV0dXJuIG4/ZShbblswXSxuWzFdLG4ubGVuZ3RoPjI/blsyXSs5MDo5
MF0pOihuPWUoKSxbblswXSxuWzFdLG5bMl0tOTBdKX0sZShbMCwwLDkwXSl9KS5yYXc9YnIsWm8u
Z2VvbT17fSxaby5nZW9tLmh1bGw9ZnVuY3Rpb24obil7ZnVuY3Rpb24gdChuKXtpZihuLmxlbmd0
aDwzKXJldHVybltdO3ZhciB0LHU9YnQoZSksaT1idChyKSxvPW4ubGVuZ3RoLGE9W10sYz1bXTtm
b3IodD0wO28+dDt0KyspYS5wdXNoKFsrdS5jYWxsKHRoaXMsblt0XSx0KSwraS5jYWxsKHRoaXMs
blt0XSx0KSx0XSk7Zm9yKGEuc29ydChFciksdD0wO28+dDt0KyspYy5wdXNoKFthW3RdWzBdLC1h
W3RdWzFdXSk7dmFyIHM9a3IoYSksbD1rcihjKSxmPWxbMF09PT1zWzBdLGg9bFtsLmxlbmd0aC0x
XT09PXNbcy5sZW5ndGgtMV0sZz1bXTtmb3IodD1zLmxlbmd0aC0xO3Q+PTA7LS10KWcucHVzaChu
W2Fbc1t0XV1bMl1dKTtmb3IodD0rZjt0PGwubGVuZ3RoLWg7Kyt0KWcucHVzaChuW2FbbFt0XV1b
Ml1dKTtyZXR1cm4gZ312YXIgZT13cixyPVNyO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3Qobik6
KHQueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHQpOmV9LHQueT1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHQpOnJ9LHQpfSxaby5nZW9t
LnBvbHlnb249ZnVuY3Rpb24obil7cmV0dXJuIHNhKG4sWWMpLG59O3ZhciBZYz1aby5nZW9tLnBv
bHlnb24ucHJvdG90eXBlPVtdO1ljLmFyZWE9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD0tMSxlPXRo
aXMubGVuZ3RoLHI9dGhpc1tlLTFdLHU9MDsrK3Q8ZTspbj1yLHI9dGhpc1t0XSx1Kz1uWzFdKnJb
MF0tblswXSpyWzFdO3JldHVybi41KnV9LFljLmNlbnRyb2lkPWZ1bmN0aW9uKG4pe3ZhciB0LGUs
cj0tMSx1PXRoaXMubGVuZ3RoLGk9MCxvPTAsYT10aGlzW3UtMV07Zm9yKGFyZ3VtZW50cy5sZW5n
dGh8fChuPS0xLyg2KnRoaXMuYXJlYSgpKSk7KytyPHU7KXQ9YSxhPXRoaXNbcl0sZT10WzBdKmFb
MV0tYVswXSp0WzFdLGkrPSh0WzBdK2FbMF0pKmUsbys9KHRbMV0rYVsxXSkqZTtyZXR1cm5baSpu
LG8qbl19LFljLmNsaXA9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGUscix1LGksbyxhPU5yKG4pLGM9
LTEscz10aGlzLmxlbmd0aC1Ocih0aGlzKSxsPXRoaXNbcy0xXTsrK2M8czspe2Zvcih0PW4uc2xp
Y2UoKSxuLmxlbmd0aD0wLHU9dGhpc1tjXSxpPXRbKHI9dC5sZW5ndGgtYSktMV0sZT0tMTsrK2U8
cjspbz10W2VdLEFyKG8sbCx1KT8oQXIoaSxsLHUpfHxuLnB1c2goQ3IoaSxvLGwsdSkpLG4ucHVz
aChvKSk6QXIoaSxsLHUpJiZuLnB1c2goQ3IoaSxvLGwsdSkpLGk9bzthJiZuLnB1c2goblswXSks
bD11fXJldHVybiBufTt2YXIgSWMsWmMsVmMsWGMsJGMsQmM9W10sV2M9W107VXIucHJvdG90eXBl
LnByZXBhcmU9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD10aGlzLmVkZ2VzLGU9dC5sZW5ndGg7ZS0t
OyluPXRbZV0uZWRnZSxuLmImJm4uYXx8dC5zcGxpY2UoZSwxKTtyZXR1cm4gdC5zb3J0KEhyKSx0
Lmxlbmd0aH0sV3IucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZ2Uu
bD09PXRoaXMuc2l0ZT90aGlzLmVkZ2UuYTp0aGlzLmVkZ2UuYn0sZW5kOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuZWRnZS5sPT09dGhpcy5zaXRlP3RoaXMuZWRnZS5iOnRoaXMuZWRnZS5hfX0sSnIu
cHJvdG90eXBlPXtpbnNlcnQ6ZnVuY3Rpb24obix0KXt2YXIgZSxyLHU7aWYobil7aWYodC5QPW4s
dC5OPW4uTixuLk4mJihuLk4uUD10KSxuLk49dCxuLlIpe2ZvcihuPW4uUjtuLkw7KW49bi5MO24u
TD10fWVsc2Ugbi5SPXQ7ZT1ufWVsc2UgdGhpcy5fPyhuPW51KHRoaXMuXyksdC5QPW51bGwsdC5O
PW4sbi5QPW4uTD10LGU9bik6KHQuUD10Lk49bnVsbCx0aGlzLl89dCxlPW51bGwpO2Zvcih0Lkw9
dC5SPW51bGwsdC5VPWUsdC5DPSEwLG49dDtlJiZlLkM7KXI9ZS5VLGU9PT1yLkw/KHU9ci5SLHUm
JnUuQz8oZS5DPXUuQz0hMSxyLkM9ITAsbj1yKToobj09PWUuUiYmKEtyKHRoaXMsZSksbj1lLGU9
bi5VKSxlLkM9ITEsci5DPSEwLFFyKHRoaXMscikpKToodT1yLkwsdSYmdS5DPyhlLkM9dS5DPSEx
LHIuQz0hMCxuPXIpOihuPT09ZS5MJiYoUXIodGhpcyxlKSxuPWUsZT1uLlUpLGUuQz0hMSxyLkM9
ITAsS3IodGhpcyxyKSkpLGU9bi5VO3RoaXMuXy5DPSExfSxyZW1vdmU6ZnVuY3Rpb24obil7bi5O
JiYobi5OLlA9bi5QKSxuLlAmJihuLlAuTj1uLk4pLG4uTj1uLlA9bnVsbDt2YXIgdCxlLHIsdT1u
LlUsaT1uLkwsbz1uLlI7aWYoZT1pP28/bnUobyk6aTpvLHU/dS5MPT09bj91Lkw9ZTp1LlI9ZTp0
aGlzLl89ZSxpJiZvPyhyPWUuQyxlLkM9bi5DLGUuTD1pLGkuVT1lLGUhPT1vPyh1PWUuVSxlLlU9
bi5VLG49ZS5SLHUuTD1uLGUuUj1vLG8uVT1lKTooZS5VPXUsdT1lLG49ZS5SKSk6KHI9bi5DLG49
ZSksbiYmKG4uVT11KSwhcil7aWYobiYmbi5DKXJldHVybiBuLkM9ITEsdm9pZCAwO2Rve2lmKG49
PT10aGlzLl8pYnJlYWs7aWYobj09PXUuTCl7aWYodD11LlIsdC5DJiYodC5DPSExLHUuQz0hMCxL
cih0aGlzLHUpLHQ9dS5SKSx0LkwmJnQuTC5DfHx0LlImJnQuUi5DKXt0LlImJnQuUi5DfHwodC5M
LkM9ITEsdC5DPSEwLFFyKHRoaXMsdCksdD11LlIpLHQuQz11LkMsdS5DPXQuUi5DPSExLEtyKHRo
aXMsdSksbj10aGlzLl87YnJlYWt9fWVsc2UgaWYodD11LkwsdC5DJiYodC5DPSExLHUuQz0hMCxR
cih0aGlzLHUpLHQ9dS5MKSx0LkwmJnQuTC5DfHx0LlImJnQuUi5DKXt0LkwmJnQuTC5DfHwodC5S
LkM9ITEsdC5DPSEwLEtyKHRoaXMsdCksdD11LkwpLHQuQz11LkMsdS5DPXQuTC5DPSExLFFyKHRo
aXMsdSksbj10aGlzLl87YnJlYWt9dC5DPSEwLG49dSx1PXUuVX13aGlsZSghbi5DKTtuJiYobi5D
PSExKX19fSxaby5nZW9tLnZvcm9ub2k9ZnVuY3Rpb24obil7ZnVuY3Rpb24gdChuKXt2YXIgdD1u
ZXcgQXJyYXkobi5sZW5ndGgpLHI9YVswXVswXSx1PWFbMF1bMV0saT1hWzFdWzBdLG89YVsxXVsx
XTtyZXR1cm4gdHUoZShuKSxhKS5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGUsYSl7dmFyIGM9ZS5l
ZGdlcyxzPWUuc2l0ZSxsPXRbYV09Yy5sZW5ndGg/Yy5tYXAoZnVuY3Rpb24obil7dmFyIHQ9bi5z
dGFydCgpO3JldHVyblt0LngsdC55XX0pOnMueD49ciYmcy54PD1pJiZzLnk+PXUmJnMueTw9bz9b
W3Isb10sW2ksb10sW2ksdV0sW3IsdV1dOltdO2wucG9pbnQ9blthXX0pLHR9ZnVuY3Rpb24gZShu
KXtyZXR1cm4gbi5tYXAoZnVuY3Rpb24obix0KXtyZXR1cm57eDpNYXRoLnJvdW5kKGkobix0KS9r
YSkqa2EseTpNYXRoLnJvdW5kKG8obix0KS9rYSkqa2EsaTp0fX0pfXZhciByPXdyLHU9U3IsaT1y
LG89dSxhPUpjO3JldHVybiBuP3Qobik6KHQubGlua3M9ZnVuY3Rpb24obil7cmV0dXJuIHR1KGUo
bikpLmVkZ2VzLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gbi5sJiZuLnJ9KS5tYXAoZnVuY3Rp
b24odCl7cmV0dXJue3NvdXJjZTpuW3QubC5pXSx0YXJnZXQ6blt0LnIuaV19fSl9LHQudHJpYW5n
bGVzPWZ1bmN0aW9uKG4pe3ZhciB0PVtdO3JldHVybiB0dShlKG4pKS5jZWxscy5mb3JFYWNoKGZ1
bmN0aW9uKGUscil7Zm9yKHZhciB1LGksbz1lLnNpdGUsYT1lLmVkZ2VzLnNvcnQoSHIpLGM9LTEs
cz1hLmxlbmd0aCxsPWFbcy0xXS5lZGdlLGY9bC5sPT09bz9sLnI6bC5sOysrYzxzOyl1PWwsaT1m
LGw9YVtjXS5lZGdlLGY9bC5sPT09bz9sLnI6bC5sLHI8aS5pJiZyPGYuaSYmcnUobyxpLGYpPDAm
JnQucHVzaChbbltyXSxuW2kuaV0sbltmLmldXSl9KSx0fSx0Lng9ZnVuY3Rpb24obil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGk9YnQocj1uKSx0KTpyfSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KG89YnQodT1uKSx0KTp1fSx0LmNsaXBFeHRlbnQ9ZnVuY3Rpb24o
bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bnVsbD09bj9KYzpuLHQpOmE9PT1KYz9udWxs
OmF9LHQuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90LmNsaXBFeHRl
bnQobiYmW1swLDBdLG5dKTphPT09SmM/bnVsbDphJiZhWzFdfSx0KX07dmFyIEpjPVtbLTFlNiwt
MWU2XSxbMWU2LDFlNl1dO1pvLmdlb20uZGVsYXVuYXk9ZnVuY3Rpb24obil7cmV0dXJuIFpvLmdl
b20udm9yb25vaSgpLnRyaWFuZ2xlcyhuKX0sWm8uZ2VvbS5xdWFkdHJlZT1mdW5jdGlvbihuLHQs
ZSxyLHUpe2Z1bmN0aW9uIGkobil7ZnVuY3Rpb24gaShuLHQsZSxyLHUsaSxvLGEpe2lmKCFpc05h
TihlKSYmIWlzTmFOKHIpKWlmKG4ubGVhZil7dmFyIGM9bi54LGw9bi55O2lmKG51bGwhPWMpaWYo
dWEoYy1lKSt1YShsLXIpPC4wMSlzKG4sdCxlLHIsdSxpLG8sYSk7ZWxzZXt2YXIgZj1uLnBvaW50
O24ueD1uLnk9bi5wb2ludD1udWxsLHMobixmLGMsbCx1LGksbyxhKSxzKG4sdCxlLHIsdSxpLG8s
YSl9ZWxzZSBuLng9ZSxuLnk9cixuLnBvaW50PXR9ZWxzZSBzKG4sdCxlLHIsdSxpLG8sYSl9ZnVu
Y3Rpb24gcyhuLHQsZSxyLHUsbyxhLGMpe3ZhciBzPS41Kih1K2EpLGw9LjUqKG8rYyksZj1lPj1z
LGg9cj49bCxnPShoPDwxKStmO24ubGVhZj0hMSxuPW4ubm9kZXNbZ118fChuLm5vZGVzW2ddPW91
KCkpLGY/dT1zOmE9cyxoP289bDpjPWwsaShuLHQsZSxyLHUsbyxhLGMpfXZhciBsLGYsaCxnLHAs
dixkLG0seSx4PWJ0KGEpLE09YnQoYyk7aWYobnVsbCE9dCl2PXQsZD1lLG09cix5PXU7ZWxzZSBp
ZihtPXk9LSh2PWQ9MS8wKSxmPVtdLGg9W10scD1uLmxlbmd0aCxvKWZvcihnPTA7cD5nOysrZyls
PW5bZ10sbC54PHYmJih2PWwueCksbC55PGQmJihkPWwueSksbC54Pm0mJihtPWwueCksbC55Pnkm
Jih5PWwueSksZi5wdXNoKGwueCksaC5wdXNoKGwueSk7ZWxzZSBmb3IoZz0wO3A+ZzsrK2cpe3Zh
ciBfPSt4KGw9bltnXSxnKSxiPStNKGwsZyk7dj5fJiYodj1fKSxkPmImJihkPWIpLF8+bSYmKG09
XyksYj55JiYoeT1iKSxmLnB1c2goXyksaC5wdXNoKGIpfXZhciB3PW0tdixTPXktZDt3PlM/eT1k
K3c6bT12K1M7dmFyIGs9b3UoKTtpZihrLmFkZD1mdW5jdGlvbihuKXtpKGssbiwreChuLCsrZyks
K00obixnKSx2LGQsbSx5KX0say52aXNpdD1mdW5jdGlvbihuKXthdShuLGssdixkLG0seSl9LGc9
LTEsbnVsbD09dCl7Zm9yKDsrK2c8cDspaShrLG5bZ10sZltnXSxoW2ddLHYsZCxtLHkpOy0tZ31l
bHNlIG4uZm9yRWFjaChrLmFkZCk7cmV0dXJuIGY9aD1uPWw9bnVsbCxrfXZhciBvLGE9d3IsYz1T
cjtyZXR1cm4obz1hcmd1bWVudHMubGVuZ3RoKT8oYT11dSxjPWl1LDM9PT1vJiYodT1lLHI9dCxl
PXQ9MCksaShuKSk6KGkueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1u
LGkpOmF9LGkueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1uLGkpOmN9
LGkuZXh0ZW50PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT1uP3Q9
ZT1yPXU9bnVsbDoodD0rblswXVswXSxlPStuWzBdWzFdLHI9K25bMV1bMF0sdT0rblsxXVsxXSks
aSk6bnVsbD09dD9udWxsOltbdCxlXSxbcix1XV19LGkuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8obnVsbD09bj90PWU9cj11PW51bGw6KHQ9ZT0wLHI9K25bMF0sdT0r
blsxXSksaSk6bnVsbD09dD9udWxsOltyLXQsdS1lXX0saSl9LFpvLmludGVycG9sYXRlUmdiPWN1
LFpvLmludGVycG9sYXRlT2JqZWN0PXN1LFpvLmludGVycG9sYXRlTnVtYmVyPWx1LFpvLmludGVy
cG9sYXRlU3RyaW5nPWZ1O3ZhciBHYz0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1b
LStdP1xkKyk/L2csS2M9bmV3IFJlZ0V4cChHYy5zb3VyY2UsImciKTtaby5pbnRlcnBvbGF0ZT1o
dSxaby5pbnRlcnBvbGF0b3JzPVtmdW5jdGlvbihuLHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybigi
c3RyaW5nIj09PWU/SWEuaGFzKHQpfHwvXigjfHJnYlwofGhzbFwoKS8udGVzdCh0KT9jdTpmdTp0
IGluc3RhbmNlb2YgZXQ/Y3U6QXJyYXkuaXNBcnJheSh0KT9ndToib2JqZWN0Ij09PWUmJmlzTmFO
KHQpP3N1Omx1KShuLHQpfV0sWm8uaW50ZXJwb2xhdGVBcnJheT1ndTt2YXIgUWM9ZnVuY3Rpb24o
KXtyZXR1cm4gd3R9LG5zPVpvLm1hcCh7bGluZWFyOlFjLHBvbHk6TXUscXVhZDpmdW5jdGlvbigp
e3JldHVybiBtdX0sY3ViaWM6ZnVuY3Rpb24oKXtyZXR1cm4geXV9LHNpbjpmdW5jdGlvbigpe3Jl
dHVybiBfdX0sZXhwOmZ1bmN0aW9uKCl7cmV0dXJuIGJ1fSxjaXJjbGU6ZnVuY3Rpb24oKXtyZXR1
cm4gd3V9LGVsYXN0aWM6U3UsYmFjazprdSxib3VuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gRXV9fSks
dHM9Wm8ubWFwKHsiaW4iOnd0LG91dDp2dSwiaW4tb3V0IjpkdSwib3V0LWluIjpmdW5jdGlvbihu
KXtyZXR1cm4gZHUodnUobikpfX0pO1pvLmVhc2U9ZnVuY3Rpb24obil7dmFyIHQ9bi5pbmRleE9m
KCItIiksZT10Pj0wP24uc3Vic3RyaW5nKDAsdCk6bixyPXQ+PTA/bi5zdWJzdHJpbmcodCsxKToi
aW4iO3JldHVybiBlPW5zLmdldChlKXx8UWMscj10cy5nZXQocil8fHd0LHB1KHIoZS5hcHBseShu
dWxsLFZvLmNhbGwoYXJndW1lbnRzLDEpKSkpfSxaby5pbnRlcnBvbGF0ZUhjbD1BdSxaby5pbnRl
cnBvbGF0ZUhzbD1DdSxaby5pbnRlcnBvbGF0ZUxhYj1OdSxaby5pbnRlcnBvbGF0ZVJvdW5kPXp1
LFpvLnRyYW5zZm9ybT1mdW5jdGlvbihuKXt2YXIgdD0kby5jcmVhdGVFbGVtZW50TlMoWm8ubnMu
cHJlZml4LnN2ZywiZyIpO3JldHVybihaby50cmFuc2Zvcm09ZnVuY3Rpb24obil7aWYobnVsbCE9
bil7dC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsbik7dmFyIGU9dC50cmFuc2Zvcm0uYmFzZVZh
bC5jb25zb2xpZGF0ZSgpfXJldHVybiBuZXcgTHUoZT9lLm1hdHJpeDplcyl9KShuKX0sTHUucHJv
dG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMudHJhbnNs
YXRlKyIpcm90YXRlKCIrdGhpcy5yb3RhdGUrIilza2V3WCgiK3RoaXMuc2tldysiKXNjYWxlKCIr
dGhpcy5zY2FsZSsiKSJ9O3ZhciBlcz17YToxLGI6MCxjOjAsZDoxLGU6MCxmOjB9O1pvLmludGVy
cG9sYXRlVHJhbnNmb3JtPUR1LFpvLmxheW91dD17fSxaby5sYXlvdXQuYnVuZGxlPWZ1bmN0aW9u
KCl7cmV0dXJuIGZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1bXSxlPS0xLHI9bi5sZW5ndGg7KytlPHI7
KXQucHVzaChqdShuW2VdKSk7cmV0dXJuIHR9fSxaby5sYXlvdXQuY2hvcmQ9ZnVuY3Rpb24oKXtm
dW5jdGlvbiBuKCl7dmFyIG4scyxmLGgsZyxwPXt9LHY9W10sZD1aby5yYW5nZShpKSxtPVtdO2Zv
cihlPVtdLHI9W10sbj0wLGg9LTE7KytoPGk7KXtmb3Iocz0wLGc9LTE7KytnPGk7KXMrPXVbaF1b
Z107di5wdXNoKHMpLG0ucHVzaChaby5yYW5nZShpKSksbis9c31mb3IobyYmZC5zb3J0KGZ1bmN0
aW9uKG4sdCl7cmV0dXJuIG8odltuXSx2W3RdKX0pLGEmJm0uZm9yRWFjaChmdW5jdGlvbihuLHQp
e24uc29ydChmdW5jdGlvbihuLGUpe3JldHVybiBhKHVbdF1bbl0sdVt0XVtlXSl9KX0pLG49KHdh
LWwqaSkvbixzPTAsaD0tMTsrK2g8aTspe2ZvcihmPXMsZz0tMTsrK2c8aTspe3ZhciB5PWRbaF0s
eD1tW3ldW2ddLE09dVt5XVt4XSxfPXMsYj1zKz1NKm47cFt5KyItIit4XT17aW5kZXg6eSxzdWJp
bmRleDp4LHN0YXJ0QW5nbGU6XyxlbmRBbmdsZTpiLHZhbHVlOk19fXJbeV09e2luZGV4Onksc3Rh
cnRBbmdsZTpmLGVuZEFuZ2xlOnMsdmFsdWU6KHMtZikvbn0scys9bH1mb3IoaD0tMTsrK2g8aTsp
Zm9yKGc9aC0xOysrZzxpOyl7dmFyIHc9cFtoKyItIitnXSxTPXBbZysiLSIraF07KHcudmFsdWV8
fFMudmFsdWUpJiZlLnB1c2gody52YWx1ZTxTLnZhbHVlP3tzb3VyY2U6Uyx0YXJnZXQ6d306e3Nv
dXJjZTp3LHRhcmdldDpTfSl9YyYmdCgpfWZ1bmN0aW9uIHQoKXtlLnNvcnQoZnVuY3Rpb24obix0
KXtyZXR1cm4gYygobi5zb3VyY2UudmFsdWUrbi50YXJnZXQudmFsdWUpLzIsKHQuc291cmNlLnZh
bHVlK3QudGFyZ2V0LnZhbHVlKS8yKX0pfXZhciBlLHIsdSxpLG8sYSxjLHM9e30sbD0wO3JldHVy
biBzLm1hdHJpeD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0odT1uKSYm
dS5sZW5ndGgsZT1yPW51bGwscyk6dX0scy5wYWRkaW5nPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhsPW4sZT1yPW51bGwscyk6bH0scy5zb3J0R3JvdXBzPWZ1bmN0aW9uKG4p
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPW4sZT1yPW51bGwscyk6b30scy5zb3J0U3ViZ3Jv
dXBzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPW4sZT1udWxsLHMpOmF9
LHMuc29ydENob3Jkcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1uLGUm
JnQoKSxzKTpjfSxzLmNob3Jkcz1mdW5jdGlvbigpe3JldHVybiBlfHxuKCksZX0scy5ncm91cHM9
ZnVuY3Rpb24oKXtyZXR1cm4gcnx8bigpLHJ9LHN9LFpvLmxheW91dC5mb3JjZT1mdW5jdGlvbigp
e2Z1bmN0aW9uIG4obil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLHUpe2lmKHQucG9pbnQhPT1uKXt2
YXIgaT10LmN4LW4ueCxvPXQuY3ktbi55LGE9dS1lLGM9aSppK28qbztpZihjPmEqYS9kKXtpZihw
PmMpe3ZhciBzPXQuY2hhcmdlL2M7bi5weC09aSpzLG4ucHktPW8qc31yZXR1cm4hMH1pZih0LnBv
aW50JiZjJiZwPmMpe3ZhciBzPXQucG9pbnRDaGFyZ2UvYztuLnB4LT1pKnMsbi5weS09bypzfX1y
ZXR1cm4hdC5jaGFyZ2V9fWZ1bmN0aW9uIHQobil7bi5weD1aby5ldmVudC54LG4ucHk9Wm8uZXZl
bnQueSxhLnJlc3VtZSgpfXZhciBlLHIsdSxpLG8sYT17fSxjPVpvLmRpc3BhdGNoKCJzdGFydCIs
InRpY2siLCJlbmQiKSxzPVsxLDFdLGw9LjksZj1ycyxoPXVzLGc9LTMwLHA9aXMsdj0uMSxkPS42
NCxtPVtdLHk9W107cmV0dXJuIGEudGljaz1mdW5jdGlvbigpe2lmKChyKj0uOTkpPC4wMDUpcmV0
dXJuIGMuZW5kKHt0eXBlOiJlbmQiLGFscGhhOnI9MH0pLCEwO3ZhciB0LGUsYSxmLGgscCxkLHgs
TSxfPW0ubGVuZ3RoLGI9eS5sZW5ndGg7Zm9yKGU9MDtiPmU7KytlKWE9eVtlXSxmPWEuc291cmNl
LGg9YS50YXJnZXQseD1oLngtZi54LE09aC55LWYueSwocD14KngrTSpNKSYmKHA9cippW2VdKigo
cD1NYXRoLnNxcnQocCkpLXVbZV0pL3AseCo9cCxNKj1wLGgueC09eCooZD1mLndlaWdodC8oaC53
ZWlnaHQrZi53ZWlnaHQpKSxoLnktPU0qZCxmLngrPXgqKGQ9MS1kKSxmLnkrPU0qZCk7aWYoKGQ9
cip2KSYmKHg9c1swXS8yLE09c1sxXS8yLGU9LTEsZCkpZm9yKDsrK2U8XzspYT1tW2VdLGEueCs9
KHgtYS54KSpkLGEueSs9KE0tYS55KSpkO2lmKGcpZm9yKFZ1KHQ9Wm8uZ2VvbS5xdWFkdHJlZSht
KSxyLG8pLGU9LTE7KytlPF87KShhPW1bZV0pLmZpeGVkfHx0LnZpc2l0KG4oYSkpO2ZvcihlPS0x
OysrZTxfOylhPW1bZV0sYS5maXhlZD8oYS54PWEucHgsYS55PWEucHkpOihhLngtPShhLnB4LShh
LnB4PWEueCkpKmwsYS55LT0oYS5weS0oYS5weT1hLnkpKSpsKTtjLnRpY2soe3R5cGU6InRpY2si
LGFscGhhOnJ9KX0sYS5ub2Rlcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
bT1uLGEpOm19LGEubGlua3M9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9
bixhKTp5fSxhLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bixh
KTpzfSxhLmxpbmtEaXN0YW5jZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Zj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOituLGEpOmZ9LGEuZGlzdGFuY2U9YS5saW5rRGlzdGFu
Y2UsYS5saW5rU3RyZW5ndGg9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9
ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjorbixhKTpofSxhLmZyaWN0aW9uPWZ1bmN0aW9uKG4pe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPStuLGEpOmx9LGEuY2hhcmdlPWZ1bmN0aW9uKG4pe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246K24sYSk6Z30s
YS5jaGFyZ2VEaXN0YW5jZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1u
Km4sYSk6TWF0aC5zcXJ0KHApfSxhLmdyYXZpdHk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHY9K24sYSk6dn0sYS50aGV0YT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZD1uKm4sYSk6TWF0aC5zcXJ0KGQpfSxhLmFscGhhPWZ1bmN0aW9uKG4pe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhuPStuLHI/cj1uPjA/bjowOm4+MCYmKGMuc3RhcnQoe3R5cGU6
InN0YXJ0IixhbHBoYTpyPW59KSxaby50aW1lcihhLnRpY2spKSxhKTpyfSxhLnN0YXJ0PWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gbihuLHIpe2lmKCFlKXtmb3IoZT1uZXcgQXJyYXkoYyksYT0wO2M+YTsr
K2EpZVthXT1bXTtmb3IoYT0wO3M+YTsrK2Epe3ZhciB1PXlbYV07ZVt1LnNvdXJjZS5pbmRleF0u
cHVzaCh1LnRhcmdldCksZVt1LnRhcmdldC5pbmRleF0ucHVzaCh1LnNvdXJjZSl9fWZvcih2YXIg
aSxvPWVbdF0sYT0tMSxzPW8ubGVuZ3RoOysrYTxzOylpZighaXNOYU4oaT1vW2FdW25dKSlyZXR1
cm4gaTtyZXR1cm4gTWF0aC5yYW5kb20oKSpyfXZhciB0LGUscixjPW0ubGVuZ3RoLGw9eS5sZW5n
dGgscD1zWzBdLHY9c1sxXTtmb3IodD0wO2M+dDsrK3QpKHI9bVt0XSkuaW5kZXg9dCxyLndlaWdo
dD0wO2Zvcih0PTA7bD50OysrdClyPXlbdF0sIm51bWJlciI9PXR5cGVvZiByLnNvdXJjZSYmKHIu
c291cmNlPW1bci5zb3VyY2VdKSwibnVtYmVyIj09dHlwZW9mIHIudGFyZ2V0JiYoci50YXJnZXQ9
bVtyLnRhcmdldF0pLCsrci5zb3VyY2Uud2VpZ2h0LCsrci50YXJnZXQud2VpZ2h0O2Zvcih0PTA7
Yz50OysrdClyPW1bdF0saXNOYU4oci54KSYmKHIueD1uKCJ4IixwKSksaXNOYU4oci55KSYmKHIu
eT1uKCJ5Iix2KSksaXNOYU4oci5weCkmJihyLnB4PXIueCksaXNOYU4oci5weSkmJihyLnB5PXIu
eSk7aWYodT1bXSwiZnVuY3Rpb24iPT10eXBlb2YgZilmb3IodD0wO2w+dDsrK3QpdVt0XT0rZi5j
YWxsKHRoaXMseVt0XSx0KTtlbHNlIGZvcih0PTA7bD50OysrdCl1W3RdPWY7aWYoaT1bXSwiZnVu
Y3Rpb24iPT10eXBlb2YgaClmb3IodD0wO2w+dDsrK3QpaVt0XT0raC5jYWxsKHRoaXMseVt0XSx0
KTtlbHNlIGZvcih0PTA7bD50OysrdClpW3RdPWg7aWYobz1bXSwiZnVuY3Rpb24iPT10eXBlb2Yg
Zylmb3IodD0wO2M+dDsrK3Qpb1t0XT0rZy5jYWxsKHRoaXMsbVt0XSx0KTtlbHNlIGZvcih0PTA7
Yz50OysrdClvW3RdPWc7cmV0dXJuIGEucmVzdW1lKCl9LGEucmVzdW1lPWZ1bmN0aW9uKCl7cmV0
dXJuIGEuYWxwaGEoLjEpfSxhLnN0b3A9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hbHBoYSgwKX0sYS5k
cmFnPWZ1bmN0aW9uKCl7cmV0dXJuIGV8fChlPVpvLmJlaGF2aW9yLmRyYWcoKS5vcmlnaW4od3Qp
Lm9uKCJkcmFnc3RhcnQuZm9yY2UiLE91KS5vbigiZHJhZy5mb3JjZSIsdCkub24oImRyYWdlbmQu
Zm9yY2UiLFl1KSksYXJndW1lbnRzLmxlbmd0aD8odGhpcy5vbigibW91c2VvdmVyLmZvcmNlIixJ
dSkub24oIm1vdXNlb3V0LmZvcmNlIixadSkuY2FsbChlKSx2b2lkIDApOmV9LFpvLnJlYmluZChh
LGMsIm9uIil9O3ZhciBycz0yMCx1cz0xLGlzPTEvMDtaby5sYXlvdXQuaGllcmFyY2h5PWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gbih1KXt2YXIgaSxvPVt1XSxhPVtdO2Zvcih1LmRlcHRoPTA7bnVsbCE9
KGk9by5wb3AoKSk7KWlmKGEucHVzaChpKSwocz1lLmNhbGwobixpLGkuZGVwdGgpKSYmKGM9cy5s
ZW5ndGgpKXtmb3IodmFyIGMscyxsOy0tYz49MDspby5wdXNoKGw9c1tjXSksbC5wYXJlbnQ9aSxs
LmRlcHRoPWkuZGVwdGgrMTtyJiYoaS52YWx1ZT0wKSxpLmNoaWxkcmVuPXN9ZWxzZSByJiYoaS52
YWx1ZT0rci5jYWxsKG4saSxpLmRlcHRoKXx8MCksZGVsZXRlIGkuY2hpbGRyZW47cmV0dXJuIEJ1
KHUsZnVuY3Rpb24obil7dmFyIGUsdTt0JiYoZT1uLmNoaWxkcmVuKSYmZS5zb3J0KHQpLHImJih1
PW4ucGFyZW50KSYmKHUudmFsdWUrPW4udmFsdWUpfSksYX12YXIgdD1HdSxlPVd1LHI9SnU7cmV0
dXJuIG4uc29ydD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLG4pOnR9
LG4uY2hpbGRyZW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTpl
fSxuLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbik6cn0s
bi5yZXZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiByJiYoJHUodCxmdW5jdGlvbihuKXtuLmNoaWxk
cmVuJiYobi52YWx1ZT0wKX0pLEJ1KHQsZnVuY3Rpb24odCl7dmFyIGU7dC5jaGlsZHJlbnx8KHQu
dmFsdWU9K3IuY2FsbChuLHQsdC5kZXB0aCl8fDApLChlPXQucGFyZW50KSYmKGUudmFsdWUrPXQu
dmFsdWUpfSkpLHR9LG59LFpvLmxheW91dC5wYXJ0aXRpb249ZnVuY3Rpb24oKXtmdW5jdGlvbiBu
KHQsZSxyLHUpe3ZhciBpPXQuY2hpbGRyZW47aWYodC54PWUsdC55PXQuZGVwdGgqdSx0LmR4PXIs
dC5keT11LGkmJihvPWkubGVuZ3RoKSl7dmFyIG8sYSxjLHM9LTE7Zm9yKHI9dC52YWx1ZT9yL3Qu
dmFsdWU6MDsrK3M8bzspbihhPWlbc10sZSxjPWEudmFsdWUqcix1KSxlKz1jfX1mdW5jdGlvbiB0
KG4pe3ZhciBlPW4uY2hpbGRyZW4scj0wO2lmKGUmJih1PWUubGVuZ3RoKSlmb3IodmFyIHUsaT0t
MTsrK2k8dTspcj1NYXRoLm1heChyLHQoZVtpXSkpO3JldHVybiAxK3J9ZnVuY3Rpb24gZShlLGkp
e3ZhciBvPXIuY2FsbCh0aGlzLGUsaSk7cmV0dXJuIG4ob1swXSwwLHVbMF0sdVsxXS90KG9bMF0p
KSxvfXZhciByPVpvLmxheW91dC5oaWVyYXJjaHkoKSx1PVsxLDFdO3JldHVybiBlLnNpemU9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bixlKTp1fSxYdShlLHIpfSxaby5s
YXlvdXQucGllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihpKXt2YXIgbz1pLm1hcChmdW5jdGlvbihl
LHIpe3JldHVybit0LmNhbGwobixlLHIpfSksYT0rKCJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBw
bHkodGhpcyxhcmd1bWVudHMpOnIpLGM9KCgiZnVuY3Rpb24iPT10eXBlb2YgdT91LmFwcGx5KHRo
aXMsYXJndW1lbnRzKTp1KS1hKS9aby5zdW0obykscz1aby5yYW5nZShpLmxlbmd0aCk7bnVsbCE9
ZSYmcy5zb3J0KGU9PT1vcz9mdW5jdGlvbihuLHQpe3JldHVybiBvW3RdLW9bbl19OmZ1bmN0aW9u
KG4sdCl7cmV0dXJuIGUoaVtuXSxpW3RdKX0pO3ZhciBsPVtdO3JldHVybiBzLmZvckVhY2goZnVu
Y3Rpb24obil7dmFyIHQ7bFtuXT17ZGF0YTppW25dLHZhbHVlOnQ9b1tuXSxzdGFydEFuZ2xlOmEs
ZW5kQW5nbGU6YSs9dCpjfX0pLGx9dmFyIHQ9TnVtYmVyLGU9b3Mscj0wLHU9d2E7cmV0dXJuIG4u
dmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0fSxuLnNv
cnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLnN0YXJ0
QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxuLmVu
ZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsbik6dX0sbn07
dmFyIG9zPXt9O1pvLmxheW91dC5zdGFjaz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oYSxjKXt2YXIg
cz1hLm1hcChmdW5jdGlvbihlLHIpe3JldHVybiB0LmNhbGwobixlLHIpfSksbD1zLm1hcChmdW5j
dGlvbih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm5baS5jYWxsKG4sdCxlKSxv
LmNhbGwobix0LGUpXX0pfSksZj1lLmNhbGwobixsLGMpO3M9Wm8ucGVybXV0ZShzLGYpLGw9Wm8u
cGVybXV0ZShsLGYpO3ZhciBoLGcscCx2PXIuY2FsbChuLGwsYyksZD1zLmxlbmd0aCxtPXNbMF0u
bGVuZ3RoO2ZvcihnPTA7bT5nOysrZylmb3IodS5jYWxsKG4sc1swXVtnXSxwPXZbZ10sbFswXVtn
XVsxXSksaD0xO2Q+aDsrK2gpdS5jYWxsKG4sc1toXVtnXSxwKz1sW2gtMV1bZ11bMV0sbFtoXVtn
XVsxXSk7cmV0dXJuIGF9dmFyIHQ9d3QsZT1laSxyPXJpLHU9dGksaT1RdSxvPW5pO3JldHVybiBu
LnZhbHVlcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLG4pOnR9LG4u
b3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09
dHlwZW9mIHQ/dDphcy5nZXQodCl8fGVpLG4pOmV9LG4ub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Y3MuZ2V0KHQpfHxy
aSxuKTpyfSxuLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxuKTpp
fSxuLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCxuKTpvfSxuLm91
dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LG4pOnV9LG59O3ZhciBh
cz1aby5tYXAoeyJpbnNpZGUtb3V0IjpmdW5jdGlvbihuKXt2YXIgdCxlLHI9bi5sZW5ndGgsdT1u
Lm1hcCh1aSksaT1uLm1hcChpaSksbz1aby5yYW5nZShyKS5zb3J0KGZ1bmN0aW9uKG4sdCl7cmV0
dXJuIHVbbl0tdVt0XX0pLGE9MCxjPTAscz1bXSxsPVtdO2Zvcih0PTA7cj50OysrdCllPW9bdF0s
Yz5hPyhhKz1pW2VdLHMucHVzaChlKSk6KGMrPWlbZV0sbC5wdXNoKGUpKTtyZXR1cm4gbC5yZXZl
cnNlKCkuY29uY2F0KHMpfSxyZXZlcnNlOmZ1bmN0aW9uKG4pe3JldHVybiBaby5yYW5nZShuLmxl
bmd0aCkucmV2ZXJzZSgpfSwiZGVmYXVsdCI6ZWl9KSxjcz1aby5tYXAoe3NpbGhvdWV0dGU6ZnVu
Y3Rpb24obil7dmFyIHQsZSxyLHU9bi5sZW5ndGgsaT1uWzBdLmxlbmd0aCxvPVtdLGE9MCxjPVtd
O2ZvcihlPTA7aT5lOysrZSl7Zm9yKHQ9MCxyPTA7dT50O3QrKylyKz1uW3RdW2VdWzFdO3I+YSYm
KGE9ciksby5wdXNoKHIpfWZvcihlPTA7aT5lOysrZSljW2VdPShhLW9bZV0pLzI7cmV0dXJuIGN9
LHdpZ2dsZTpmdW5jdGlvbihuKXt2YXIgdCxlLHIsdSxpLG8sYSxjLHMsbD1uLmxlbmd0aCxmPW5b
MF0saD1mLmxlbmd0aCxnPVtdO2ZvcihnWzBdPWM9cz0wLGU9MTtoPmU7KytlKXtmb3IodD0wLHU9
MDtsPnQ7Kyt0KXUrPW5bdF1bZV1bMV07Zm9yKHQ9MCxpPTAsYT1mW2VdWzBdLWZbZS0xXVswXTts
PnQ7Kyt0KXtmb3Iocj0wLG89KG5bdF1bZV1bMV0tblt0XVtlLTFdWzFdKS8oMiphKTt0PnI7Kyty
KW8rPShuW3JdW2VdWzFdLW5bcl1bZS0xXVsxXSkvYTtpKz1vKm5bdF1bZV1bMV19Z1tlXT1jLT11
P2kvdSphOjAscz5jJiYocz1jKX1mb3IoZT0wO2g+ZTsrK2UpZ1tlXS09cztyZXR1cm4gZ30sZXhw
YW5kOmZ1bmN0aW9uKG4pe3ZhciB0LGUscix1PW4ubGVuZ3RoLGk9blswXS5sZW5ndGgsbz0xL3Us
YT1bXTtmb3IoZT0wO2k+ZTsrK2Upe2Zvcih0PTAscj0wO3U+dDt0Kyspcis9blt0XVtlXVsxXTtp
ZihyKWZvcih0PTA7dT50O3QrKyluW3RdW2VdWzFdLz1yO2Vsc2UgZm9yKHQ9MDt1PnQ7dCsrKW5b
dF1bZV1bMV09b31mb3IoZT0wO2k+ZTsrK2UpYVtlXT0wO3JldHVybiBhfSx6ZXJvOnJpfSk7Wm8u
bGF5b3V0Lmhpc3RvZ3JhbT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixpKXtmb3IodmFyIG8sYSxj
PVtdLHM9bi5tYXAoZSx0aGlzKSxsPXIuY2FsbCh0aGlzLHMsaSksZj11LmNhbGwodGhpcyxsLHMs
aSksaT0tMSxoPXMubGVuZ3RoLGc9Zi5sZW5ndGgtMSxwPXQ/MToxL2g7KytpPGc7KW89Y1tpXT1b
XSxvLmR4PWZbaSsxXS0oby54PWZbaV0pLG8ueT0wO2lmKGc+MClmb3IoaT0tMTsrK2k8aDspYT1z
W2ldLGE+PWxbMF0mJmE8PWxbMV0mJihvPWNbWm8uYmlzZWN0KGYsYSwxLGcpLTFdLG8ueSs9cCxv
LnB1c2gobltpXSkpO3JldHVybiBjfXZhciB0PSEwLGU9TnVtYmVyLHI9c2ksdT1haTtyZXR1cm4g
bi52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4u
cmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YnQodCksbik6cn0s
bi5iaW5zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJudW1iZXIiPT10
eXBlb2YgdD9mdW5jdGlvbihuKXtyZXR1cm4gY2kobix0KX06YnQodCksbik6dX0sbi5mcmVxdWVu
Y3k9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ISFlLG4pOnR9LG59LFpv
LmxheW91dC5wYWNrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLGkpe3ZhciBvPWUuY2FsbCh0aGlz
LG4saSksYT1vWzBdLGM9dVswXSxzPXVbMV0sbD1udWxsPT10P01hdGguc3FydDoiZnVuY3Rpb24i
PT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7cmV0dXJuIHR9O2lmKGEueD1hLnk9MCxCdShhLGZ1bmN0
aW9uKG4pe24ucj0rbChuLnZhbHVlKX0pLEJ1KGEscGkpLHIpe3ZhciBmPXIqKHQ/MTpNYXRoLm1h
eCgyKmEuci9jLDIqYS5yL3MpKS8yO0J1KGEsZnVuY3Rpb24obil7bi5yKz1mfSksQnUoYSxwaSks
QnUoYSxmdW5jdGlvbihuKXtuLnItPWZ9KX1yZXR1cm4gbWkoYSxjLzIscy8yLHQ/MToxL01hdGgu
bWF4KDIqYS5yL2MsMiphLnIvcykpLG99dmFyIHQsZT1aby5sYXlvdXQuaGllcmFyY2h5KCkuc29y
dChsaSkscj0wLHU9WzEsMV07cmV0dXJuIG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odT10LG4pOnV9LG4ucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh0PW51bGw9PWV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6K2Usbik6dH0sbi5w
YWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LG4pOnJ9LFh1
KG4sZSl9LFpvLmxheW91dC50cmVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHUpe3ZhciBsPW8u
Y2FsbCh0aGlzLG4sdSksZj1sWzBdLGg9dChmKTtpZihCdShoLGUpLGgucGFyZW50Lm09LWgueiwk
dShoLHIpLHMpJHUoZixpKTtlbHNle3ZhciBnPWYscD1mLHY9ZjskdShmLGZ1bmN0aW9uKG4pe24u
eDxnLngmJihnPW4pLG4ueD5wLngmJihwPW4pLG4uZGVwdGg+di5kZXB0aCYmKHY9bil9KTt2YXIg
ZD1hKGcscCkvMi1nLngsbT1jWzBdLyhwLngrYShwLGcpLzIrZCkseT1jWzFdLyh2LmRlcHRofHwx
KTskdShmLGZ1bmN0aW9uKG4pe24ueD0obi54K2QpKm0sbi55PW4uZGVwdGgqeX0pfXJldHVybiBs
fWZ1bmN0aW9uIHQobil7Zm9yKHZhciB0LGU9e0E6bnVsbCxjaGlsZHJlbjpbbl19LHI9W2VdO251
bGwhPSh0PXIucG9wKCkpOylmb3IodmFyIHUsaT10LmNoaWxkcmVuLG89MCxhPWkubGVuZ3RoO2E+
bzsrK28pci5wdXNoKChpW29dPXU9e186aVtvXSxwYXJlbnQ6dCxjaGlsZHJlbjoodT1pW29dLmNo
aWxkcmVuKSYmdS5zbGljZSgpfHxbXSxBOm51bGwsYTpudWxsLHo6MCxtOjAsYzowLHM6MCx0Om51
bGwsaTpvfSkuYT11KTtyZXR1cm4gZS5jaGlsZHJlblswXX1mdW5jdGlvbiBlKG4pe3ZhciB0PW4u
Y2hpbGRyZW4sZT1uLnBhcmVudC5jaGlsZHJlbixyPW4uaT9lW24uaS0xXTpudWxsO2lmKHQubGVu
Z3RoKXt3aShuKTt2YXIgaT0odFswXS56K3RbdC5sZW5ndGgtMV0ueikvMjtyPyhuLno9ci56K2Eo
bi5fLHIuXyksbi5tPW4uei1pKTpuLno9aX1lbHNlIHImJihuLno9ci56K2Eobi5fLHIuXykpO24u
cGFyZW50LkE9dShuLHIsbi5wYXJlbnQuQXx8ZVswXSl9ZnVuY3Rpb24gcihuKXtuLl8ueD1uLnor
bi5wYXJlbnQubSxuLm0rPW4ucGFyZW50Lm19ZnVuY3Rpb24gdShuLHQsZSl7aWYodCl7Zm9yKHZh
ciByLHU9bixpPW4sbz10LGM9dS5wYXJlbnQuY2hpbGRyZW5bMF0scz11Lm0sbD1pLm0sZj1vLm0s
aD1jLm07bz1faShvKSx1PU1pKHUpLG8mJnU7KWM9TWkoYyksaT1faShpKSxpLmE9bixyPW8ueitm
LXUuei1zK2Eoby5fLHUuXykscj4wJiYoYmkoU2kobyxuLGUpLG4scikscys9cixsKz1yKSxmKz1v
Lm0scys9dS5tLGgrPWMubSxsKz1pLm07byYmIV9pKGkpJiYoaS50PW8saS5tKz1mLWwpLHUmJiFN
aShjKSYmKGMudD11LGMubSs9cy1oLGU9bil9cmV0dXJuIGV9ZnVuY3Rpb24gaShuKXtuLngqPWNb
MF0sbi55PW4uZGVwdGgqY1sxXX12YXIgbz1aby5sYXlvdXQuaGllcmFyY2h5KCkuc29ydChudWxs
KS52YWx1ZShudWxsKSxhPXhpLGM9WzEsMV0scz1udWxsO3JldHVybiBuLnNlcGFyYXRpb249ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxuKTphfSxuLnNpemU9ZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bnVsbD09KGM9dCk/aTpudWxsLG4pOnM/
bnVsbDpjfSxuLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhz
PW51bGw9PShjPXQpP251bGw6aSxuKTpzP2M6bnVsbH0sWHUobixvKX0sWm8ubGF5b3V0LmNsdXN0
ZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4saSl7dmFyIG8sYT10LmNhbGwodGhpcyxuLGkpLGM9
YVswXSxzPTA7QnUoYyxmdW5jdGlvbihuKXt2YXIgdD1uLmNoaWxkcmVuO3QmJnQubGVuZ3RoPyhu
Lng9RWkodCksbi55PWtpKHQpKToobi54PW8/cys9ZShuLG8pOjAsbi55PTAsbz1uKX0pO3ZhciBs
PUFpKGMpLGY9Q2koYyksaD1sLngtZShsLGYpLzIsZz1mLngrZShmLGwpLzI7cmV0dXJuIEJ1KGMs
dT9mdW5jdGlvbihuKXtuLng9KG4ueC1jLngpKnJbMF0sbi55PShjLnktbi55KSpyWzFdfTpmdW5j
dGlvbihuKXtuLng9KG4ueC1oKS8oZy1oKSpyWzBdLG4ueT0oMS0oYy55P24ueS9jLnk6MSkpKnJb
MV19KSxhfXZhciB0PVpvLmxheW91dC5oaWVyYXJjaHkoKS5zb3J0KG51bGwpLnZhbHVlKG51bGwp
LGU9eGkscj1bMSwxXSx1PSExO3JldHVybiBuLnNlcGFyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHU9bnVsbD09KHI9dCksbik6dT9udWxsOnJ9LG4ubm9kZVNpemU9ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bnVsbCE9KHI9dCksbik6dT9yOm51
bGx9LFh1KG4sdCl9LFpvLmxheW91dC50cmVlbWFwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHQp
e2Zvcih2YXIgZSxyLHU9LTEsaT1uLmxlbmd0aDsrK3U8aTspcj0oZT1uW3VdKS52YWx1ZSooMD50
PzA6dCksZS5hcmVhPWlzTmFOKHIpfHwwPj1yPzA6cn1mdW5jdGlvbiB0KGUpe3ZhciBpPWUuY2hp
bGRyZW47aWYoaSYmaS5sZW5ndGgpe3ZhciBvLGEsYyxzPWYoZSksbD1bXSxoPWkuc2xpY2UoKSxw
PTEvMCx2PSJzbGljZSI9PT1nP3MuZHg6ImRpY2UiPT09Zz9zLmR5OiJzbGljZS1kaWNlIj09PWc/
MSZlLmRlcHRoP3MuZHk6cy5keDpNYXRoLm1pbihzLmR4LHMuZHkpO2ZvcihuKGgscy5keCpzLmR5
L2UudmFsdWUpLGwuYXJlYT0wOyhjPWgubGVuZ3RoKT4wOylsLnB1c2gobz1oW2MtMV0pLGwuYXJl
YSs9by5hcmVhLCJzcXVhcmlmeSIhPT1nfHwoYT1yKGwsdikpPD1wPyhoLnBvcCgpLHA9YSk6KGwu
YXJlYS09bC5wb3AoKS5hcmVhLHUobCx2LHMsITEpLHY9TWF0aC5taW4ocy5keCxzLmR5KSxsLmxl
bmd0aD1sLmFyZWE9MCxwPTEvMCk7bC5sZW5ndGgmJih1KGwsdixzLCEwKSxsLmxlbmd0aD1sLmFy
ZWE9MCksaS5mb3JFYWNoKHQpfX1mdW5jdGlvbiBlKHQpe3ZhciByPXQuY2hpbGRyZW47aWYociYm
ci5sZW5ndGgpe3ZhciBpLG89Zih0KSxhPXIuc2xpY2UoKSxjPVtdO2ZvcihuKGEsby5keCpvLmR5
L3QudmFsdWUpLGMuYXJlYT0wO2k9YS5wb3AoKTspYy5wdXNoKGkpLGMuYXJlYSs9aS5hcmVhLG51
bGwhPWkueiYmKHUoYyxpLno/by5keDpvLmR5LG8sIWEubGVuZ3RoKSxjLmxlbmd0aD1jLmFyZWE9
MCk7ci5mb3JFYWNoKGUpfX1mdW5jdGlvbiByKG4sdCl7Zm9yKHZhciBlLHI9bi5hcmVhLHU9MCxp
PTEvMCxvPS0xLGE9bi5sZW5ndGg7KytvPGE7KShlPW5bb10uYXJlYSkmJihpPmUmJihpPWUpLGU+
dSYmKHU9ZSkpO3JldHVybiByKj1yLHQqPXQscj9NYXRoLm1heCh0KnUqcC9yLHIvKHQqaSpwKSk6
MS8wfWZ1bmN0aW9uIHUobix0LGUscil7dmFyIHUsaT0tMSxvPW4ubGVuZ3RoLGE9ZS54LHM9ZS55
LGw9dD9jKG4uYXJlYS90KTowO2lmKHQ9PWUuZHgpe2Zvcigocnx8bD5lLmR5KSYmKGw9ZS5keSk7
KytpPG87KXU9bltpXSx1Lng9YSx1Lnk9cyx1LmR5PWwsYSs9dS5keD1NYXRoLm1pbihlLngrZS5k
eC1hLGw/Yyh1LmFyZWEvbCk6MCk7dS56PSEwLHUuZHgrPWUueCtlLmR4LWEsZS55Kz1sLGUuZHkt
PWx9ZWxzZXtmb3IoKHJ8fGw+ZS5keCkmJihsPWUuZHgpOysraTxvOyl1PW5baV0sdS54PWEsdS55
PXMsdS5keD1sLHMrPXUuZHk9TWF0aC5taW4oZS55K2UuZHktcyxsP2ModS5hcmVhL2wpOjApO3Uu
ej0hMSx1LmR5Kz1lLnkrZS5keS1zLGUueCs9bCxlLmR4LT1sfX1mdW5jdGlvbiBpKHIpe3ZhciB1
PW98fGEociksaT11WzBdO3JldHVybiBpLng9MCxpLnk9MCxpLmR4PXNbMF0saS5keT1zWzFdLG8m
JmEucmV2YWx1ZShpKSxuKFtpXSxpLmR4KmkuZHkvaS52YWx1ZSksKG8/ZTp0KShpKSxoJiYobz11
KSx1fXZhciBvLGE9Wm8ubGF5b3V0LmhpZXJhcmNoeSgpLGM9TWF0aC5yb3VuZCxzPVsxLDFdLGw9
bnVsbCxmPU5pLGg9ITEsZz0ic3F1YXJpZnkiLHA9LjUqKDErTWF0aC5zcXJ0KDUpKTtyZXR1cm4g
aS5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPW4saSk6c30saS5w
YWRkaW5nPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHQodCl7dmFyIGU9bi5jYWxsKGksdCx0LmRlcHRo
KTtyZXR1cm4gbnVsbD09ZT9OaSh0KTp6aSh0LCJudW1iZXIiPT10eXBlb2YgZT9bZSxlLGUsZV06
ZSl9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gemkodCxuKX1pZighYXJndW1lbnRzLmxlbmd0aClyZXR1
cm4gbDt2YXIgcjtyZXR1cm4gZj1udWxsPT0obD1uKT9OaToiZnVuY3Rpb24iPT0ocj10eXBlb2Yg
bik/dDoibnVtYmVyIj09PXI/KG49W24sbixuLG5dLGUpOmUsaX0saS5yb3VuZD1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1uP01hdGgucm91bmQ6TnVtYmVyLGkpOmMhPU51
bWJlcn0saS5zdGlja3k9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9bixv
PW51bGwsaSk6aH0saS5yYXRpbz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cD1uLGkpOnB9LGkubW9kZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz1u
KyIiLGkpOmd9LFh1KGksYSl9LFpvLnJhbmRvbT17bm9ybWFsOmZ1bmN0aW9uKG4sdCl7dmFyIGU9
YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gMj5lJiYodD0xKSwxPmUmJihuPTApLGZ1bmN0aW9uKCl7
dmFyIGUscix1O2RvIGU9MipNYXRoLnJhbmRvbSgpLTEscj0yKk1hdGgucmFuZG9tKCktMSx1PWUq
ZStyKnI7d2hpbGUoIXV8fHU+MSk7cmV0dXJuIG4rdCplKk1hdGguc3FydCgtMipNYXRoLmxvZyh1
KS91KX19LGxvZ05vcm1hbDpmdW5jdGlvbigpe3ZhciBuPVpvLnJhbmRvbS5ub3JtYWwuYXBwbHko
Wm8sYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5leHAobigpKX19LGJh
dGVzOmZ1bmN0aW9uKG4pe3ZhciB0PVpvLnJhbmRvbS5pcndpbkhhbGwobik7cmV0dXJuIGZ1bmN0
aW9uKCl7cmV0dXJuIHQoKS9ufX0saXJ3aW5IYWxsOmZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlv
bigpe2Zvcih2YXIgdD0wLGU9MDtuPmU7ZSsrKXQrPU1hdGgucmFuZG9tKCk7cmV0dXJuIHR9fX0s
Wm8uc2NhbGU9e307dmFyIHNzPXtmbG9vcjp3dCxjZWlsOnd0fTtaby5zY2FsZS5saW5lYXI9ZnVu
Y3Rpb24oKXtyZXR1cm4gVWkoWzAsMV0sWzAsMV0saHUsITEpfTt2YXIgbHM9e3M6MSxnOjEscDox
LHI6MSxlOjF9O1pvLnNjYWxlLmxvZz1mdW5jdGlvbigpe3JldHVybiBWaShaby5zY2FsZS5saW5l
YXIoKS5kb21haW4oWzAsMV0pLDEwLCEwLFsxLDEwXSl9O3ZhciBmcz1aby5mb3JtYXQoIi4wZSIp
LGhzPXtmbG9vcjpmdW5jdGlvbihuKXtyZXR1cm4tTWF0aC5jZWlsKC1uKX0sY2VpbDpmdW5jdGlv
bihuKXtyZXR1cm4tTWF0aC5mbG9vcigtbil9fTtaby5zY2FsZS5wb3c9ZnVuY3Rpb24oKXtyZXR1
cm4gWGkoWm8uc2NhbGUubGluZWFyKCksMSxbMCwxXSl9LFpvLnNjYWxlLnNxcnQ9ZnVuY3Rpb24o
KXtyZXR1cm4gWm8uc2NhbGUucG93KCkuZXhwb25lbnQoLjUpfSxaby5zY2FsZS5vcmRpbmFsPWZ1
bmN0aW9uKCl7cmV0dXJuIEJpKFtdLHt0OiJyYW5nZSIsYTpbW11dfSl9LFpvLnNjYWxlLmNhdGVn
b3J5MTA9ZnVuY3Rpb24oKXtyZXR1cm4gWm8uc2NhbGUub3JkaW5hbCgpLnJhbmdlKGdzKX0sWm8u
c2NhbGUuY2F0ZWdvcnkyMD1mdW5jdGlvbigpe3JldHVybiBaby5zY2FsZS5vcmRpbmFsKCkucmFu
Z2UocHMpfSxaby5zY2FsZS5jYXRlZ29yeTIwYj1mdW5jdGlvbigpe3JldHVybiBaby5zY2FsZS5v
cmRpbmFsKCkucmFuZ2UodnMpfSxaby5zY2FsZS5jYXRlZ29yeTIwYz1mdW5jdGlvbigpe3JldHVy
biBaby5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoZHMpfTt2YXIgZ3M9WzIwNjIyNjAsMTY3NDQyMDYs
MjkyNDU4OCwxNDAzNDcyOCw5NzI1ODg1LDkxOTcxMzEsMTQ5MDczMzAsODM1NTcxMSwxMjM2OTE4
NiwxNTU2MTc1XS5tYXAodnQpLHBzPVsyMDYyMjYwLDExNDU0NDQwLDE2NzQ0MjA2LDE2NzU5Njcy
LDI5MjQ1ODgsMTAwMTg2OTgsMTQwMzQ3MjgsMTY3NTA3NDIsOTcyNTg4NSwxMjk1NTg2MSw5MTk3
MTMxLDEyODg1MTQwLDE0OTA3MzMwLDE2MjM0MTk0LDgzNTU3MTEsMTMwOTI4MDcsMTIzNjkxODYs
MTQ0MDg1ODksMTU1NjE3NSwxMDQxMDcyNV0ubWFwKHZ0KSx2cz1bMzc1MDc3Nyw1Mzk1NjE5LDcw
NDA3MTksMTAyNjQyODYsNjUxOTA5Nyw5MjE2NTk0LDExOTE1MTE1LDEzNTU2NjM2LDkyMDI5OTMs
MTI0MjY4MDksMTUxODY1MTQsMTUxOTA5MzIsODY2NjE2OSwxMTM1NjQ5MCwxNDA0OTY0MywxNTE3
NzM3Miw4MDc3NjgzLDEwODM0MzI0LDEzNTI4NTA5LDE0NTg5NjU0XS5tYXAodnQpLGRzPVszMjQ0
NzMzLDcwNTcxMTAsMTA0MDY2MjUsMTMwMzI0MzEsMTUwOTUwNTMsMTY2MTY3NjQsMTY2MjUyNTks
MTY2MzQwMTgsMzI1MzA3Niw3NjUyNDcwLDEwNjA3MDAzLDEzMTAxNTA0LDc2OTUyODEsMTAzOTQz
MTIsMTIzNjkzNzIsMTQzNDI4OTEsNjUxMzUwNyw5ODY4OTUwLDEyNDM0ODc3LDE0Mjc3MDgxXS5t
YXAodnQpO1pvLnNjYWxlLnF1YW50aWxlPWZ1bmN0aW9uKCl7cmV0dXJuIFdpKFtdLFtdKX0sWm8u
c2NhbGUucXVhbnRpemU9ZnVuY3Rpb24oKXtyZXR1cm4gSmkoMCwxLFswLDFdKX0sWm8uc2NhbGUu
dGhyZXNob2xkPWZ1bmN0aW9uKCl7cmV0dXJuIEdpKFsuNV0sWzAsMV0pfSxaby5zY2FsZS5pZGVu
dGl0eT1mdW5jdGlvbigpe3JldHVybiBLaShbMCwxXSl9LFpvLnN2Zz17fSxaby5zdmcuYXJjPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3ZhciBuPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGk9ZS5h
cHBseSh0aGlzLGFyZ3VtZW50cyksbz1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSttcyxhPXUuYXBw
bHkodGhpcyxhcmd1bWVudHMpK21zLGM9KG8+YSYmKGM9byxvPWEsYT1jKSxhLW8pLHM9YmE+Yz8i
MCI6IjEiLGw9TWF0aC5jb3MobyksZj1NYXRoLnNpbihvKSxoPU1hdGguY29zKGEpLGc9TWF0aC5z
aW4oYSk7CityZXR1cm4gYz49eXM/bj8iTTAsIitpKyJBIitpKyIsIitpKyIgMCAxLDEgMCwiKy1p
KyJBIitpKyIsIitpKyIgMCAxLDEgMCwiK2krIk0wLCIrbisiQSIrbisiLCIrbisiIDAgMSwwIDAs
IistbisiQSIrbisiLCIrbisiIDAgMSwwIDAsIituKyJaIjoiTTAsIitpKyJBIitpKyIsIitpKyIg
MCAxLDEgMCwiKy1pKyJBIitpKyIsIitpKyIgMCAxLDEgMCwiK2krIloiOm4/Ik0iK2kqbCsiLCIr
aSpmKyJBIitpKyIsIitpKyIgMCAiK3MrIiwxICIraSpoKyIsIitpKmcrIkwiK24qaCsiLCIrbipn
KyJBIituKyIsIituKyIgMCAiK3MrIiwwICIrbipsKyIsIituKmYrIloiOiJNIitpKmwrIiwiK2kq
ZisiQSIraSsiLCIraSsiIDAgIitzKyIsMSAiK2kqaCsiLCIraSpnKyJMMCwwIisiWiJ9dmFyIHQ9
UWksZT1ubyxyPXRvLHU9ZW87cmV0dXJuIG4uaW5uZXJSYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHQ9YnQoZSksbik6dH0sbi5vdXRlclJhZGl1cz1mdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1idCh0KSxuKTplfSxuLnN0YXJ0QW5nbGU9ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YnQodCksbik6cn0sbi5lbmRBbmds
ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1idCh0KSxuKTp1fSxuLmNl
bnRyb2lkPWZ1bmN0aW9uKCl7dmFyIG49KHQuYXBwbHkodGhpcyxhcmd1bWVudHMpK2UuYXBwbHko
dGhpcyxhcmd1bWVudHMpKS8yLGk9KHIuYXBwbHkodGhpcyxhcmd1bWVudHMpK3UuYXBwbHkodGhp
cyxhcmd1bWVudHMpKS8yK21zO3JldHVybltNYXRoLmNvcyhpKSpuLE1hdGguc2luKGkpKm5dfSxu
fTt2YXIgbXM9LVNhLHlzPXdhLWthO1pvLnN2Zy5saW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHJvKHd0
KX07dmFyIHhzPVpvLm1hcCh7bGluZWFyOnVvLCJsaW5lYXItY2xvc2VkIjppbyxzdGVwOm9vLCJz
dGVwLWJlZm9yZSI6YW8sInN0ZXAtYWZ0ZXIiOmNvLGJhc2lzOnBvLCJiYXNpcy1vcGVuIjp2bywi
YmFzaXMtY2xvc2VkIjptbyxidW5kbGU6eW8sY2FyZGluYWw6Zm8sImNhcmRpbmFsLW9wZW4iOnNv
LCJjYXJkaW5hbC1jbG9zZWQiOmxvLG1vbm90b25lOlNvfSk7eHMuZm9yRWFjaChmdW5jdGlvbihu
LHQpe3Qua2V5PW4sdC5jbG9zZWQ9Ly1jbG9zZWQkLy50ZXN0KG4pfSk7dmFyIE1zPVswLDIvMywx
LzMsMF0sX3M9WzAsMS8zLDIvMywwXSxicz1bMCwxLzYsMi8zLDEvNl07Wm8uc3ZnLmxpbmUucmFk
aWFsPWZ1bmN0aW9uKCl7dmFyIG49cm8oa28pO3JldHVybiBuLnJhZGl1cz1uLngsZGVsZXRlIG4u
eCxuLmFuZ2xlPW4ueSxkZWxldGUgbi55LG59LGFvLnJldmVyc2U9Y28sY28ucmV2ZXJzZT1hbyxa
by5zdmcuYXJlYT1mdW5jdGlvbigpe3JldHVybiBFbyh3dCl9LFpvLnN2Zy5hcmVhLnJhZGlhbD1m
dW5jdGlvbigpe3ZhciBuPUVvKGtvKTtyZXR1cm4gbi5yYWRpdXM9bi54LGRlbGV0ZSBuLngsbi5p
bm5lclJhZGl1cz1uLngwLGRlbGV0ZSBuLngwLG4ub3V0ZXJSYWRpdXM9bi54MSxkZWxldGUgbi54
MSxuLmFuZ2xlPW4ueSxkZWxldGUgbi55LG4uc3RhcnRBbmdsZT1uLnkwLGRlbGV0ZSBuLnkwLG4u
ZW5kQW5nbGU9bi55MSxkZWxldGUgbi55MSxufSxaby5zdmcuY2hvcmQ9ZnVuY3Rpb24oKXtmdW5j
dGlvbiBuKG4sYSl7dmFyIGM9dCh0aGlzLGksbixhKSxzPXQodGhpcyxvLG4sYSk7cmV0dXJuIk0i
K2MucDArcihjLnIsYy5wMSxjLmExLWMuYTApKyhlKGMscyk/dShjLnIsYy5wMSxjLnIsYy5wMCk6
dShjLnIsYy5wMSxzLnIscy5wMCkrcihzLnIscy5wMSxzLmExLXMuYTApK3Uocy5yLHMucDEsYy5y
LGMucDApKSsiWiJ9ZnVuY3Rpb24gdChuLHQsZSxyKXt2YXIgdT10LmNhbGwobixlLHIpLGk9YS5j
YWxsKG4sdSxyKSxvPWMuY2FsbChuLHUscikrbXMsbD1zLmNhbGwobix1LHIpK21zO3JldHVybnty
OmksYTA6byxhMTpsLHAwOltpKk1hdGguY29zKG8pLGkqTWF0aC5zaW4obyldLHAxOltpKk1hdGgu
Y29zKGwpLGkqTWF0aC5zaW4obCldfX1mdW5jdGlvbiBlKG4sdCl7cmV0dXJuIG4uYTA9PXQuYTAm
Jm4uYTE9PXQuYTF9ZnVuY3Rpb24gcihuLHQsZSl7cmV0dXJuIkEiK24rIiwiK24rIiAwICIrICso
ZT5iYSkrIiwxICIrdH1mdW5jdGlvbiB1KG4sdCxlLHIpe3JldHVybiJRIDAsMCAiK3J9dmFyIGk9
Z3Isbz1wcixhPUFvLGM9dG8scz1lbztyZXR1cm4gbi5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGE9YnQodCksbik6YX0sbi5zb3VyY2U9ZnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9YnQodCksbik6aX0sbi50YXJnZXQ9ZnVuY3Rpb24odCl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89YnQodCksbik6b30sbi5zdGFydEFuZ2xlPWZ1bmN0
aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWJ0KHQpLG4pOmN9LG4uZW5kQW5nbGU9
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9YnQodCksbik6c30sbn0sWm8u
c3ZnLmRpYWdvbmFsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHUpe3ZhciBpPXQuY2FsbCh0aGlz
LG4sdSksbz1lLmNhbGwodGhpcyxuLHUpLGE9KGkueStvLnkpLzIsYz1baSx7eDppLngseTphfSx7
eDpvLngseTphfSxvXTtyZXR1cm4gYz1jLm1hcChyKSwiTSIrY1swXSsiQyIrY1sxXSsiICIrY1sy
XSsiICIrY1szXX12YXIgdD1ncixlPXByLHI9Q287cmV0dXJuIG4uc291cmNlPWZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWJ0KGUpLG4pOnR9LG4udGFyZ2V0PWZ1bmN0aW9u
KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWJ0KHQpLG4pOmV9LG4ucHJvamVjdGlvbj1m
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LG59LFpvLnN2Zy5k
aWFnb25hbC5yYWRpYWw9ZnVuY3Rpb24oKXt2YXIgbj1aby5zdmcuZGlhZ29uYWwoKSx0PUNvLGU9
bi5wcm9qZWN0aW9uO3JldHVybiBuLnByb2plY3Rpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/ZShObyh0PW4pKTp0fSxufSxaby5zdmcuc3ltYm9sPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gbihuLHIpe3JldHVybih3cy5nZXQodC5jYWxsKHRoaXMsbixyKSl8fFRvKShlLmNhbGwo
dGhpcyxuLHIpKX12YXIgdD1MbyxlPXpvO3JldHVybiBuLnR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHQ9YnQoZSksbik6dH0sbi5zaXplPWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhlPWJ0KHQpLG4pOmV9LG59O3ZhciB3cz1aby5tYXAoe2NpcmNs
ZTpUbyxjcm9zczpmdW5jdGlvbihuKXt2YXIgdD1NYXRoLnNxcnQobi81KS8yO3JldHVybiJNIist
Myp0KyIsIistdCsiSCIrLXQrIlYiKy0zKnQrIkgiK3QrIlYiKy10KyJIIiszKnQrIlYiK3QrIkgi
K3QrIlYiKzMqdCsiSCIrLXQrIlYiK3QrIkgiKy0zKnQrIloifSxkaWFtb25kOmZ1bmN0aW9uKG4p
e3ZhciB0PU1hdGguc3FydChuLygyKkFzKSksZT10KkFzO3JldHVybiJNMCwiKy10KyJMIitlKyIs
MCIrIiAwLCIrdCsiICIrLWUrIiwwIisiWiJ9LHNxdWFyZTpmdW5jdGlvbihuKXt2YXIgdD1NYXRo
LnNxcnQobikvMjtyZXR1cm4iTSIrLXQrIiwiKy10KyJMIit0KyIsIistdCsiICIrdCsiLCIrdCsi
ICIrLXQrIiwiK3QrIloifSwidHJpYW5nbGUtZG93biI6ZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5z
cXJ0KG4vRXMpLGU9dCpFcy8yO3JldHVybiJNMCwiK2UrIkwiK3QrIiwiKy1lKyIgIistdCsiLCIr
LWUrIloifSwidHJpYW5nbGUtdXAiOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChuL0VzKSxl
PXQqRXMvMjtyZXR1cm4iTTAsIistZSsiTCIrdCsiLCIrZSsiICIrLXQrIiwiK2UrIloifX0pO1pv
LnN2Zy5zeW1ib2xUeXBlcz13cy5rZXlzKCk7dmFyIFNzLGtzLEVzPU1hdGguc3FydCgzKSxBcz1N
YXRoLnRhbigzMCpBYSksQ3M9W10sTnM9MDtDcy5jYWxsPXBhLmNhbGwsQ3MuZW1wdHk9cGEuZW1w
dHksQ3Mubm9kZT1wYS5ub2RlLENzLnNpemU9cGEuc2l6ZSxaby50cmFuc2l0aW9uPWZ1bmN0aW9u
KG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP1NzP24udHJhbnNpdGlvbigpOm46bWEudHJhbnNp
dGlvbigpfSxaby50cmFuc2l0aW9uLnByb3RvdHlwZT1DcyxDcy5zZWxlY3Q9ZnVuY3Rpb24obil7
dmFyIHQsZSxyLHU9dGhpcy5pZCxpPVtdO249YihuKTtmb3IodmFyIG89LTEsYT10aGlzLmxlbmd0
aDsrK288YTspe2kucHVzaCh0PVtdKTtmb3IodmFyIGM9dGhpc1tvXSxzPS0xLGw9Yy5sZW5ndGg7
KytzPGw7KShyPWNbc10pJiYoZT1uLmNhbGwocixyLl9fZGF0YV9fLHMsbykpPygiX19kYXRhX18i
aW4gciYmKGUuX19kYXRhX189ci5fX2RhdGFfXyksUG8oZSxzLHUsci5fX3RyYW5zaXRpb25fX1t1
XSksdC5wdXNoKGUpKTp0LnB1c2gobnVsbCl9cmV0dXJuIHFvKGksdSl9LENzLnNlbGVjdEFsbD1m
dW5jdGlvbihuKXt2YXIgdCxlLHIsdSxpLG89dGhpcy5pZCxhPVtdO249dyhuKTtmb3IodmFyIGM9
LTEscz10aGlzLmxlbmd0aDsrK2M8czspZm9yKHZhciBsPXRoaXNbY10sZj0tMSxoPWwubGVuZ3Ro
OysrZjxoOylpZihyPWxbZl0pe2k9ci5fX3RyYW5zaXRpb25fX1tvXSxlPW4uY2FsbChyLHIuX19k
YXRhX18sZixjKSxhLnB1c2godD1bXSk7Zm9yKHZhciBnPS0xLHA9ZS5sZW5ndGg7KytnPHA7KSh1
PWVbZ10pJiZQbyh1LGcsbyxpKSx0LnB1c2godSl9cmV0dXJuIHFvKGEsbyl9LENzLmZpbHRlcj1m
dW5jdGlvbihuKXt2YXIgdCxlLHIsdT1bXTsiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49UihuKSk7
Zm9yKHZhciBpPTAsbz10aGlzLmxlbmd0aDtvPmk7aSsrKXt1LnB1c2godD1bXSk7Zm9yKHZhciBl
PXRoaXNbaV0sYT0wLGM9ZS5sZW5ndGg7Yz5hO2ErKykocj1lW2FdKSYmbi5jYWxsKHIsci5fX2Rh
dGFfXyxhLGkpJiZ0LnB1c2gocil9cmV0dXJuIHFvKHUsdGhpcy5pZCl9LENzLnR3ZWVuPWZ1bmN0
aW9uKG4sdCl7dmFyIGU9dGhpcy5pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP3RoaXMubm9k
ZSgpLl9fdHJhbnNpdGlvbl9fW2VdLnR3ZWVuLmdldChuKTpQKHRoaXMsbnVsbD09dD9mdW5jdGlv
bih0KXt0Ll9fdHJhbnNpdGlvbl9fW2VdLnR3ZWVuLnJlbW92ZShuKX06ZnVuY3Rpb24ocil7ci5f
X3RyYW5zaXRpb25fX1tlXS50d2Vlbi5zZXQobix0KX0pfSxDcy5hdHRyPWZ1bmN0aW9uKG4sdCl7
ZnVuY3Rpb24gZSgpe3RoaXMucmVtb3ZlQXR0cmlidXRlKGEpfWZ1bmN0aW9uIHIoKXt0aGlzLnJl
bW92ZUF0dHJpYnV0ZU5TKGEuc3BhY2UsYS5sb2NhbCl9ZnVuY3Rpb24gdShuKXtyZXR1cm4gbnVs
bD09bj9lOihuKz0iIixmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5nZXRBdHRyaWJ1dGUoYSk7cmV0
dXJuIGUhPT1uJiYodD1vKGUsbiksZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUoYSx0KG4p
KX0pfSl9ZnVuY3Rpb24gaShuKXtyZXR1cm4gbnVsbD09bj9yOihuKz0iIixmdW5jdGlvbigpe3Zh
ciB0LGU9dGhpcy5nZXRBdHRyaWJ1dGVOUyhhLnNwYWNlLGEubG9jYWwpO3JldHVybiBlIT09biYm
KHQ9byhlLG4pLGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlMoYS5zcGFjZSxhLmxvY2Fs
LHQobikpfSl9KX1pZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih0IGluIG4pdGhpcy5hdHRyKHQs
blt0XSk7cmV0dXJuIHRoaXN9dmFyIG89InRyYW5zZm9ybSI9PW4/RHU6aHUsYT1aby5ucy5xdWFs
aWZ5KG4pO3JldHVybiBSbyh0aGlzLCJhdHRyLiIrbix0LGEubG9jYWw/aTp1KX0sQ3MuYXR0clR3
ZWVuPWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZShuLGUpe3ZhciByPXQuY2FsbCh0aGlzLG4sZSx0
aGlzLmdldEF0dHJpYnV0ZSh1KSk7cmV0dXJuIHImJmZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmli
dXRlKHUscihuKSl9fWZ1bmN0aW9uIHIobixlKXt2YXIgcj10LmNhbGwodGhpcyxuLGUsdGhpcy5n
ZXRBdHRyaWJ1dGVOUyh1LnNwYWNlLHUubG9jYWwpKTtyZXR1cm4gciYmZnVuY3Rpb24obil7dGhp
cy5zZXRBdHRyaWJ1dGVOUyh1LnNwYWNlLHUubG9jYWwscihuKSl9fXZhciB1PVpvLm5zLnF1YWxp
Znkobik7cmV0dXJuIHRoaXMudHdlZW4oImF0dHIuIituLHUubG9jYWw/cjplKX0sQ3Muc3R5bGU9
ZnVuY3Rpb24obix0LGUpe2Z1bmN0aW9uIHIoKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG4p
fWZ1bmN0aW9uIHUodCl7cmV0dXJuIG51bGw9PXQ/cjoodCs9IiIsZnVuY3Rpb24oKXt2YXIgcix1
PVdvLmdldENvbXB1dGVkU3R5bGUodGhpcyxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKG4pO3JldHVy
biB1IT09dCYmKHI9aHUodSx0KSxmdW5jdGlvbih0KXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KG4s
cih0KSxlKX0pfSl9dmFyIGk9YXJndW1lbnRzLmxlbmd0aDtpZigzPmkpe2lmKCJzdHJpbmciIT10
eXBlb2Ygbil7Mj5pJiYodD0iIik7Zm9yKGUgaW4gbil0aGlzLnN0eWxlKGUsbltlXSx0KTtyZXR1
cm4gdGhpc31lPSIifXJldHVybiBSbyh0aGlzLCJzdHlsZS4iK24sdCx1KX0sQ3Muc3R5bGVUd2Vl
bj1mdW5jdGlvbihuLHQsZSl7ZnVuY3Rpb24gcihyLHUpe3ZhciBpPXQuY2FsbCh0aGlzLHIsdSxX
by5nZXRDb21wdXRlZFN0eWxlKHRoaXMsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShuKSk7cmV0dXJu
IGkmJmZ1bmN0aW9uKHQpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobixpKHQpLGUpfX1yZXR1cm4g
YXJndW1lbnRzLmxlbmd0aDwzJiYoZT0iIiksdGhpcy50d2Vlbigic3R5bGUuIituLHIpfSxDcy50
ZXh0PWZ1bmN0aW9uKG4pe3JldHVybiBSbyh0aGlzLCJ0ZXh0IixuLERvKX0sQ3MucmVtb3ZlPWZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaCgiZW5kLnRyYW5zaXRpb24iLGZ1bmN0aW9uKCl7dmFy
IG47dGhpcy5fX3RyYW5zaXRpb25fXy5jb3VudDwyJiYobj10aGlzLnBhcmVudE5vZGUpJiZuLnJl
bW92ZUNoaWxkKHRoaXMpfSl9LENzLmVhc2U9ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5pZDtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aDwxP3RoaXMubm9kZSgpLl9fdHJhbnNpdGlvbl9fW3RdLmVhc2U6
KCJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj1aby5lYXNlLmFwcGx5KFpvLGFyZ3VtZW50cykpLFAo
dGhpcyxmdW5jdGlvbihlKXtlLl9fdHJhbnNpdGlvbl9fW3RdLmVhc2U9bn0pKX0sQ3MuZGVsYXk9
ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP3RoaXMu
bm9kZSgpLl9fdHJhbnNpdGlvbl9fW3RdLmRlbGF5OlAodGhpcywiZnVuY3Rpb24iPT10eXBlb2Yg
bj9mdW5jdGlvbihlLHIsdSl7ZS5fX3RyYW5zaXRpb25fX1t0XS5kZWxheT0rbi5jYWxsKGUsZS5f
X2RhdGFfXyxyLHUpfToobj0rbixmdW5jdGlvbihlKXtlLl9fdHJhbnNpdGlvbl9fW3RdLmRlbGF5
PW59KSl9LENzLmR1cmF0aW9uPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMuaWQ7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg8MT90aGlzLm5vZGUoKS5fX3RyYW5zaXRpb25fX1t0XS5kdXJhdGlvbjpQKHRo
aXMsImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVuY3Rpb24oZSxyLHUpe2UuX190cmFuc2l0aW9uX19b
dF0uZHVyYXRpb249TWF0aC5tYXgoMSxuLmNhbGwoZSxlLl9fZGF0YV9fLHIsdSkpfToobj1NYXRo
Lm1heCgxLG4pLGZ1bmN0aW9uKGUpe2UuX190cmFuc2l0aW9uX19bdF0uZHVyYXRpb249bn0pKX0s
Q3MuZWFjaD1mdW5jdGlvbihuLHQpe3ZhciBlPXRoaXMuaWQ7aWYoYXJndW1lbnRzLmxlbmd0aDwy
KXt2YXIgcj1rcyx1PVNzO1NzPWUsUCh0aGlzLGZ1bmN0aW9uKHQscix1KXtrcz10Ll9fdHJhbnNp
dGlvbl9fW2VdLG4uY2FsbCh0LHQuX19kYXRhX18scix1KX0pLGtzPXIsU3M9dX1lbHNlIFAodGhp
cyxmdW5jdGlvbihyKXt2YXIgdT1yLl9fdHJhbnNpdGlvbl9fW2VdOyh1LmV2ZW50fHwodS5ldmVu
dD1aby5kaXNwYXRjaCgic3RhcnQiLCJlbmQiKSkpLm9uKG4sdCl9KTtyZXR1cm4gdGhpc30sQ3Mu
dHJhbnNpdGlvbj1mdW5jdGlvbigpe2Zvcih2YXIgbix0LGUscix1PXRoaXMuaWQsaT0rK05zLG89
W10sYT0wLGM9dGhpcy5sZW5ndGg7Yz5hO2ErKyl7by5wdXNoKG49W10pO2Zvcih2YXIgdD10aGlz
W2FdLHM9MCxsPXQubGVuZ3RoO2w+cztzKyspKGU9dFtzXSkmJihyPU9iamVjdC5jcmVhdGUoZS5f
X3RyYW5zaXRpb25fX1t1XSksci5kZWxheSs9ci5kdXJhdGlvbixQbyhlLHMsaSxyKSksbi5wdXNo
KGUpfXJldHVybiBxbyhvLGkpfSxaby5zdmcuYXhpcz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7
bi5lYWNoKGZ1bmN0aW9uKCl7dmFyIG4scz1aby5zZWxlY3QodGhpcyksbD10aGlzLl9fY2hhcnRf
X3x8ZSxmPXRoaXMuX19jaGFydF9fPWUuY29weSgpLGg9bnVsbD09Yz9mLnRpY2tzP2YudGlja3Mu
YXBwbHkoZixhKTpmLmRvbWFpbigpOmMsZz1udWxsPT10P2YudGlja0Zvcm1hdD9mLnRpY2tGb3Jt
YXQuYXBwbHkoZixhKTp3dDp0LHA9cy5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShoLGYpLHY9cC5l
bnRlcigpLmluc2VydCgiZyIsIi5kb21haW4iKS5hdHRyKCJjbGFzcyIsInRpY2siKS5zdHlsZSgi
b3BhY2l0eSIsa2EpLGQ9Wm8udHJhbnNpdGlvbihwLmV4aXQoKSkuc3R5bGUoIm9wYWNpdHkiLGth
KS5yZW1vdmUoKSxtPVpvLnRyYW5zaXRpb24ocC5vcmRlcigpKS5zdHlsZSgib3BhY2l0eSIsMSks
eT1UaShmKSx4PXMuc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbMF0pLE09KHguZW50ZXIoKS5h
cHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLFpvLnRyYW5zaXRpb24oeCkpO3Yu
YXBwZW5kKCJsaW5lIiksdi5hcHBlbmQoInRleHQiKTt2YXIgXz12LnNlbGVjdCgibGluZSIpLGI9
bS5zZWxlY3QoImxpbmUiKSx3PXAuc2VsZWN0KCJ0ZXh0IikudGV4dChnKSxTPXYuc2VsZWN0KCJ0
ZXh0Iiksaz1tLnNlbGVjdCgidGV4dCIpO3N3aXRjaChyKXtjYXNlImJvdHRvbSI6bj1VbyxfLmF0
dHIoInkyIix1KSxTLmF0dHIoInkiLE1hdGgubWF4KHUsMCkrbyksYi5hdHRyKCJ4MiIsMCkuYXR0
cigieTIiLHUpLGsuYXR0cigieCIsMCkuYXR0cigieSIsTWF0aC5tYXgodSwwKStvKSx3LmF0dHIo
ImR5IiwiLjcxZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxNLmF0dHIoImQiLCJN
Iit5WzBdKyIsIitpKyJWMEgiK3lbMV0rIlYiK2kpO2JyZWFrO2Nhc2UidG9wIjpuPVVvLF8uYXR0
cigieTIiLC11KSxTLmF0dHIoInkiLC0oTWF0aC5tYXgodSwwKStvKSksYi5hdHRyKCJ4MiIsMCku
YXR0cigieTIiLC11KSxrLmF0dHIoIngiLDApLmF0dHIoInkiLC0oTWF0aC5tYXgodSwwKStvKSks
dy5hdHRyKCJkeSIsIjBlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLE0uYXR0cigi
ZCIsIk0iK3lbMF0rIiwiKy1pKyJWMEgiK3lbMV0rIlYiKy1pKTticmVhaztjYXNlImxlZnQiOm49
am8sXy5hdHRyKCJ4MiIsLXUpLFMuYXR0cigieCIsLShNYXRoLm1heCh1LDApK28pKSxiLmF0dHIo
IngyIiwtdSkuYXR0cigieTIiLDApLGsuYXR0cigieCIsLShNYXRoLm1heCh1LDApK28pKS5hdHRy
KCJ5IiwwKSx3LmF0dHIoImR5IiwiLjMyZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJlbmQiKSxN
LmF0dHIoImQiLCJNIistaSsiLCIreVswXSsiSDBWIit5WzFdKyJIIistaSk7YnJlYWs7Y2FzZSJy
aWdodCI6bj1qbyxfLmF0dHIoIngyIix1KSxTLmF0dHIoIngiLE1hdGgubWF4KHUsMCkrbyksYi5h
dHRyKCJ4MiIsdSkuYXR0cigieTIiLDApLGsuYXR0cigieCIsTWF0aC5tYXgodSwwKStvKS5hdHRy
KCJ5IiwwKSx3LmF0dHIoImR5IiwiLjMyZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJzdGFydCIp
LE0uYXR0cigiZCIsIk0iK2krIiwiK3lbMF0rIkgwViIreVsxXSsiSCIraSl9aWYoZi5yYW5nZUJh
bmQpe3ZhciBFPWYsQT1FLnJhbmdlQmFuZCgpLzI7bD1mPWZ1bmN0aW9uKG4pe3JldHVybiBFKG4p
K0F9fWVsc2UgbC5yYW5nZUJhbmQ/bD1mOmQuY2FsbChuLGYpO3YuY2FsbChuLGwpLG0uY2FsbChu
LGYpfSl9dmFyIHQsZT1aby5zY2FsZS5saW5lYXIoKSxyPXpzLHU9NixpPTYsbz0zLGE9WzEwXSxj
PW51bGw7cmV0dXJuIG4uc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGU9dCxuKTplfSxuLm9yaWVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cj10IGluIExzP3QrIiI6enMsbik6cn0sbi50aWNrcz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhhPWFyZ3VtZW50cyxuKTphfSxuLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dCxuKTpjfSxuLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0fSxuLnRpY2tTaXplPWZ1bmN0aW9uKHQp
e3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIGU/KHU9K3QsaT0rYXJndW1lbnRzW2UtMV0s
bik6dX0sbi5pbm5lclRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh1PSt0LG4pOnV9LG4ub3V0ZXJUaWNrU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oaT0rdCxuKTppfSxuLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhvPSt0LG4pOm99LG4udGlja1N1YmRpdmlkZT1mdW5jdGlvbigpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoJiZufSxufTt2YXIgenM9ImJvdHRvbSIsTHM9e3RvcDoxLHJpZ2h0
OjEsYm90dG9tOjEsbGVmdDoxfTtaby5zdmcuYnJ1c2g9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGkp
e2kuZWFjaChmdW5jdGlvbigpe3ZhciBpPVpvLnNlbGVjdCh0aGlzKS5zdHlsZSgicG9pbnRlci1l
dmVudHMiLCJhbGwiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgw
LDAsMCwwKSIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLHUpLm9uKCJ0b3VjaHN0YXJ0LmJydXNoIix1
KSxvPWkuc2VsZWN0QWxsKCIuYmFja2dyb3VuZCIpLmRhdGEoWzBdKTtvLmVudGVyKCkuYXBwZW5k
KCJyZWN0IikuYXR0cigiY2xhc3MiLCJiYWNrZ3JvdW5kIikuc3R5bGUoInZpc2liaWxpdHkiLCJo
aWRkZW4iKS5zdHlsZSgiY3Vyc29yIiwiY3Jvc3NoYWlyIiksaS5zZWxlY3RBbGwoIi5leHRlbnQi
KS5kYXRhKFswXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImV4dGVudCIp
LnN0eWxlKCJjdXJzb3IiLCJtb3ZlIik7dmFyIGE9aS5zZWxlY3RBbGwoIi5yZXNpemUiKS5kYXRh
KHAsd3QpO2EuZXhpdCgpLnJlbW92ZSgpLGEuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsZnVuY3Rpb24obil7cmV0dXJuInJlc2l6ZSAiK259KS5zdHlsZSgiY3Vyc29yIixmdW5jdGlv
bihuKXtyZXR1cm4gVHNbbl19KS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IixmdW5jdGlvbihuKXty
ZXR1cm4vW2V3XSQvLnRlc3Qobik/LTM6bnVsbH0pLmF0dHIoInkiLGZ1bmN0aW9uKG4pe3JldHVy
bi9eW25zXS8udGVzdChuKT8tMzpudWxsfSkuYXR0cigid2lkdGgiLDYpLmF0dHIoImhlaWdodCIs
Nikuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKSxhLnN0eWxlKCJkaXNwbGF5IixuLmVtcHR5
KCk/Im5vbmUiOm51bGwpO3ZhciBsLGY9Wm8udHJhbnNpdGlvbihpKSxoPVpvLnRyYW5zaXRpb24o
byk7YyYmKGw9VGkoYyksaC5hdHRyKCJ4IixsWzBdKS5hdHRyKCJ3aWR0aCIsbFsxXS1sWzBdKSxl
KGYpKSxzJiYobD1UaShzKSxoLmF0dHIoInkiLGxbMF0pLmF0dHIoImhlaWdodCIsbFsxXS1sWzBd
KSxyKGYpKSx0KGYpfSl9ZnVuY3Rpb24gdChuKXtuLnNlbGVjdEFsbCgiLnJlc2l6ZSIpLmF0dHIo
InRyYW5zZm9ybSIsZnVuY3Rpb24obil7cmV0dXJuInRyYW5zbGF0ZSgiK2xbKy9lJC8udGVzdChu
KV0rIiwiK2ZbKy9ecy8udGVzdChuKV0rIikifSl9ZnVuY3Rpb24gZShuKXtuLnNlbGVjdCgiLmV4
dGVudCIpLmF0dHIoIngiLGxbMF0pLG4uc2VsZWN0QWxsKCIuZXh0ZW50LC5uPnJlY3QsLnM+cmVj
dCIpLmF0dHIoIndpZHRoIixsWzFdLWxbMF0pfWZ1bmN0aW9uIHIobil7bi5zZWxlY3QoIi5leHRl
bnQiKS5hdHRyKCJ5IixmWzBdKSxuLnNlbGVjdEFsbCgiLmV4dGVudCwuZT5yZWN0LC53PnJlY3Qi
KS5hdHRyKCJoZWlnaHQiLGZbMV0tZlswXSl9ZnVuY3Rpb24gdSgpe2Z1bmN0aW9uIHUoKXszMj09
Wm8uZXZlbnQua2V5Q29kZSYmKEN8fCh4PW51bGwselswXS09bFsxXSx6WzFdLT1mWzFdLEM9Miks
eSgpKX1mdW5jdGlvbiBwKCl7MzI9PVpvLmV2ZW50LmtleUNvZGUmJjI9PUMmJih6WzBdKz1sWzFd
LHpbMV0rPWZbMV0sQz0wLHkoKSl9ZnVuY3Rpb24gdigpe3ZhciBuPVpvLm1vdXNlKF8pLHU9ITE7
TSYmKG5bMF0rPU1bMF0sblsxXSs9TVsxXSksQ3x8KFpvLmV2ZW50LmFsdEtleT8oeHx8KHg9Wyhs
WzBdK2xbMV0pLzIsKGZbMF0rZlsxXSkvMl0pLHpbMF09bFsrKG5bMF08eFswXSldLHpbMV09Zlsr
KG5bMV08eFsxXSldKTp4PW51bGwpLEUmJmQobixjLDApJiYoZShTKSx1PSEwKSxBJiZkKG4scywx
KSYmKHIoUyksdT0hMCksdSYmKHQoUyksdyh7dHlwZToiYnJ1c2giLG1vZGU6Qz8ibW92ZSI6InJl
c2l6ZSJ9KSl9ZnVuY3Rpb24gZChuLHQsZSl7dmFyIHIsdSxhPVRpKHQpLGM9YVswXSxzPWFbMV0s
cD16W2VdLHY9ZT9mOmwsZD12WzFdLXZbMF07cmV0dXJuIEMmJihjLT1wLHMtPWQrcCkscj0oZT9n
OmgpP01hdGgubWF4KGMsTWF0aC5taW4ocyxuW2VdKSk6bltlXSxDP3U9KHIrPXApK2Q6KHgmJihw
PU1hdGgubWF4KGMsTWF0aC5taW4ocywyKnhbZV0tcikpKSxyPnA/KHU9cixyPXApOnU9cCksdlsw
XSE9cnx8dlsxXSE9dT8oZT9vPW51bGw6aT1udWxsLHZbMF09cix2WzFdPXUsITApOnZvaWQgMH1m
dW5jdGlvbiBtKCl7digpLFMuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc2VsZWN0QWxs
KCIucmVzaXplIikuc3R5bGUoImRpc3BsYXkiLG4uZW1wdHkoKT8ibm9uZSI6bnVsbCksWm8uc2Vs
ZWN0KCJib2R5Iikuc3R5bGUoImN1cnNvciIsbnVsbCksTC5vbigibW91c2Vtb3ZlLmJydXNoIixu
dWxsKS5vbigibW91c2V1cC5icnVzaCIsbnVsbCkub24oInRvdWNobW92ZS5icnVzaCIsbnVsbCku
b24oInRvdWNoZW5kLmJydXNoIixudWxsKS5vbigia2V5ZG93bi5icnVzaCIsbnVsbCkub24oImtl
eXVwLmJydXNoIixudWxsKSxOKCksdyh7dHlwZToiYnJ1c2hlbmQifSl9dmFyIHgsTSxfPXRoaXMs
Yj1aby5zZWxlY3QoWm8uZXZlbnQudGFyZ2V0KSx3PWEub2YoXyxhcmd1bWVudHMpLFM9Wm8uc2Vs
ZWN0KF8pLGs9Yi5kYXR1bSgpLEU9IS9eKG58cykkLy50ZXN0KGspJiZjLEE9IS9eKGV8dykkLy50
ZXN0KGspJiZzLEM9Yi5jbGFzc2VkKCJleHRlbnQiKSxOPUkoKSx6PVpvLm1vdXNlKF8pLEw9Wm8u
c2VsZWN0KFdvKS5vbigia2V5ZG93bi5icnVzaCIsdSkub24oImtleXVwLmJydXNoIixwKTtpZiha
by5ldmVudC5jaGFuZ2VkVG91Y2hlcz9MLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLHYpLm9uKCJ0b3Vj
aGVuZC5icnVzaCIsbSk6TC5vbigibW91c2Vtb3ZlLmJydXNoIix2KS5vbigibW91c2V1cC5icnVz
aCIsbSksUy5pbnRlcnJ1cHQoKS5zZWxlY3RBbGwoIioiKS5pbnRlcnJ1cHQoKSxDKXpbMF09bFsw
XS16WzBdLHpbMV09ZlswXS16WzFdO2Vsc2UgaWYoayl7dmFyIFQ9Ky93JC8udGVzdChrKSxxPSsv
Xm4vLnRlc3Qoayk7TT1bbFsxLVRdLXpbMF0sZlsxLXFdLXpbMV1dLHpbMF09bFtUXSx6WzFdPWZb
cV19ZWxzZSBaby5ldmVudC5hbHRLZXkmJih4PXouc2xpY2UoKSk7Uy5zdHlsZSgicG9pbnRlci1l
dmVudHMiLCJub25lIikuc2VsZWN0QWxsKCIucmVzaXplIikuc3R5bGUoImRpc3BsYXkiLG51bGwp
LFpvLnNlbGVjdCgiYm9keSIpLnN0eWxlKCJjdXJzb3IiLGIuc3R5bGUoImN1cnNvciIpKSx3KHt0
eXBlOiJicnVzaHN0YXJ0In0pLHYoKX12YXIgaSxvLGE9TShuLCJicnVzaHN0YXJ0IiwiYnJ1c2gi
LCJicnVzaGVuZCIpLGM9bnVsbCxzPW51bGwsbD1bMCwwXSxmPVswLDBdLGg9ITAsZz0hMCxwPXFz
WzBdO3JldHVybiBuLmV2ZW50PWZ1bmN0aW9uKG4pe24uZWFjaChmdW5jdGlvbigpe3ZhciBuPWEu
b2YodGhpcyxhcmd1bWVudHMpLHQ9e3g6bCx5OmYsaTppLGo6b30sZT10aGlzLl9fY2hhcnRfX3x8
dDt0aGlzLl9fY2hhcnRfXz10LFNzP1pvLnNlbGVjdCh0aGlzKS50cmFuc2l0aW9uKCkuZWFjaCgi
c3RhcnQuYnJ1c2giLGZ1bmN0aW9uKCl7aT1lLmksbz1lLmosbD1lLngsZj1lLnksbih7dHlwZToi
YnJ1c2hzdGFydCJ9KX0pLnR3ZWVuKCJicnVzaDpicnVzaCIsZnVuY3Rpb24oKXt2YXIgZT1ndShs
LHQueCkscj1ndShmLHQueSk7cmV0dXJuIGk9bz1udWxsLGZ1bmN0aW9uKHUpe2w9dC54PWUodSks
Zj10Lnk9cih1KSxuKHt0eXBlOiJicnVzaCIsbW9kZToicmVzaXplIn0pfX0pLmVhY2goImVuZC5i
cnVzaCIsZnVuY3Rpb24oKXtpPXQuaSxvPXQuaixuKHt0eXBlOiJicnVzaCIsbW9kZToicmVzaXpl
In0pLG4oe3R5cGU6ImJydXNoZW5kIn0pfSk6KG4oe3R5cGU6ImJydXNoc3RhcnQifSksbih7dHlw
ZToiYnJ1c2giLG1vZGU6InJlc2l6ZSJ9KSxuKHt0eXBlOiJicnVzaGVuZCJ9KSl9KX0sbi54PWZ1
bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQscD1xc1shYzw8MXwhc10sbik6
Y30sbi55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQscD1xc1shYzw8
MXwhc10sbik6c30sbi5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
YyYmcz8oaD0hIXRbMF0sZz0hIXRbMV0pOmM/aD0hIXQ6cyYmKGc9ISF0KSxuKTpjJiZzP1toLGdd
OmM/aDpzP2c6bnVsbH0sbi5leHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGUscix1LGEsaDtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oYyYmKGU9dFswXSxyPXRbMV0scyYmKGU9ZVswXSxyPXJbMF0pLGk9
W2Uscl0sYy5pbnZlcnQmJihlPWMoZSkscj1jKHIpKSxlPnImJihoPWUsZT1yLHI9aCksKGUhPWxb
MF18fHIhPWxbMV0pJiYobD1bZSxyXSkpLHMmJih1PXRbMF0sYT10WzFdLGMmJih1PXVbMV0sYT1h
WzFdKSxvPVt1LGFdLHMuaW52ZXJ0JiYodT1zKHUpLGE9cyhhKSksdT5hJiYoaD11LHU9YSxhPWgp
LCh1IT1mWzBdfHxhIT1mWzFdKSYmKGY9W3UsYV0pKSxuKTooYyYmKGk/KGU9aVswXSxyPWlbMV0p
OihlPWxbMF0scj1sWzFdLGMuaW52ZXJ0JiYoZT1jLmludmVydChlKSxyPWMuaW52ZXJ0KHIpKSxl
PnImJihoPWUsZT1yLHI9aCkpKSxzJiYobz8odT1vWzBdLGE9b1sxXSk6KHU9ZlswXSxhPWZbMV0s
cy5pbnZlcnQmJih1PXMuaW52ZXJ0KHUpLGE9cy5pbnZlcnQoYSkpLHU+YSYmKGg9dSx1PWEsYT1o
KSkpLGMmJnM/W1tlLHVdLFtyLGFdXTpjP1tlLHJdOnMmJlt1LGFdKX0sbi5jbGVhcj1mdW5jdGlv
bigpe3JldHVybiBuLmVtcHR5KCl8fChsPVswLDBdLGY9WzAsMF0saT1vPW51bGwpLG59LG4uZW1w
dHk9ZnVuY3Rpb24oKXtyZXR1cm4hIWMmJmxbMF09PWxbMV18fCEhcyYmZlswXT09ZlsxXX0sWm8u
cmViaW5kKG4sYSwib24iKX07dmFyIFRzPXtuOiJucy1yZXNpemUiLGU6ImV3LXJlc2l6ZSIsczoi
bnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3NlLXJlc2l6ZSIsbmU6Im5lc3ctcmVzaXpl
IixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJlc2l6ZSJ9LHFzPVtbIm4iLCJlIiwicyIsInci
LCJudyIsIm5lIiwic2UiLCJzdyJdLFsiZSIsInciXSxbIm4iLCJzIl0sW11dLFJzPVFhLmZvcm1h
dD1pYy50aW1lRm9ybWF0LERzPVJzLnV0YyxQcz1EcygiJVktJW0tJWRUJUg6JU06JVMuJUxaIik7
UnMuaXNvPURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nJiYrbmV3IERhdGUoIjIwMDAtMDEtMDFU
MDA6MDA6MDAuMDAwWiIpP0hvOlBzLEhvLnBhcnNlPWZ1bmN0aW9uKG4pe3ZhciB0PW5ldyBEYXRl
KG4pO3JldHVybiBpc05hTih0KT9udWxsOnR9LEhvLnRvU3RyaW5nPVBzLnRvU3RyaW5nLFFhLnNl
Y29uZD1EdChmdW5jdGlvbihuKXtyZXR1cm4gbmV3IG5jKDFlMypNYXRoLmZsb29yKG4vMWUzKSl9
LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKG4uZ2V0VGltZSgpKzFlMypNYXRoLmZsb29yKHQpKX0s
ZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0U2Vjb25kcygpfSksUWEuc2Vjb25kcz1RYS5zZWNvbmQu
cmFuZ2UsUWEuc2Vjb25kcy51dGM9UWEuc2Vjb25kLnV0Yy5yYW5nZSxRYS5taW51dGU9RHQoZnVu
Y3Rpb24obil7cmV0dXJuIG5ldyBuYyg2ZTQqTWF0aC5mbG9vcihuLzZlNCkpfSxmdW5jdGlvbihu
LHQpe24uc2V0VGltZShuLmdldFRpbWUoKSs2ZTQqTWF0aC5mbG9vcih0KSl9LGZ1bmN0aW9uKG4p
e3JldHVybiBuLmdldE1pbnV0ZXMoKX0pLFFhLm1pbnV0ZXM9UWEubWludXRlLnJhbmdlLFFhLm1p
bnV0ZXMudXRjPVFhLm1pbnV0ZS51dGMucmFuZ2UsUWEuaG91cj1EdChmdW5jdGlvbihuKXt2YXIg
dD1uLmdldFRpbWV6b25lT2Zmc2V0KCkvNjA7cmV0dXJuIG5ldyBuYygzNmU1KihNYXRoLmZsb29y
KG4vMzZlNS10KSt0KSl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKG4uZ2V0VGltZSgpKzM2ZTUq
TWF0aC5mbG9vcih0KSl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldEhvdXJzKCl9KSxRYS5ob3Vy
cz1RYS5ob3VyLnJhbmdlLFFhLmhvdXJzLnV0Yz1RYS5ob3VyLnV0Yy5yYW5nZSxRYS5tb250aD1E
dChmdW5jdGlvbihuKXtyZXR1cm4gbj1RYS5kYXkobiksbi5zZXREYXRlKDEpLG59LGZ1bmN0aW9u
KG4sdCl7bi5zZXRNb250aChuLmdldE1vbnRoKCkrdCl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdl
dE1vbnRoKCl9KSxRYS5tb250aHM9UWEubW9udGgucmFuZ2UsUWEubW9udGhzLnV0Yz1RYS5tb250
aC51dGMucmFuZ2U7dmFyIFVzPVsxZTMsNWUzLDE1ZTMsM2U0LDZlNCwzZTUsOWU1LDE4ZTUsMzZl
NSwxMDhlNSwyMTZlNSw0MzJlNSw4NjRlNSwxNzI4ZTUsNjA0OGU1LDI1OTJlNiw3Nzc2ZTYsMzE1
MzZlNl0sanM9W1tRYS5zZWNvbmQsMV0sW1FhLnNlY29uZCw1XSxbUWEuc2Vjb25kLDE1XSxbUWEu
c2Vjb25kLDMwXSxbUWEubWludXRlLDFdLFtRYS5taW51dGUsNV0sW1FhLm1pbnV0ZSwxNV0sW1Fh
Lm1pbnV0ZSwzMF0sW1FhLmhvdXIsMV0sW1FhLmhvdXIsM10sW1FhLmhvdXIsNl0sW1FhLmhvdXIs
MTJdLFtRYS5kYXksMV0sW1FhLmRheSwyXSxbUWEud2VlaywxXSxbUWEubW9udGgsMV0sW1FhLm1v
bnRoLDNdLFtRYS55ZWFyLDFdXSxIcz1Scy5tdWx0aShbWyIuJUwiLGZ1bmN0aW9uKG4pe3JldHVy
biBuLmdldE1pbGxpc2Vjb25kcygpfV0sWyI6JVMiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFNl
Y29uZHMoKX1dLFsiJUk6JU0iLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldE1pbnV0ZXMoKX1dLFsi
JUkgJXAiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldEhvdXJzKCl9XSxbIiVhICVkIixmdW5jdGlv
bihuKXtyZXR1cm4gbi5nZXREYXkoKSYmMSE9bi5nZXREYXRlKCl9XSxbIiViICVkIixmdW5jdGlv
bihuKXtyZXR1cm4gMSE9bi5nZXREYXRlKCl9XSxbIiVCIixmdW5jdGlvbihuKXtyZXR1cm4gbi5n
ZXRNb250aCgpfV0sWyIlWSIsd2VdXSksRnM9e3JhbmdlOmZ1bmN0aW9uKG4sdCxlKXtyZXR1cm4g
Wm8ucmFuZ2UoTWF0aC5jZWlsKG4vZSkqZSwrdCxlKS5tYXAoT28pfSxmbG9vcjp3dCxjZWlsOnd0
fTtqcy55ZWFyPVFhLnllYXIsUWEuc2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gRm8oWm8uc2NhbGUu
bGluZWFyKCksanMsSHMpfTt2YXIgT3M9anMubWFwKGZ1bmN0aW9uKG4pe3JldHVybltuWzBdLnV0
YyxuWzFdXX0pLFlzPURzLm11bHRpKFtbIi4lTCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRD
TWlsbGlzZWNvbmRzKCl9XSxbIjolUyIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDU2Vjb25k
cygpfV0sWyIlSTolTSIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDTWludXRlcygpfV0sWyIl
SSAlcCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDSG91cnMoKX1dLFsiJWEgJWQiLGZ1bmN0
aW9uKG4pe3JldHVybiBuLmdldFVUQ0RheSgpJiYxIT1uLmdldFVUQ0RhdGUoKX1dLFsiJWIgJWQi
LGZ1bmN0aW9uKG4pe3JldHVybiAxIT1uLmdldFVUQ0RhdGUoKX1dLFsiJUIiLGZ1bmN0aW9uKG4p
e3JldHVybiBuLmdldFVUQ01vbnRoKCl9XSxbIiVZIix3ZV1dKTtPcy55ZWFyPVFhLnllYXIudXRj
LFFhLnNjYWxlLnV0Yz1mdW5jdGlvbigpe3JldHVybiBGbyhaby5zY2FsZS5saW5lYXIoKSxPcyxZ
cyl9LFpvLnRleHQ9U3QoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVzcG9uc2VUZXh0fSksWm8uanNv
bj1mdW5jdGlvbihuLHQpe3JldHVybiBrdChuLCJhcHBsaWNhdGlvbi9qc29uIixZbyx0KX0sWm8u
aHRtbD1mdW5jdGlvbihuLHQpe3JldHVybiBrdChuLCJ0ZXh0L2h0bWwiLElvLHQpfSxaby54bWw9
U3QoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVzcG9uc2VYTUx9KSwiZnVuY3Rpb24iPT10eXBlb2Yg
ZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShabyk6Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1v
ZHVsZS5leHBvcnRzJiYobW9kdWxlLmV4cG9ydHM9Wm8pLHRoaXMuZDM9Wm99KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvZ3JhcGguanMgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9ncmFwaC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4wMjFmNWY1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvZ3JhcGguanMKQEAgLTAs
MCArMSwxNDIgQEAKK2Z1bmN0aW9uIGdyYXBoKHNlbGVjdG9yLCBtYXJnaW5zLCBheGVzLCBzYW1w
bGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpCit7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICBlbGVtZW50LmlubmVySFRNTCA9ICcnOworCisg
ICAgdmFyIHNpemUgPSBQb2ludC5lbGVtZW50Q2xpZW50U2l6ZShlbGVtZW50KS5zdWJ0cmFjdCht
YXJnaW5zLnNpemUpOworCisgICAgdmFyIHggPSBkMy5zY2FsZS5saW5lYXIoKQorICAgICAgICAg
ICAgLnJhbmdlKFswLCBzaXplLndpZHRoXSkKKyAgICAgICAgICAgIC5kb21haW4oZDMuZXh0ZW50
KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudGltZU9mZnNldDsgfSkpOyAgICAgICAg
ICAgIAorCisgICAgdmFyIHlMZWZ0ID0gZDMuc2NhbGUubGluZWFyKCkKKyAgICAgICAgICAgIC5y
YW5nZShbc2l6ZS5oZWlnaHQsIDBdKQorICAgICAgICAgICAgLmRvbWFpbihbMCwgZDMubWF4KHNh
bXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVzWzBdOyB9KV0pOworCisgICAgdmFy
IHlSaWdodCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAucmFuZ2UoW3NpemUuaGVp
Z2h0LCAwXSkKKyAgICAgICAgICAgIC5kb21haW4oWzAsIGQzLm1heChzYW1wbGVzLCBmdW5jdGlv
bihkKSB7IHJldHVybiBkLnZhbHVlc1sxXTsgfSldKTsKKworICAgIHZhciB4QXhpcyA9IGQzLnN2
Zy5heGlzKCkKKyAgICAgICAgICAgIC5zY2FsZSh4KQorICAgICAgICAgICAgLm9yaWVudCgiYm90
dG9tIik7CisKKyAgICB2YXIgeUF4aXNMZWZ0ID0gZDMuc3ZnLmF4aXMoKQorICAgICAgICAgICAg
LnNjYWxlKHlMZWZ0KQorICAgICAgICAgICAgLm9yaWVudCgibGVmdCIpOworCisgICAgdmFyIHlB
eGlzUmlnaHQgPSBkMy5zdmcuYXhpcygpCisgICAgICAgICAgICAuc2NhbGUoeVJpZ2h0KQorICAg
ICAgICAgICAgLm9yaWVudCgicmlnaHQiKTsKKworICAgIHZhciBsaW5lTGVmdCA9IGQzLnN2Zy5s
aW5lKCkKKyAgICAgICAgICAgIC54KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHgoZC50aW1lT2Zmc2V0
KTsgfSkKKyAgICAgICAgICAgIC55KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHlMZWZ0KGQudmFsdWVz
WzBdKTsgfSk7CisKKyAgICB2YXIgbGluZVJpZ2h0ID0gZDMuc3ZnLmxpbmUoKQorICAgICAgICAg
ICAgLngoZnVuY3Rpb24oZCkgeyByZXR1cm4geChkLnRpbWVPZmZzZXQpOyB9KQorICAgICAgICAg
ICAgLnkoZnVuY3Rpb24oZCkgeyByZXR1cm4geVJpZ2h0KGQudmFsdWVzWzFdKTsgfSk7CisKKyAg
ICBzYW1wbGVzLmZvckVhY2goZnVuY3Rpb24oZCkgeworICAgICAgICBkLnRpbWVPZmZzZXQgPSAr
ZC50aW1lT2Zmc2V0OworICAgICAgICBkLnZhbHVlc1swXSA9ICtkLnZhbHVlc1swXTsKKyAgICAg
ICAgZC52YWx1ZXNbMV0gPSArZC52YWx1ZXNbMV07ICAgICAgICAKKyAgICB9KTsgICAgCisKKyAg
ICB2YXIgc2FtcGxlZFNhbXBsZXMgPSBzYW1wbGVzLmZpbHRlcihmdW5jdGlvbihkKSB7CisgICAg
ICAgIHJldHVybiBkLnRpbWVPZmZzZXQgPj0gc2FtcGxpbmdUaW1lT2Zmc2V0OworICAgIH0pOwor
ICAgIAorICAgIHZhciBtZWFuTGVmdCA9IGQzLm1lYW4oc2FtcGxlZFNhbXBsZXMsIGZ1bmN0aW9u
KGQpIHsKKyAgICAgICAgcmV0dXJuICtkLnZhbHVlc1swXTsKKyAgICB9KTsKKworICAgIHZhciBt
ZWFuUmlnaHQgPSBkMy5tZWFuKHNhbXBsZWRTYW1wbGVzLCBmdW5jdGlvbihkKSB7CisgICAgICAg
IHJldHVybiArZC52YWx1ZXNbMV07CisgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgdmFyIHN2ZyA9IGQzLnNlbGVjdChzZWxlY3RvcikuYXBwZW5kKCJzdmciKQorICAg
ICAgICAuYXR0cigid2lkdGgiLCBzaXplLndpZHRoICsgbWFyZ2lucy5sZWZ0ICsgbWFyZ2lucy5y
aWdodCkKKyAgICAgICAgLmF0dHIoImhlaWdodCIsIHNpemUuaGVpZ2h0ICsgbWFyZ2lucy50b3Ag
KyBtYXJnaW5zLmJvdHRvbSkKKyAgICAgICAgLmFwcGVuZCgiZyIpCisgICAgICAgICAgICAuYXR0
cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgbWFyZ2lucy5sZWZ0ICsgIiwiICsgbWFyZ2lu
cy50b3AgKyAiKSIpOworCisgICAgLy8geC1heGlzCisgICAgc3ZnLmFwcGVuZCgiZyIpCisgICAg
ICAgIC5hdHRyKCJjbGFzcyIsICJ4IGF4aXMiKQorICAgICAgICAuYXR0cigiZmlsbCIsICJyZ2Io
MjM1LCAyMzUsIDIzNSkiKQorICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgw
LCIgKyBzaXplLmhlaWdodCArICIpIikKKyAgICAgICAgLmNhbGwoeEF4aXMpCisgICAgICAgIC5h
cHBlbmQoInRleHQiKQorICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAg
ICAgICAgIC5hdHRyKCJ4Iiwgc2l6ZS53aWR0aCkKKyAgICAgICAgICAgIC5hdHRyKCJ5IiwgLTYp
CisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJyZ2IoMjM1LCAyMzUsIDIzNSkiKQorICAgICAg
ICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQorICAgICAgICAgICAgLnRleHQoInRp
bWUiKTsKKyAgICAgICAgICAgICAgICAgCisgICAgLy8geUxlZnQtYXhpcworICAgIHN2Zy5hcHBl
bmQoImciKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAieSBheGlzIikKKyAgICAgICAgLmF0dHIo
ImZpbGwiLCAiIzdBREQ0OSIpCisgICAgICAgIC5jYWxsKHlBeGlzTGVmdCkKKyAgICAgICAgLmFw
cGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAg
ICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCisgICAgICAgICAgICAuYXR0
cigieSIsIDYpCisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICIjN0FERDQ5IikKKyAgICAgICAg
ICAgIC5hdHRyKCJkeSIsICIuNzFlbSIpCisgICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9y
IiwgImVuZCIpCisgICAgICAgICAgICAudGV4dChheGVzWzBdKTsKKworICAgIC8vIHlSaWdodC1h
eGlzCisgICAgc3ZnLmFwcGVuZCgiZyIpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJ5IGF4aXMi
KQorICAgICAgICAuYXR0cigiZmlsbCIsICIjRkE0OTI1IikKKyAgICAgICAgLmF0dHIoInRyYW5z
Zm9ybSIsICJ0cmFuc2xhdGUoIiArIHNpemUud2lkdGggKyAiLCAwKSIpCisgICAgICAgIC5jYWxs
KHlBeGlzUmlnaHQpCisgICAgICAgIC5hcHBlbmQoInRleHQiKQorICAgICAgICAgICAgLmF0dHIo
ImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAicm90YXRl
KC05MCkiKQorICAgICAgICAgICAgLmF0dHIoInkiLCA2KQorICAgICAgICAgICAgLmF0dHIoImZp
bGwiLCAiI0ZBNDkyNSIpCisgICAgICAgICAgICAuYXR0cigiZHkiLCAiLjcxZW0iKQorICAgICAg
ICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQorICAgICAgICAgICAgLnRleHQoYXhl
c1sxXSk7CisKKyAgICAvLyBsZWZ0LW1lYW4KKyAgICBzdmcuYXBwZW5kKCJzdmc6bGluZSIpCisg
ICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkpCisgICAgICAgIC5hdHRyKCJ4MiIsIHNpemUud2lkdGgp
CisgICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0KG1lYW5MZWZ0KSkKKyAgICAgICAgLmF0dHIoInky
IiwgeUxlZnQobWVhbkxlZnQpKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAibGVmdC1tZWFuIik7
CisKKyAgICAvLyByaWdodC1tZWFuCisgICAgc3ZnLmFwcGVuZCgic3ZnOmxpbmUiKQorICAgICAg
ICAuYXR0cigieDEiLCB4KDApKQorICAgICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKQorICAg
ICAgICAuYXR0cigieTEiLCB5UmlnaHQobWVhblJpZ2h0KSkKKyAgICAgICAgLmF0dHIoInkyIiwg
eVJpZ2h0KG1lYW5SaWdodCkpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJyaWdodC1tZWFuIik7
ICAgICAgICAKKworICAgIC8vIHNhbXBsaW5nVGltZU9mZnNldAorICAgIHN2Zy5hcHBlbmQoImxp
bmUiKQorICAgICAgICAuYXR0cigieDEiLCB4KHNhbXBsaW5nVGltZU9mZnNldCkpCisgICAgICAg
IC5hdHRyKCJ4MiIsIHgoc2FtcGxpbmdUaW1lT2Zmc2V0KSkKKyAgICAgICAgLmF0dHIoInkxIiwg
eUxlZnQoMCkpCisgICAgICAgIC5hdHRyKCJ5MiIsIHlMZWZ0KHlBeGlzTGVmdC5zY2FsZSgpLmRv
bWFpbigpWzFdKSkKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInNhbXBsZS10aW1lIik7CisKKyAg
ICAvLyBsZWZ0LXNhbXBsZXMKKyAgICBzdmcuYXBwZW5kKCJwYXRoIikKKyAgICAgICAgLmRhdHVt
KHNhbXBsZXMpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJsZWZ0LXNhbXBsZXMiKQorICAgICAg
ICAuYXR0cigiZCIsIGxpbmVMZWZ0KTsKKyAgICAgICAgCisgICAgLy8gcmlnaHQtc2FtcGxlcwor
ICAgIHN2Zy5hcHBlbmQoInBhdGgiKQorICAgICAgICAuZGF0dW0oc2FtcGxlcykKKyAgICAgICAg
LmF0dHIoImNsYXNzIiwgInJpZ2h0LXNhbXBsZXMiKQorICAgICAgICAuYXR0cigiZCIsIGxpbmVS
aWdodCk7Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
ZXNvdXJjZXMvZGVidWctcnVubmVyL3Rlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmU5ODdmODkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qcwpAQCAtMCwwICsxLDI1NiBA
QAordmFyIEhlYWRlcnMgPSBbCisgICAgeworICAgICAgICB0ZXh0OiBTdHJpbmdzLnRleHQudGVz
dE5hbWUsCisgICAgICAgIHdpZHRoOiAyNywKKyAgICAgICAgY2hpbGRyZW46IFtdCisgICAgfSwK
KyAgICB7CisgICAgICAgIHRleHQ6IFN0cmluZ3MudGV4dC5zY29yZSwKKyAgICAgICAgd2lkdGg6
IDcsCisgICAgICAgIGNoaWxkcmVuOiBbXQorICAgIH0sCisgICAgeworICAgICAgICB0ZXh0OiBT
dHJpbmdzLnRleHQuZXhwZXJpbWVudHMuY29tcGxleGl0eSwKKyAgICAgICAgd2lkdGg6IDI3LAor
ICAgICAgICBjaGlsZHJlbjoKKyAgICAgICAgWworICAgICAgICAgICAgeyB0ZXh0OiBTdHJpbmdz
LnRleHQubWVhc3VyZW1lbnRzLmF2ZXJhZ2UsIHdpZHRoOiA3LCBjaGlsZHJlbjogW10gfSwKKyAg
ICAgICAgICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1lYXN1cmVtZW50cy5jb25jZXJuLCB3aWR0
aDogNywgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6IFN0cmluZ3MudGV4dC5t
ZWFzdXJlbWVudHMuc3RkZXYsIHdpZHRoOiA3LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAg
IHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1lYXN1cmVtZW50cy5wZXJjZW50LCB3aWR0aDogNiwgY2hp
bGRyZW46IFtdIH0sCisgICAgICAgIF0KKyAgICB9LAorICAgIHsKKyAgICAgICAgdGV4dDogU3Ry
aW5ncy50ZXh0LmV4cGVyaW1lbnRzLmZyYW1lUmF0ZSwKKyAgICAgICAgd2lkdGg6IDI0LAorICAg
ICAgICBjaGlsZHJlbjoKKyAgICAgICAgWworICAgICAgICAgICAgeyB0ZXh0OiBTdHJpbmdzLnRl
eHQubWVhc3VyZW1lbnRzLmF2ZXJhZ2UsIHdpZHRoOiA2LCBjaGlsZHJlbjogW10gfSwKKyAgICAg
ICAgICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1lYXN1cmVtZW50cy5jb25jZXJuLCB3aWR0aDog
NiwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6IFN0cmluZ3MudGV4dC5tZWFz
dXJlbWVudHMuc3RkZXYsIHdpZHRoOiA2LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAgIHsg
dGV4dDogU3RyaW5ncy50ZXh0Lm1lYXN1cmVtZW50cy5wZXJjZW50LCB3aWR0aDogNiwgY2hpbGRy
ZW46IFtdIH0sCisgICAgICAgIF0KKyAgICB9LAorICAgIHsKKyAgICAgICAgdGV4dDogU3RyaW5n
cy50ZXh0LnNhbXBsZXMsCisgICAgICAgIHdpZHRoOiAxNSwKKyAgICAgICAgY2hpbGRyZW46Cisg
ICAgICAgIFsKKyAgICAgICAgICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0LnJlc3VsdHMuZ3JhcGgs
IHdpZHRoOiA4LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAgIHsgdGV4dDogU3RyaW5ncy50
ZXh0LnJlc3VsdHMuanNvbiwgd2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICBdCisg
ICAgfQorXTsKKwordmFyIFN1aXRlID0gZnVuY3Rpb24obmFtZSwgdGVzdHMpIHsKKyAgICB0aGlz
Lm5hbWUgPSBuYW1lOworICAgIHRoaXMudGVzdHMgPSB0ZXN0czsKK307CitTdWl0ZS5wcm90b3R5
cGUucHJlcGFyZSA9IGZ1bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3Vt
ZW50KQoreworICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoIiNzdGFnZSIpLnRoZW4o
ZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfSk7Cit9
OworU3VpdGUucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICByZXR1cm4gY29udGVudFdp
bmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKTsKK307CisKK3ZhciBTdWl0ZXMgPSBbXTsKKworU3VpdGVzLnB1c2gobmV3IFN1aXRl
KCJIVE1MIHN1aXRlIiwKKyAgICBbCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICJib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9MTIm
cGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJDU1Mg
Ym91bmNpbmcgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVy
bDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/cGFydGljbGVX
aWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAg
ICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiCisgICAgICAgIH0sCisgICAg
ICAgIHsgCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3Nz
LXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2ly
Y2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBncmFk
aWVudCBjaXJjbGVzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJi
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9
ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIs
CisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIFNWRyBpbWFnZXMiCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1jc3MtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFn
ZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKKyAgICAgICAgICAgIG5hbWU6ICJDU1Mg
Ym91bmNpbmcgUE5HIGltYWdlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
dXJsOiAidGV4dC9sYXllcmluZy10ZXh0Lmh0bWwiLAorICAgICAgICAgICAgbmFtZTogIkNTUyBs
YXllcmluZyB0ZXh0IgorICAgICAgICB9LAorICAgIF0KKykpOworCitTdWl0ZXMucHVzaChuZXcg
U3VpdGUoIkNhbnZhcyBzdWl0ZSIsCisgICAgWworICAgICAgICB7IAorICAgICAgICAgICAgdXJs
OiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNs
ZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICBu
YW1lOiAiY2FudmFzIGJvdW5jaW5nIGNpcmNsZXMiCisgICAgICAgIH0sCisgICAgICAgIHsgCisg
ICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBl
cy5odG1sP3BhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlw
PXN0YXIiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBjbGlwcGVkIHJlY3Rz
IgorICAgICAgICB9LAorICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRp
Y2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5h
bWU6ICJjYW52YXMgYm91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAgICAg
ICAgeyAKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52
YXMtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNy
Yz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMg
Ym91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
dXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9wYXJ0
aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4t
eWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBQTkcgaW1hZ2Vz
IgorICAgICAgICB9LAorICAgIF0KKykpOworCitTdWl0ZXMucHVzaChuZXcgU3VpdGUoIlNWRyBz
dWl0ZSIsCisgICAgWworICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9MTImcGFydGljbGVI
ZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcg
Y2lyY2xlcyIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImJvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD00MCZw
YXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1l
OiAiU1ZHIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiLAorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5o
dG1sP3BhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9
Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBncmFkaWVudCBjaXJj
bGVzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1w
YXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGlj
bGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAg
ICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFNWRyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1h
Z2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9y
ZXNvdXJjZXMveWluLXlhbmcucG5nIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcg
UE5HIGltYWdlcyIKKyAgICAgICAgfSwKKyAgICBdCispKTsKKworU3VpdGVzLnB1c2gobmV3IFN1
aXRlKCJCYXNpYyBjYW52YXMgcGF0aCBzdWl0ZSIsCisgICAgWworICAgICAgICB7CisgICAgICAg
ICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWxpbmUm
bGluZUNhcD1idXR0IiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgbGluZSBzZWdtZW50cywg
YnV0dCBjYXBzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1w
bGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWxpbmUmbGluZUNhcD1yb3VuZCIs
CisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGxpbmUgc2VnbWVudHMsIHJvdW5kIGNhcHMiCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2Fu
dmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZSZsaW5lQ2FwPXNxdWFyZSIsCisgICAgICAgICAg
ICBuYW1lOiAiQ2FudmFzIGxpbmUgc2VnbWVudHMsIHNxdWFyZSBjYXBzIgorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5o
dG1sP3BhdGhUeXBlPWxpbmVQYXRoJmxpbmVKb2luPWJldmVsIiwKKyAgICAgICAgICAgIG5hbWU6
ICJDYW52YXMgbGluZSBwYXRoLCBiZXZlbCBqb2luIgorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBl
PWxpbmVQYXRoJmxpbmVKb2luPXJvdW5kIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgbGlu
ZSBwYXRoLCByb3VuZCBqb2luIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1
cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWxpbmVQYXRoJmxp
bmVKb2luPW1pdGVyIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgbGluZSBwYXRoLCBtaXRl
ciBqb2luIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUv
c2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWxpbmVQYXRoJmxpbmVEYXNoPTEiLAor
ICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHBhdGggd2l0aCBkYXNoIHBhdHRlcm4iCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2Fu
dmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9cXVhZHJhdGljIiwKKyAgICAgICAgICAgIG5hbWU6ICJD
YW52YXMgcXVhZHJhdGljIHNlZ21lbnRzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPXF1YWRy
YXRpY1BhdGgiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBxdWFkcmF0aWMgcGF0aCIKKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52
YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1iZXppZXIiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZh
cyBiZXppZXIgc2VnbWVudHMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVy
bDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9YmV6aWVyUGF0aCIs
CisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGJlemllciBwYXRoIgorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1s
PyZwYXRoVHlwZT1hcmNUbyIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGFyY1RvIHNlZ21l
bnRzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2lt
cGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWFyYyIsCisgICAgICAgICAgICBuYW1lOiAi
Q2FudmFzIGFyYyBzZWdtZW50cyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
dXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1yZWN0IiwKKyAg
ICAgICAgICAgIG5hbWU6ICJDYW52YXMgcmVjdHMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9
bGluZUZpbGwiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHBhdGgsIGZpbGwiCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2Fu
dmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9cXVhZHJhdGljRmlsbCIsCisgICAgICAgICAgICBuYW1l
OiAiQ2FudmFzIHF1YWRyYXRpYyBwYXRoLCBmaWxsIgorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBl
PWJlemllckZpbGwiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBiZXppZXIgcGF0aCwgZmls
bCIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBs
ZS1jYW52YXMtcGF0aHMuaHRtbD8mcGF0aFR5cGU9YXJjVG9GaWxsIiwKKyAgICAgICAgICAgIG5h
bWU6ICJDYW52YXMgYXJjVG8gc2VnbWVudHMsIGZpbGwiCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5
cGU9YXJjRmlsbCIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGFyYyBzZWdtZW50cywgZmls
bCIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBs
ZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1yZWN0RmlsbCIsCisgICAgICAgICAgICBuYW1l
OiAiQ2FudmFzIHJlY3RzLCBmaWxsIgorICAgICAgICB9CisgICAgXQorKSk7CisKK1N1aXRlcy5w
dXNoKG5ldyBTdWl0ZSgiQ29tcGxleCBleGFtcGxlcyIsCisgICAgWworICAgICAgICB7CisgICAg
ICAgICAgICB1cmw6ICJleGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWwiLAorICAgICAgICAg
ICAgbmFtZTogImNhbnZhcyBlbGVjdHJvbnMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHVybDogImV4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sIiwKKyAgICAgICAgICAgIG5h
bWU6ICJjYW52YXMgc3RhcnMiCisgICAgICAgIH0sCisgICAgXQorKSk7CisKK1N1aXRlcy5wdXNo
KG5ldyBTdWl0ZSgiTWlzY2VsbGFuZW91cyBUZXN0cyIsCisgICAgWworICAgICAgICB7CisgICAg
ICAgICAgICB1cmw6ICJtaXNjL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuaHRtbD9wYXJ0aWNsZVdp
ZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJmZpbHRlcnM9eWVzJmltYWdlU3JjPS4uL3Jlc291cmNl
cy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgbmFtZTogIkNvbXBvc2l0ZWQgVHJhbnNmb3Jt
cyIKKyAgICAgICAgfSwKKyAgICBdCispKTsKKworZnVuY3Rpb24gc3VpdGVGcm9tTmFtZShuYW1l
KQoreworICAgIHJldHVybiBTdWl0ZXMuZmluZChmdW5jdGlvbihzdWl0ZSkgeyByZXR1cm4gc3Vp
dGUubmFtZSA9PSBuYW1lOyB9KTsKK30KKworZnVuY3Rpb24gdGVzdEZyb21OYW1lKHN1aXRlLCBu
YW1lKQoreworICAgIHJldHVybiBzdWl0ZS50ZXN0cy5maW5kKGZ1bmN0aW9uKHRlc3QpIHsgcmV0
dXJuIHRlc3QubmFtZSA9PSBuYW1lOyB9KTsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRlci5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGI2NmU2M2IuLjAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3J1bm5lci9hbmltb21ldGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0
IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIHVzZXItc2NhbGFibGU9bm8iPgotICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzIj4KLSAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3Rlc3RzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvYW5pbW9tZXRlci5qcyIgZGVmZXI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9kMy5taW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvZ3JhcGguanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0gICAgPG1haW4+Ci0gICAg
PGRpdiBjbGFzcz0ic3BhY2VyIj48L2Rpdj4KLQotICAgIDxzZWN0aW9uIGlkPSJob21lIiBjbGFz
cz0ic2VsZWN0ZWQiPgotICAgICAgICA8aGVhZGVyPgotICAgICAgICAgICAgPGgxPkFuaW1vbWV0
ZXI8L2gxPgotICAgICAgICA8L2hlYWRlcj4KLSAgICAgICAgPGRpdiBpZD0ic3VpdGVzIj4KLSAg
ICAgICAgICAgIDxoMj5TdWl0ZXM6PC9oMj4KLSAgICAgICAgICAgIDx1bCBjbGFzcz0idHJlZSI+
PC91bD4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgaWQ9Im9wdGlvbnMiPgotICAgICAg
ICAgICAgPGgyPk9wdGlvbnM6PC9oMj4KLSAgICAgICAgICAgIDxmb3JtIG5hbWU9ImJlbmNobWFy
ay1vcHRpb25zIj4KLSAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgIDxsaT4KLSAgICAgICAg
ICAgICAgICA8bGFiZWw+VGVzdCBsZW5ndGg6IDxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJ0ZXN0
LWludGVydmFsIiB2YWx1ZT0iMTAiPiBzZWNvbmRzIGVhY2g8L2xhYmVsPgotICAgICAgICAgICAg
PC9saT4KLSAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICA8aDM+RGlzcGxheTo8L2gz
PgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48
aW5wdXQgbmFtZT0iZGlzcGxheSIgdHlwZT0icmFkaW8iIHZhbHVlPSJtaW5pbWFsIiBjaGVja2Vk
PiBNaW5pbWFsPC9sYWJlbD48L2xpPgotICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxp
bnB1dCBuYW1lPSJkaXNwbGF5IiB0eXBlPSJyYWRpbyIgdmFsdWU9InByb2dyZXNzLWJhciIgY2hl
Y2tlZD4gUHJvZ3Jlc3MgYmFyPC9sYWJlbD48L2xpPgotICAgICAgICAgICAgICAgICAgICA8bGk+
PGxhYmVsPjxpbnB1dCBuYW1lPSJkaXNwbGF5IiB0eXBlPSJyYWRpbyIgdmFsdWU9InN0YXRpc3Rp
Y3MtdGFibGUiPiBTdGF0aXN0aWNzIHRhYmxlPC9sYWJlbD48L2xpPgotICAgICAgICAgICAgICAg
IDwvdWw+Ci0gICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgPGxpPgotICAgICAgICAgICAg
ICAgIDxoMz5BZGp1c3RpbmcgdGhlIHRlc3QgY29tcGxleGl0eTo8L2gzPgotICAgICAgICAgICAg
ICAgIDx1bD4KLSAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFtZT0iYWRq
dXN0bWVudCIgdHlwZT0icmFkaW8iIHZhbHVlPSJmaXhlZCI+IEtlZXAgY29uc3RhbnQ8L2xhYmVs
PjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0IG5hbWU9ImFkanVz
dG1lbnQiIHR5cGU9InJhZGlvIiB2YWx1ZT0iZml4ZWQtYWZ0ZXItd2FybXVwIj4gS2VlcCBjb25z
dGFudCBhZnRlciB3YXJtdXAgdG8gdGFyZ2V0IEZQUzwvbGFiZWw+PC9saT4KLSAgICAgICAgICAg
ICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFtZT0iYWRqdXN0bWVudCIgdHlwZT0icmFkaW8i
IHZhbHVlPSJhZGFwdGl2ZSIgY2hlY2tlZD4gTWFpbnRhaW4gdGFyZ2V0IEZQUzwvbGFiZWw+PC9s
aT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAg
IDxsaT4KLSAgICAgICAgICAgICAgICA8bGFiZWw+VGFyZ2V0IGZyYW1lIHJhdGU6IDxpbnB1dCB0
eXBlPSJudW1iZXIiIGlkPSJmcmFtZS1yYXRlIiB2YWx1ZT0iNTAiPiBGUFM8L2xhYmVsPgotICAg
ICAgICAgICAgPC9saT4KLSAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICA8bGFiZWw+
PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZXN0aW1hdGVkLWZyYW1lLXJhdGUiIGNoZWNrZWQ+
IEZpbHRlciBmcmFtZSByYXRlIGNhbGN1bGF0aW9uPC9sYWJlbD4KLSAgICAgICAgICAgIDwvbGk+
Ci0gICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgPC9mb3JtPgotICAgICAgICA8L2Rpdj4K
LSAgICAgICAgPGZvb3Rlcj4KLSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRv
biIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zdGFydFRlc3QoKSI+U3RhcnQgVGVzdDwv
YnV0dG9uPgotICAgICAgICA8L2Zvb3Rlcj4KLSAgICA8L3NlY3Rpb24+Ci0gICAgPHNlY3Rpb24g
aWQ9InJ1bm5pbmciPgotICAgICAgICA8ZGl2IGlkPSJydW5uaW5nLXRlc3QiPjwvZGl2PgotICAg
ICAgICA8ZGl2IGlkPSJwcm9ncmVzcyI+Ci0gICAgICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcy1j
b21wbGV0ZWQiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBpZD0icmVjb3Jk
Ij4KLSAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0icmVzdWx0cy10YWJsZSI+PC90YWJsZT4KLSAg
ICAgICAgPC9kaXY+Ci0gICAgPC9zZWN0aW9uPgotICAgIDxzZWN0aW9uIGlkPSJyZXN1bHRzIj4K
LSAgICAgICAgPGhlYWRlcj4KLSAgICAgICAgICAgIDxoMT5SZXN1bHRzOjwvaDE+Ci0gICAgICAg
IDwvaGVhZGVyPgotICAgICAgICA8ZGF0YT4KLSAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0icmVz
dWx0cy10YWJsZSI+PC90YWJsZT4KLSAgICAgICAgPC9kYXRhPgotICAgICAgICA8Zm9vdGVyPgot
ICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1h
cmtDb250cm9sbGVyLnNlbGVjdFJlc3VsdHMoKSI+U2VsZWN0PC9idXR0b24+Ci0gICAgICAgICAg
ICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xs
ZXIuc2hvd0pTT04oKSI+SlNPTjwvYnV0dG9uPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0i
bGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0VGVzdCgpIj5U
ZXN0IEFnYWluPC9idXR0b24+Ci0gICAgICAgIDwvZm9vdGVyPgotICAgIDwvc2VjdGlvbj4KLSAg
ICA8c2VjdGlvbiBpZD0ianNvbiI+Ci0gICAgICAgIDxoZWFkZXI+Ci0gICAgICAgICAgICA8aDE+
SlNPTjo8L2gxPgotICAgICAgICA8L2hlYWRlcj4KLSAgICAgICAgPGRhdGE+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJyZXN1bHRzLWpzb24iIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+
Ci0gICAgICAgIDwvZGF0YT4KLSAgICAgICAgPGZvb3Rlcj4KLSAgICAgICAgICAgIDxidXR0b24g
Y2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zZWxlY3RK
U09OKCdqc29uJykiPlNlbGVjdDwvYnV0dG9uPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0i
bGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNob3dSZXN1bHRzKCki
PlJlc3VsdHM8L2J1dHRvbj4KLSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRv
biIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zdGFydFRlc3QoKSI+VGVzdCBBZ2Fpbjwv
YnV0dG9uPgotICAgICAgICA8L2Zvb3Rlcj4KLSAgICA8L3NlY3Rpb24+Ci0gICAgPHNlY3Rpb24g
aWQ9InRlc3QtanNvbiI+Ci0gICAgICAgIDxoZWFkZXI+Ci0gICAgICAgICAgICA8aDE+SlNPTjo8
L2gxPgotICAgICAgICA8L2hlYWRlcj4KLSAgICAgICAgPGRhdGE+Ci0gICAgICAgICAgICA8ZGl2
IGNsYXNzPSJyZXN1bHRzLWpzb24iIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Ci0gICAg
ICAgIDwvZGF0YT4KLSAgICAgICAgPGZvb3Rlcj4KLSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9
ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zZWxlY3RKU09OKCd0
ZXN0LWpzb24nKSI+U2VsZWN0PC9idXR0b24+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJs
YXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMoKSI+
UmVzdWx0czwvYnV0dG9uPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9u
IiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0VGVzdCgpIj5UZXN0IEFnYWluPC9i
dXR0b24+Ci0gICAgICAgIDwvZm9vdGVyPgotICAgIDwvc2VjdGlvbj4KLSAgICA8c2VjdGlvbiBp
ZD0idGVzdC1ncmFwaCI+Ci0gICAgICAgIDxoZWFkZXI+Ci0gICAgICAgICAgICA8aDE+R3JhcGg6
PC9oMT4KLSAgICAgICAgPC9oZWFkZXI+Ci0gICAgICAgIDxkYXRhPjwvZGF0YT4KLSAgICAgICAg
PGZvb3Rlcj4KLSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGlj
az0iYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVzdWx0cygpIj5SZXN1bHRzPC9idXR0b24+Ci0g
ICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFy
a0NvbnRyb2xsZXIuc3RhcnRUZXN0KCkiPlRlc3QgQWdhaW48L2J1dHRvbj4KLSAgICAgICAgPC9m
b290ZXI+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPGRpdiBjbGFzcz0ic3BhY2VyIj48L2Rpdj4K
LSAgICA8L21haW4+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGI3NmI4Li4wMDAwMDAwCi0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzCisrKyAv
ZGV2L251bGwKQEAgLTEsNTk5ICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTCBhbmQgQm9keSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLwotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLWh0bWwsYm9keSB7
Ci0gICAgaGVpZ2h0OiAxMDAlOwotICAgIG1hcmdpbjogMHB4OwotICAgIHBhZGRpbmc6IDBweDsK
LX0KLQotYm9keSB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDk2LCA5NiwgOTYpOwotICAg
IGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Ci0gICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2Eg
TmV1ZSIsIEhlbHZldGljYSwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKLX0KLQotLyogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9ucyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAqLwotCi1idXR0b24gewotICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgICAtd2Vi
a2l0LXVzZXItc2VsZWN0OiBub25lOwotICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50
OwotfQotCi1idXR0b24ubGFyZ2UtYnV0dG9uIHsKLSAgICBib3JkZXI6IDNweCBzb2xpZCByZ2Io
MjM1LCAyMzUsIDIzNSk7Ci0gICAgYm9yZGVyLXJhZGl1czogMTBweDsKLSAgICBtaW4td2lkdGg6
IDIwMHB4OwotICAgIHBhZGRpbmc6IC41ZW0gMmVtOwotICAgIG1hcmdpbjogMCAxZW07Ci0gICAg
Zm9udC1zaXplOiAyNXB4OwotICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Ci19Ci0KLWJ1
dHRvbi5sYXJnZS1idXR0b246YWN0aXZlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM1
LCAyMzUsIDIzNSk7Ci0gICAgY29sb3I6IHJnYig0NiwgNTEsIDU1KTsKLSAgICBib3JkZXItY29s
b3I6IHJnYigyMzUsIDIzNSwgMjM1KSAhaW1wb3J0YW50OwotfQotCi1idXR0b24ubGFyZ2UtYnV0
dG9uOmRpc2FibGVkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTYsIDk2LCA5Nik7Ci0g
ICAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKLX0KLQotYnV0dG9uLnNtYWxsLWJ1dHRvbiB7
Ci0gICAgYm9yZGVyOiAxcHggc29saWQgRGFya0N5YW47Ci0gICAgYm9yZGVyLXJhZGl1czogMnB4
OwotICAgIHBhZGRpbmc6IDFweCA0cHg7Ci0gICAgbWFyZ2luOiAwIDRweDsKLSAgICBmb250LXNp
emU6IDlweDsKLSAgICBjb2xvcjogYmxhY2s7Ci19Ci0KLWJ1dHRvbi5zbWFsbC1idXR0b246YWN0
aXZlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBEYXJrQ3lhbjsKLSAgICBjb2xvcjogcmdiKDQ2
LCA1MSwgNTUpOwotICAgIGJvcmRlci1jb2xvcjogRGFya0N5YW4gIWltcG9ydGFudDsKLX0KLQot
QG1lZGlhIHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDQxNHB4KSB7Ci0gICAgYnV0dG9u
LmxhcmdlLWJ1dHRvbiB7Ci0gICAgICAgIG1hcmdpbjogMWVtIDA7Ci0gICAgfQotfQotCi0vKiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJl
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tICovCi0KLS50cmVlIHsKLSAgICBwYWRkaW5nOiAwOwotICAgIGxpc3Qtc3R5bGUt
dHlwZTogbm9uZTsKLX0KLQotLnRyZWUgLmV4cGFuZC1idXR0b24gewotICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKLSAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwotfQotCi0udHJlZSAuZXhwYW5k
LWJ1dHRvbiB+IHVsIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0udHJlZSAuZXhwYW5kLWJ1
dHRvbjpjaGVja2VkIH4gdWwgewotICAgIGRpc3BsYXk6IGJsb2NrOwotfQotCi0udHJlZSB1bCB7
Ci0gICAgbGlzdC1zdHlsZS10eXBlOm5vbmU7Ci19Ci0KLS50cmVlIGxpIHsKLSAgICBwb3NpdGlv
bjogcmVsYXRpdmU7Ci0gICAgcGFkZGluZzogMCAwIDFlbSAxZW07Ci19Ci0KLS50cmVlIHVsIGxp
IHsKLSAgICBsaXN0LXN0eWxlOm5vbmU7Ci0gICAgcGFkZGluZzogMWVtIDAgMCAwZW07Ci19Ci0K
LS50cmVlID4gbGk6bGFzdC1jaGlsZCB7Ci0gICAgcGFkZGluZy1ib3R0b206IDA7Ci19Ci0KLS50
cmVlLWxhYmVsIHsKLSAgcG9zaXRpb246IHJlbGF0aXZlOwotICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7Ci19Ci0KLWxhYmVsLnRyZWUtbGFiZWwgewotICAgIGN1cnNvcjogcG9pbnRlcjsKLX0KLQot
LnRyZWUgPiBsaSA+IGxhYmVsLnRyZWUtbGFiZWw6YmVmb3JlIHsKLSAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Ci0gICAgei1pbmRleDogMTsKLSAgICBmbG9hdDogbGVmdDsKLSAgICBtYXJnaW46IDAg
MCAwIC0yZW07Ci0gICAgd2lkdGg6IDFlbTsKLSAgICBoZWlnaHQ6IDFlbTsKLSAgICBjb250ZW50
OiAnXDI1QkEnOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBsaW5lLWhlaWdodDogMi41
ZW07Ci0gICAgZm9udC1zaXplOiAuNWVtOwotfQotCi0udHJlZSA+IGxpID4gOmNoZWNrZWQgfiBs
YWJlbC50cmVlLWxhYmVsOmJlZm9yZSB7Ci0gICAgY29udGVudDogJ1wyNUJDJzsKLX0KLQotQG1l
ZGlhIHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDQxNHB4KSB7Ci0gICAgLnRyZWUgewot
ICAgICAgICBwYWRkaW5nLWxlZnQ6IDFlbTsKLSAgICB9Ci0gICAgLnRyZWUgPiBsaSA+IGxhYmVs
LnRyZWUtbGFiZWw6YmVmb3JlIHsKLSAgICAgICAgZm9udC1zaXplOiAxZW07Ci0gICAgICAgIG1h
cmdpbi1sZWZ0OiAtMS43NWVtOwotICAgICAgICBsaW5lLWhlaWdodDogMWVtOwotICAgIH0KLX0K
LQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVzdWx0cyBUYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAqLwotCi10YWJsZS5yZXN1bHRzLXRhYmxlIHsKLSAgICB3aWR0aDog
MTAwJTsKLSAgICBib3JkZXI6IDJweCBzb2xpZCBEYXJrQ3lhbjsKLSAgICBib3JkZXItY29sbGFw
c2U6IGNvbGxhcHNlOwotfQotCi0ucmVzdWx0cy10YWJsZSB0aCwKLS5yZXN1bHRzLXRhYmxlIHRk
IHsKLSAgICBmb250LXNpemU6IDExcHg7Ci0gICAgcGFkZGluZzogM3B4IDRweCAycHggNHB4Owot
fQotCi0ucmVzdWx0cy10YWJsZSB0aCB7Ci0gICAgYmFja2dyb3VuZDogRGFya0N5YW47Ci0gICAg
Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBMaWdodEN5YW47Ci0gICAgYm9yZGVyLXJpZ2h0OiAxcHgg
c29saWQgTGlnaHRDeWFuOwotICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBMaWdodEN5YW47Ci19
Ci0KLS5yZXN1bHRzLXRhYmxlIHRkIHsKLSAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKLSAgICBib3Jk
ZXItYm90dG9tOiBub25lOwotICAgIGJvcmRlci1sZWZ0OiBub25lOwotICAgIGJvcmRlci1yaWdo
dDogMXB4IHNvbGlkIERhcmtDeWFuOwotICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBEYXJrQ3lh
bjsKLSAgICBjb2xvcjogYmxhY2s7Ci19Ci0KLS5yZXN1bHRzLXRhYmxlIHRkLm5vaXN5LXJlc3Vs
dHMgewotICAgIGNvbG9yOiByZWQ7Ci19Ci0KLS5yZXN1bHRzLXRhYmxlIHRkLnN1aXRlcy1zZXBh
cmF0b3IgewotICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKLX0KLSAKLS8qIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdHMgSlNP
TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gKi8KLQotZGl2LnJlc3VsdHMtanNvbiB7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgpOwotICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUs
IDIzNSk7Ci0gICAgd2hpdGUtc3BhY2U6IHByZTsKLSAgICBmb250LXNpemU6IDEycHg7Ci19Ci0K
LS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1haW4gTGF5b3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gKi8KLQotbWFpbiB7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0
OiAxMDAlOwotICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwotICAgIGRpc3BsYXk6IC13ZWJraXQt
ZmxleDsKLSAgICBkaXNwbGF5OiBmbGV4OwotCi0gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsK
LSAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0gICAgLXdlYmtpdC1ib3gtYWxpZ246
IGNlbnRlcjsKLSAgICBhbGlnbi1pdGVtczogY2VudGVyOwotCi0gICAgLXdlYmtpdC1qdXN0aWZ5
LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Ci0gICAgLW1zLWZsZXgtcGFjazogZmxleC1zdGFydDsKLSAg
ICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Ci0KLSAgICAtd2Via2l0LWZsZXgtZmxvdzog
Y29sdW1uOwotICAgIGZsZXgtZmxvdzogY29sdW1uOwotfQotCi0uc3BhY2VyIHsKLSAgICAtd2Vi
a2l0LWZsZXg6IDEgMCAyMHB4OwotICAgIC1tcy1mbGV4OiAxIDAgMjBweDsKLSAgICBmbGV4OiAx
IDAgMjBweDsKLSAgICB3aWR0aDogMTBweDsKLX0KLQotc2VjdGlvbiB7Ci0gICAgd2lkdGg6IDgw
MHB4OwotICAgIGhlaWdodDogNjAwcHg7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICBwYWRkaW5n
OiAxMHB4OwotfQotCi0jaG9tZSB7Ci0gICAgbWluLWhlaWdodDogNjAwcHg7Ci0gICAgaGVpZ2h0
OiBhdXRvOwotfQotCi0uZGlzcGxheS1wcm9ncmVzcy1iYXIgc2VjdGlvbiwKLS5kaXNwbGF5LXN0
YXRpc3RpY3MtdGFibGUgc2VjdGlvbiB7Ci0gICAgYm9yZGVyOiA2cHggc29saWQgcmdiKDIzNSwg
MjM1LCAyMzUpOwotICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7Ci19Ci0KLXNlY3Rpb24uc2VsZWN0
ZWQgewotICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwotICAgIGRpc3BsYXk6IC13ZWJraXQtZmxl
eDsKLSAgICBkaXNwbGF5OiBmbGV4OwotfQotCi1zZWN0aW9uID4gaGVhZGVyLAotc2VjdGlvbiA+
IGZvb3RlciB7Ci0gICAgbWFyZ2luOiAxMHB4OwotICAgIHBhZGRpbmc6IDEwcHg7Ci0gICAgLXdl
YmtpdC1mbGV4OiAwIDEgMTAwJTsKLSAgICAtbXMtZmxleDogMCAxIDEwMCU7Ci0gICAgZmxleDog
MCAxIDEwMCU7Ci0gICAgbWF4LWhlaWdodDogMTUlOwotfQotCi1zZWN0aW9uID4gZm9vdGVyIHsK
LSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY2xlYXI6IGJvdGg7Ci0gICAgZGlzcGxheTog
LW1zLWZsZXhib3g7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwotICAgIGRpc3BsYXk6IGZs
ZXg7Ci0gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LWFsaWduLWl0ZW1z
OiBjZW50ZXI7Ci0gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKLSAgICBhbGlnbi1pdGVt
czogY2VudGVyOwotICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ci0gICAgLW1z
LWZsZXgtcGFjazogY2VudGVyOwotICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwotfQotCi1A
bWVkaWEgc2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0aDogMTgwMHB4KSB7Ci0gICAgc2VjdGlv
biB7Ci0gICAgICAgIHdpZHRoOiAxNjAwcHg7Ci0gICAgICAgIGhlaWdodDogODAwcHg7Ci0gICAg
fQotCi0gICAgI2hvbWUgewotICAgICAgICBtaW4taGVpZ2h0OiA4MDBweDsKLSAgICB9Ci19Ci0K
LUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0MTRweCkgewotICAgIC5zcGFj
ZXIgewotICAgICAgICAtd2Via2l0LWZsZXg6IDAgMCAwOwotICAgICAgICAtbXMtZmxleDogMCAw
IDA7Ci0gICAgICAgIGZsZXg6IDAgMCAwOwotICAgIH0KLQotICAgIHNlY3Rpb24gewotICAgICAg
ICBib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgICAgICB3aWR0aDogMTAwJTsKLSAgICAgICAg
aGVpZ2h0OiAxMDAlOwotICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwotICAgICAgICBwYWRk
aW5nOiAwIDVweDsKLSAgICB9Ci0KLSAgICAjaG9tZSB7Ci0gICAgICAgIG1pbi1oZWlnaHQ6IDEw
MCU7Ci0gICAgfQotCi0gICAgLmRpc3BsYXktcHJvZ3Jlc3MtYmFyIHNlY3Rpb24sCi0gICAgLmRp
c3BsYXktc3RhdGlzdGljcy10YWJsZSBzZWN0aW9uIHsKLSAgICAgICAgYm9yZGVyOiAwOwotICAg
IH0KLQotICAgIHNlY3Rpb24gPiBmb290ZXIgewotICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0
aW9uOiBjb2x1bW47Ci0gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwotICAgICAg
ICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwotICAgICAgICBtYXgtaGVpZ2h0OiBpbml0aWFsOwot
ICAgIH0KLX0KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSG9tZSBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICovCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaG9tZSB7Ci0gICAgLXdlYmtpdC1mbGV4
LWRpcmVjdGlvbjogcm93OwotICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwotICAgIGZsZXgt
ZGlyZWN0aW9uOiByb3c7Ci0gICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7Ci0gICAgLW1zLWZs
ZXgtd3JhcDogd3JhcDsKLSAgICBmbGV4LXdyYXA6IHdyYXA7Ci0gICAgLXdlYmtpdC1hbGlnbi1j
b250ZW50OiBjZW50ZXI7Ci0gICAgLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXI7Ci0gICAgYWxp
Z24tY29udGVudDogZmxleC1zdGFydDsKLX0KLQotI2hvbWUgaDIgewotICAgIGZvbnQtc2l6ZTog
MS4yZW07Ci19Ci0KLSNzdWl0ZXMsCi0jb3B0aW9ucyB7Ci0gICAgcGFkZGluZzogMTBweDsKLSAg
ICBtYXJnaW46IDEwcHg7Ci19Ci0KLSNzdWl0ZXMgewotICAgIHBhZGRpbmctbGVmdDogNDBweDsK
LSAgICAtd2Via2l0LWZsZXg6IDAgMSA0MCU7Ci0gICAgLW1zLWZsZXg6IDAgMSA0MCU7Ci0gICAg
ZmxleDogMCAxIDQwJTsKLX0KLQotI29wdGlvbnMgewotICAgIC13ZWJraXQtZmxleDogMSAxIGF1
dG87Ci0gICAgLW1zLWZsZXg6IDEgMSBhdXRvOwotICAgIGZsZXg6IDEgMSBhdXRvOwotfQotCi0j
aG9tZSA+IGhlYWRlciA+IGgxIHsKLSAgICBtYXJnaW46IDAgYXV0bzsKLSAgICB3aWR0aDogNzAl
OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotI2hvbWUgaW5wdXRbdHlwZT0ibnVtYmVy
Il0gewotICAgIHdpZHRoOiA1MHB4OwotfQotIAotI3N1aXRlcyBpbnB1dFt0eXBlPSJudW1iZXIi
XSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICBmbG9hdDogcmlnaHQ7Ci19Ci0KLSNzdWl0ZXMg
aW5wdXRbdHlwZT0ibnVtYmVyIl0uc2VsZWN0ZWQgewotICAgIGRpc3BsYXk6IGlubGluZTsKLSAg
ICBtYXJnaW46IDA7Ci19Ci0KLSNzdWl0ZXMgdWwgdWwgewotICAgIGZvbnQtc2l6ZTogLjhlbTsK
LSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMCAwIDAgMWVtOwotfQotCi0jb3B0aW9ucyB1
bCB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9u
ZTsKLX0KLQotI29wdGlvbnMgaDMgewotICAgIGZvbnQtc2l6ZTogMWVtOwotICAgIGZvbnQtd2Vp
Z2h0OiBpbmhlcml0OwotICAgIG1hcmdpbjogMCAwIC4zZW0gMDsKLSAgICBwYWRkaW5nOiAwOwot
fQotCi0jb3B0aW9ucyA+IGZvcm0gPiB1bCA+IGxpIHsKLSAgICBwYWRkaW5nOiAwIDAgMWVtIDA7
Ci19Ci0KLSNvcHRpb25zIHVsIHVsIHsKLSAgICBwYWRkaW5nOiAwOwotfQotCi0jb3B0aW9ucyBs
aSB7Ci0gICAgcGFkZGluZzogLjFlbSAwOwotfQotCi1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LWRl
dmljZS13aWR0aDogNDE0cHgpIHsKLSAgICAjc3VpdGVzLAotICAgICNvcHRpb25zIHsKLSAgICAg
ICAgcGFkZGluZzogMCA1cHg7Ci0gICAgICAgIG1hcmdpbjogMDsKLSAgICB9Ci0gICAgI3N1aXRl
cyB7Ci0gICAgICAgIC13ZWJraXQtZmxleDogMCAxIDEwMCU7Ci0gICAgICAgIC1tcy1mbGV4OiAw
IDEgMTAwJTsKLSAgICAgICAgZmxleDogMCAxIDEwMCU7Ci0gICAgfQotfQotCi0vKiAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIFNlY3Rp
b24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICovCi0KLSNydW5uaW5nIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgLW1zLWZs
ZXgtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0gICAg
LXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKLSAgICBhbGlnbi1pdGVtczogY2VudGVyOwotICAg
IC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ci0gICAgLW1zLWZsZXgtcGFjazogY2Vu
dGVyOwotICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwotfQotCi0jcnVubmluZy10ZXN0IHsK
LSAgICB3aWR0aDogMTAwJTsKLSAgICBoZWlnaHQ6IDEwMCU7Ci19Ci0KLSNydW5uaW5nLXRlc3Qg
PiBpZnJhbWUgewotICAgIHdpZHRoOiA4MDBweDsKLSAgICBoZWlnaHQ6IDYwMHB4OwotICAgIGJv
cmRlcjogMHB4IG5vbmU7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLX0KLQotI3Byb2dyZXNzLCAj
cmVjb3JkIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0uZGlzcGxheS1wcm9ncmVzcy1iYXIg
I3Byb2dyZXNzLAotLmRpc3BsYXktc3RhdGlzdGljcy10YWJsZSAjcHJvZ3Jlc3MgewotICAgIGRp
c3BsYXk6IGJsb2NrOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBib3R0b206IC02cHg7
Ci0gICAgbGVmdDogNjBweDsKLSAgICByaWdodDogNjBweDsKLSAgICBoZWlnaHQ6IDZweDsKLSAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTI4LCAxMjgsIDEyOCk7Ci0gICAgYm9yZGVyLWxlZnQ6
IDZweCBzb2xpZCByZ2IoNDYsIDUxLCA1NSk7Ci0gICAgYm9yZGVyLXJpZ2h0OiA2cHggc29saWQg
cmdiKDQ2LCA1MSwgNTUpOwotfQotCi0uZGlzcGxheS1wcm9ncmVzcy1iYXIgI3Byb2dyZXNzLWNv
bXBsZXRlZCwKLS5kaXNwbGF5LXN0YXRpc3RpY3MtdGFibGUgI3Byb2dyZXNzLWNvbXBsZXRlZCB7
Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICBsZWZ0OiAwOwotICAg
IGhlaWdodDogNnB4OwotICAgIHdpZHRoOiAwOwotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigy
MzUsIDIzNSwgMjM1KTsKLX0KLQotLmRpc3BsYXktcHJvZ3Jlc3MtYmFyICNyZWNvcmQsCi0uZGlz
cGxheS1zdGF0aXN0aWNzLXRhYmxlICNyZWNvcmQgewotICAgIGRpc3BsYXk6IGJsb2NrOwotICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBib3R0b206IC05NXB4OwotICAgIGxlZnQ6IDBweDsK
LSAgICByaWdodDogMHB4OwotICAgIHBhZGRpbmc6IDE2cHg7Ci19Ci0KLUBtZWRpYSBzY3JlZW4g
YW5kIChtaW4tZGV2aWNlLXdpZHRoOiAxODAwcHgpIHsKLSAgICAjcnVubmluZy10ZXN0ID4gaWZy
YW1lIHsKLSAgICAgICAgd2lkdGg6IDE2MDBweDsKLSAgICAgICAgaGVpZ2h0OiA4MDBweDsKLSAg
ICB9Ci19Ci0KLUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0MTRweCkgewot
ICAgICNydW5uaW5nIHsKLSAgICAgICAgcGFkZGluZzogMDsKLSAgICB9Ci0KLSAgICAjcnVubmlu
Zy10ZXN0IHsKLSAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICB9Ci0KLSAgICAjcnVubmlu
Zy10ZXN0ID4gaWZyYW1lIHsKLSAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSk7Ci0gICAgICAgIGhl
aWdodDogY2FsYygxMDAlKTsKLSAgICB9Ci19Ci0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyog
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRzIFNlY3Rpb24gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLXNlY3Rpb24j
cmVzdWx0cywKLXNlY3Rpb24janNvbiwKLXNlY3Rpb24jdGVzdC1qc29uLAotc2VjdGlvbiN0ZXN0
LWdyYXBoIHsKLSAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3c7Ci0gICAgLW1zLWZsZXgt
ZGlyZWN0aW9uOiByb3c7Ci0gICAgZmxleC1kaXJlY3Rpb246IHJvdzsKLSAgICAtd2Via2l0LWZs
ZXgtd3JhcDogd3JhcDsKLSAgICAtbXMtZmxleC13cmFwOiB3cmFwOwotICAgIGZsZXgtd3JhcDog
d3JhcDsKLSAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKLSAgICAt
bXMtZmxleC1wYWNrOiBqdXN0aWZ5OwotICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vl
bjsKLSAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47Ci0gICAgLW1zLWZs
ZXgtbGluZS1wYWNrOiBqdXN0aWZ5OwotICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47
Ci0gICAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDsKLSAgICAtbXMtZmxleC1hbGln
bjogc3RhcnQ7Ci0gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7Ci19Ci0KLXNlY3Rpb24jcmVz
dWx0cyA+IGRhdGEsCi1zZWN0aW9uI2pzb24gPiBkYXRhLAotc2VjdGlvbiN0ZXN0LWpzb24gPiBk
YXRhLAotc2VjdGlvbiN0ZXN0LWdyYXBoID4gZGF0YSB7Ci0gICAgb3ZlcmZsb3cteTogc2Nyb2xs
OwotICAgIGhlaWdodDogNzAlOwotICAgIC13ZWJraXQtZmxleDogMCAxIDEwMCU7Ci0gICAgLW1z
LWZsZXg6IDAgMSAxMDAlOwotICAgIGZsZXg6IDAgMSAxMDAlOwotICAgIC13ZWJraXQtYWxpZ24t
c2VsZjogc3RyZXRjaDsKLSAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBzdHJldGNoOwotICAgIGFs
aWduLXNlbGY6IHN0cmV0Y2g7Ci19Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdyYXBoIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLwotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotc2VjdGlvbiN0ZXN0
LWdyYXBoID4gZGF0YSB7Ci0gICAgZm9udDogMTBweCBzYW5zLXNlcmlmOwotICAgIGNvbG9yOiBy
Z2IoMjM1LCAyMzUsIDIzNSk7Ci19Ci0KLXNlY3Rpb24jdGVzdC1ncmFwaCA+IGRhdGEgPiBzdmcg
ewotICAgIGZpbGw6IG5vbmU7Ci19Ci0KLS5heGlzIHBhdGgsCi0uYXhpcyBsaW5lIHsKLSAgICBm
aWxsOiBub25lOwotICAgIHN0cm9rZTogIzk5OTk5OTsKLSAgICBzaGFwZS1yZW5kZXJpbmc6IGNy
aXNwRWRnZXM7Ci19Ci0KLS5sZWZ0LXNhbXBsZXMgewotICAgIHN0cm9rZTogIzdBREQ0OTsKLSAg
ICBzdHJva2Utd2lkdGg6IDEuNXB4OwotfQotCi0ucmlnaHQtc2FtcGxlcyB7Ci0gICAgc3Ryb2tl
OiAjRkE0OTI1OwotICAgIHN0cm9rZS13aWR0aDogMS41cHg7Ci19Ci0KLS5zYW1wbGUtdGltZSB7
Ci0gICAgc3Ryb2tlOiAjNTQ5M0Q2OwotfQotCi0ubGVmdC1tZWFuIHsKLSAgICBzdHJva2U6ICM3
QURENDk7Ci0gICAgb3BhY2l0eTogLjg7Ci19Ci0KLS5yaWdodC1tZWFuIHsKLSAgICBzdHJva2U6
ICNGQTQ5MjU7Ci0gICAgb3BhY2l0eTogLjg7Ci19Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICov
Ci0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04gU2VjdGlvbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLwotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotc2VjdGlv
biNqc29uID4gZGF0YSwKLXNlY3Rpb24jdGVzdC1qc29uID4gZGF0YSB7Ci0gICAgYm9yZGVyOiAx
cHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUpOwotICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7
Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291
cmNlcy9hbmltb21ldGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9y
ZXNvdXJjZXMvYW5pbW9tZXRlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRj
NDUxMC4uMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jl
c291cmNlcy9hbmltb21ldGVyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDk3ICswLDAgQEAKLXdp
bmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQgPSB7Ci0gICAgaXRlcmF0aW9uQ291bnQ6IDEsCi0g
ICAgdGVzdHNDb3VudDogbnVsbCwKLSAgICBwcm9ncmVzc0JhcjogbnVsbCwKLSAgICByZWNvcmRU
YWJsZTogbnVsbCwKLSAgICBvcHRpb25zOiBudWxsLAotICAgIHNjb3JlOiAwLAotICAgIF9yZXN1
bHRzRGFzaGJvYXJkOiBudWxsLAotICAgIF9yZXN1bHRzVGFibGU6IG51bGwsCi0gICAgCi0gICAg
aW5pdGlhbGl6ZTogZnVuY3Rpb24oc3VpdGVzLCBvcHRpb25zKQotICAgIHsKLSAgICAgICAgdGhp
cy50ZXN0c0NvdW50ID0gdGhpcy5pdGVyYXRpb25Db3VudCAqIHN1aXRlcy5yZWR1Y2UoZnVuY3Rp
b24gKGNvdW50LCBzdWl0ZSkgeyByZXR1cm4gY291bnQgKyBzdWl0ZS50ZXN0cy5sZW5ndGg7IH0s
IDApOwotICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwotICAgIH0sCi0KLSAgICB3aWxs
QWRkVGVzdEZyYW1lOiBmdW5jdGlvbiAoZnJhbWUpCi0gICAgewotICAgICAgICB2YXIgbWFpbiA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1haW4iKTsKLSAgICAgICAgdmFyIHN0eWxlID0gZ2V0
Q29tcHV0ZWRTdHlsZShtYWluKTsKLSAgICAgICAgZnJhbWUuc3R5bGUubGVmdCA9IG1haW4ub2Zm
c2V0TGVmdCArIHBhcnNlSW50KHN0eWxlLmJvcmRlckxlZnRXaWR0aCkgKyBwYXJzZUludChzdHls
ZS5wYWRkaW5nTGVmdCkgKyAicHgiOwotICAgICAgICBmcmFtZS5zdHlsZS50b3AgPSBtYWluLm9m
ZnNldFRvcCArIHBhcnNlSW50KHN0eWxlLmJvcmRlclRvcFdpZHRoKSArIHBhcnNlSW50KHN0eWxl
LnBhZGRpbmdUb3ApICsgInB4IjsKLSAgICB9LAotICAgIAotICAgIGRpZFJ1blRlc3Q6IGZ1bmN0
aW9uICgpCi0gICAgewotICAgICAgICB0aGlzLnByb2dyZXNzQmFyLmluY1JhbmdlKCk7Ci0gICAg
fSwKLSAgICAKLSAgICB3aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbjogZnVuY3Rpb24gKCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3Jlc3VsdHNEYXNoYm9hcmQgPSBuZXcgUmVzdWx0c0Rhc2hib2FyZCgp
OwotICAgICAgICB0aGlzLl9yZXN1bHRzVGFibGUgPSBuZXcgUmVzdWx0c1RhYmxlKGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoInNlY3Rpb24jcmVzdWx0cyA+IGRhdGEgPiB0YWJsZSIpLCBIZWFkZXJz
KTsKLSAgICAgICAgCi0gICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIgPSBuZXcgUHJvZ3Jlc3NCYXIo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2dyZXNzLWNvbXBsZXRlZCIpLCB0aGlzLnRlc3Rz
Q291bnQpOwotICAgICAgICB0aGlzLnJlY29yZFRhYmxlID0gbmV3IFJlc3VsdHNUYWJsZShkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCJzZWN0aW9uI3J1bm5pbmcgI3JlY29yZCA+IHRhYmxlIiksIEhl
YWRlcnMpOwotICAgIH0sCi0gICAgCi0gICAgZGlkUnVuU3VpdGVzOiBmdW5jdGlvbiAoc3VpdGVz
U2FtcGxlcnMpCi0gICAgewotICAgICAgICB0aGlzLl9yZXN1bHRzRGFzaGJvYXJkLnB1c2goc3Vp
dGVzU2FtcGxlcnMpOwotICAgIH0sCi0gICAgCi0gICAgZGlkRmluaXNoTGFzdEl0ZXJhdGlvbjog
ZnVuY3Rpb24gKCkKLSAgICB7Ci0gICAgICAgIHZhciBqc29uID0gdGhpcy5fcmVzdWx0c0Rhc2hi
b2FyZC50b0pTT04odHJ1ZSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMuc2NvcmUgPSBqc29uW1N0cmlu
Z3MuanNvbi5zY29yZV07Ci0gICAgICAgIHRoaXMuX3Jlc3VsdHNUYWJsZS5zaG93SXRlcmF0aW9u
cyhqc29uW1N0cmluZ3MuanNvbi5yZXN1bHRzLml0ZXJhdGlvbnNdLCB0aGlzLm9wdGlvbnMpOwot
ICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd0pTT04oImpzb24iLCBqc29uW1N0cmluZ3MuanNv
bi5yZXN1bHRzLml0ZXJhdGlvbnNdWzBdKTsKLSAgICAgICAgc3VpdGVzTWFuYWdlci51cGRhdGVM
b2NhbFN0b3JhZ2VGcm9tSlNPTihqc29uW1N0cmluZ3MuanNvbi5yZXN1bHRzLml0ZXJhdGlvbnNd
WzBdKTsKLSAgICAgICAgYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVzdWx0cygpOwotICAgIH0K
LX0KLQotd2luZG93LnNlY3Rpb25zTWFuYWdlciA9Ci17Ci0gICAgX3NlY3Rpb25IZWFkZXJIMUVs
ZW1lbnQ6IGZ1bmN0aW9uKHNlY3Rpb25JZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiMiICsgc2VjdGlvbklkZW50aWZpZXIgKyAiID4gaGVh
ZGVyID4gaDEiKTsKLSAgICB9LAotCi0gICAgX3NlY3Rpb25EYXRhRWxlbWVudDogZnVuY3Rpb24o
c2VjdGlvbklkZW50aWZpZXIpCi0gICAgewotICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiIyIgKyBzZWN0aW9uSWRlbnRpZmllciArICIgPiBkYXRhIik7Ci0gICAgfSwKLSAg
ICAKLSAgICBfc2VjdGlvbkRhdGFEaXZFbGVtZW50OiBmdW5jdGlvbihzZWN0aW9uSWRlbnRpZmll
cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjIiArIHNl
Y3Rpb25JZGVudGlmaWVyICsgIiA+ICBkYXRhID4gZGl2Iik7Ci0gICAgfSwKLSAgICAKLSAgICBz
aG93U2NvcmU6IGZ1bmN0aW9uKHNlY3Rpb25JZGVudGlmaWVyLCB0aXRsZSkKLSAgICB7Ci0gICAg
ICAgIHZhciBlbGVtZW50ID0gdGhpcy5fc2VjdGlvbkhlYWRlckgxRWxlbWVudChzZWN0aW9uSWRl
bnRpZmllcik7Ci0gICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0aXRsZSArICI6IjsKLQot
ICAgICAgICB2YXIgc2NvcmUgPSBiZW5jaG1hcmtSdW5uZXJDbGllbnQuc2NvcmUudG9GaXhlZCgy
KTsKLSAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCArPSAiIFsiICsgU3RyaW5ncy50ZXh0LnNj
b3JlICsgIiA9ICIgKyBzY29yZSArICJdIjsKLSAgICB9LAotICAgIAotICAgIHNob3dUZXN0TmFt
ZTogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIsIHRpdGxlLCB0ZXN0TmFtZSkKLSAgICB7Ci0g
ICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fc2VjdGlvbkhlYWRlckgxRWxlbWVudChzZWN0aW9u
SWRlbnRpZmllcik7Ci0gICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0aXRsZSArICI6IjsK
LQotICAgICAgICBpZiAoIXRlc3ROYW1lLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIAotICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ICs9ICIgWyIgKyBTdHJpbmdz
LnRleHQudGVzdE5hbWUgKyAiID0gIiArIHRlc3ROYW1lICsgIl0iOwotICAgIH0sCi0gICAgCi0g
ICAgc2hvd0pTT046IGZ1bmN0aW9uKHNlY3Rpb25JZGVudGlmaWVyLCBqc29uKQotICAgIHsKLSAg
ICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9zZWN0aW9uRGF0YURpdkVsZW1lbnQoc2VjdGlvbklk
ZW50aWZpZXIpOwotICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnko
anNvbiwgZnVuY3Rpb24oa2V5LCB2YWx1ZSkgeyAKLSAgICAgICAgICAgIGlmICh0eXBlb2YgdmFs
dWUgPT0gIm51bWJlciIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQoMik7
Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0sIDQpOwotICAgIH0sCi0gICAg
Ci0gICAgc2VsZWN0RGF0YTogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIpCi0gICAgewotICAg
ICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7Ci0gICAgICAgIHZh
ciBlbGVtZW50ID0gdGhpcy5fc2VjdGlvbkRhdGFFbGVtZW50KHNlY3Rpb25JZGVudGlmaWVyKTsK
LSAgICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKLSAgICAgICAgcmFu
Z2Uuc2VsZWN0Tm9kZShlbGVtZW50KTsKLSAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsgIAotICAgIH0sCi0gICAgCi0gICAgc2VsZWN0RGF0YUNvbnRlbnRzOiBm
dW5jdGlvbihzZWN0aW9uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9z
ZWN0aW9uRGF0YURpdkVsZW1lbnQoc2VjdGlvbklkZW50aWZpZXIpOwotICAgICAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwotICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29u
dGVudHMoZWxlbWVudCk7Ci0gICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShy
YW5nZSk7Ci0gICAgfSwKLSAgICAgICAgCi0gICAgc2hvd1NlY3Rpb246IGZ1bmN0aW9uKHNlY3Rp
b25JZGVudGlmaWVyLCBwdXNoU3RhdGUpCi0gICAgewotICAgICAgICB2YXIgY3VycmVudFNlY3Rp
b25FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2VjdGlvbi5zZWxlY3RlZCIpOwot
ICAgICAgICBjb25zb2xlLmFzc2VydChjdXJyZW50U2VjdGlvbkVsZW1lbnQpOwotCi0gICAgICAg
IHZhciBuZXdTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb25J
ZGVudGlmaWVyKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQobmV3U2VjdGlvbkVsZW1lbnQpOwot
Ci0gICAgICAgIGN1cnJlbnRTZWN0aW9uRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3Rl
ZCIpOwotICAgICAgICBuZXdTZWN0aW9uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIp
OwotCi0gICAgICAgIGlmIChwdXNoU3RhdGUpCi0gICAgICAgICAgICBoaXN0b3J5LnB1c2hTdGF0
ZSh7c2VjdGlvbjogc2VjdGlvbklkZW50aWZpZXJ9LCBkb2N1bWVudC50aXRsZSk7Ci0gICAgfSwK
LQotICAgIHNldHVwUnVubmluZ1NlY3Rpb25TdHlsZTogZnVuY3Rpb24ob3B0aW9ucykKLSAgICB7
Ci0gICAgICAgIGlmIChvcHRpb25zWyJkaXNwbGF5Il0gIT0gInN0YXRpc3RpY3MtdGFibGUiKQot
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlY29yZCIpLnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7Ci0gICAgfQotfQotCi13aW5kb3cub3B0aW9uc01hbmFnZXIgPQotewotICAg
IHZhbHVlRm9yT3B0aW9uOiBmdW5jdGlvbihuYW1lKQotICAgIHsKLSAgICAgICAgdmFyIGZvcm1F
bGVtZW50ID0gZG9jdW1lbnQuZm9ybXNbImJlbmNobWFyay1vcHRpb25zIl0uZWxlbWVudHNbbmFt
ZV07Ci0gICAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09ICJjaGVja2JveCIpCi0gICAgICAg
ICAgICByZXR1cm4gZm9ybUVsZW1lbnQuY2hlY2tlZDsKLSAgICAgICAgcmV0dXJuIGZvcm1FbGVt
ZW50LnZhbHVlOwotICAgIH0sCi0gICAgCi0gICAgdXBkYXRlVUlGcm9tTG9jYWxTdG9yYWdlOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgZm9ybUVsZW1lbnRzID0gZG9jdW1lbnQuZm9y
bXNbImJlbmNobWFyay1vcHRpb25zIl0uZWxlbWVudHM7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBmb3JtRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBmb3Jt
RWxlbWVudCA9IGZvcm1FbGVtZW50c1tpXTsKLSAgICAgICAgICAgIHZhciBuYW1lID0gZm9ybUVs
ZW1lbnQuaWQgfHwgZm9ybUVsZW1lbnQubmFtZTsKLSAgICAgICAgICAgIHZhciB0eXBlID0gZm9y
bUVsZW1lbnQudHlwZTsKLQotICAgICAgICAgICAgdmFyIHZhbHVlID0gbG9jYWxTdG9yYWdlLmdl
dEl0ZW0obmFtZSk7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlID09ICJudW1iZXIiKQotICAg
ICAgICAgICAgICAgIGZvcm1FbGVtZW50c1tuYW1lXS52YWx1ZSA9ICt2YWx1ZTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKHR5cGUgPT0gImNoZWNrYm94IikKLSAgICAgICAgICAgICAgICBmb3JtRWxl
bWVudHNbbmFtZV0uY2hlY2tlZCA9IHZhbHVlID09ICJ0cnVlIjsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKHR5cGUgPT0gInJhZGlvIikKLSAgICAgICAgICAgICAgICBmb3JtRWxlbWVudHNbbmFtZV0u
dmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICB1cGRhdGVMb2NhbFN0b3Jh
Z2VGcm9tVUk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBmb3JtRWxlbWVudHMgPSBk
b2N1bWVudC5mb3Jtc1siYmVuY2htYXJrLW9wdGlvbnMiXS5lbGVtZW50czsKLSAgICAgICAgdmFy
IG9wdGlvbnMgPSB7fTsgICAgICAgIAotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm9y
bUVsZW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgZm9ybUVsZW1lbnQgPSBm
b3JtRWxlbWVudHNbaV07Ci0gICAgICAgICAgICB2YXIgbmFtZSA9IGZvcm1FbGVtZW50LmlkIHx8
IGZvcm1FbGVtZW50Lm5hbWU7Ci0gICAgICAgICAgICB2YXIgdHlwZSA9IGZvcm1FbGVtZW50LnR5
cGU7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlID09ICJudW1iZXIiKQotICAgICAgICAgICAgICAg
IG9wdGlvbnNbbmFtZV0gPSBmb3JtRWxlbWVudC52YWx1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KHR5cGUgPT0gImNoZWNrYm94IikKLSAgICAgICAgICAgICAgICBvcHRpb25zW25hbWVdID0gZm9y
bUVsZW1lbnQuY2hlY2tlZDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInJhZGlvIikK
LSAgICAgICAgICAgICAgICBvcHRpb25zW25hbWVdID0gZm9ybUVsZW1lbnRzW25hbWVdLnZhbHVl
OwotICAgIAotICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgb3B0aW9uc1tu
YW1lXSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBvcHRpb25zOwotICAg
IH0KLX0KLQotd2luZG93LnN1aXRlc01hbmFnZXIgPQotewotICAgIF90cmVlRWxlbWVudDogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNz
dWl0ZXMgPiAudHJlZSIpOwotICAgIH0sCi0gICAgCi0gICAgX3N1aXRlc0VsZW1lbnRzOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgi
I3N1aXRlcyA+IHVsID4gbGkiKTsKLSAgICB9LAotICAgIAotICAgIF9jaGVja2JveEVsZW1lbnQ6
IGZ1bmN0aW9uKGVsZW1lbnQpCi0gICAgewotICAgICAgICByZXR1cm4gZWxlbWVudC5xdWVyeVNl
bGVjdG9yKCJpbnB1dFt0eXBlPSdjaGVja2JveCddOm5vdCguZXhwYW5kLWJ1dHRvbikiKTsKLSAg
ICB9LAotCi0gICAgX2VkaXRFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50KQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVsZW1lbnQucXVlcnlTZWxlY3RvcigiaW5wdXRbdHlwZT0nbnVtYmVyJ10iKTsK
LSAgICB9LAotCi0gICAgX2VkaXRzRWxlbWVudHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjc3VpdGVzIGlucHV0W3R5cGU9J251
bWJlciddIik7Ci0gICAgfSwKLSAgICAgICAgCi0gICAgX2xvY2FsU3RvcmFnZU5hbWVGb3JUZXN0
OiBmdW5jdGlvbihzdWl0ZU5hbWUsIHRlc3ROYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN1
aXRlTmFtZSArICIvIiArIHRlc3ROYW1lOwotICAgIH0sCi0KLSAgICBfdXBkYXRlU3VpdGVDaGVj
a2JveFN0YXRlOiBmdW5jdGlvbihzdWl0ZUNoZWNrYm94KQotICAgIHsKLSAgICAgICAgdmFyIG51
bWJlckVuYWJsZWRUZXN0cyA9IDA7Ci0gICAgICAgIHN1aXRlQ2hlY2tib3gudGVzdHNFbGVtZW50
cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RFbGVtZW50KSB7Ci0gICAgICAgICAgICB2YXIgdGVzdENo
ZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHRlc3RFbGVtZW50KTsKLSAgICAgICAgICAg
IGlmICh0ZXN0Q2hlY2tib3guY2hlY2tlZCkKLSAgICAgICAgICAgICAgICArK251bWJlckVuYWJs
ZWRUZXN0czsKLSAgICAgICAgfSwgdGhpcyk7Ci0gICAgICAgIHN1aXRlQ2hlY2tib3guY2hlY2tl
ZCA9IG51bWJlckVuYWJsZWRUZXN0cyA+IDA7Ci0gICAgICAgIHN1aXRlQ2hlY2tib3guaW5kZXRl
cm1pbmF0ZSA9IG51bWJlckVuYWJsZWRUZXN0cyA+IDAgJiYgbnVtYmVyRW5hYmxlZFRlc3RzIDwg
c3VpdGVDaGVja2JveC50ZXN0c0VsZW1lbnRzLmxlbmd0aDsKLSAgICB9LAotCi0gICAgX3VwZGF0
ZVN0YXJ0QnV0dG9uU3RhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBzdWl0ZXNF
bGVtZW50cyA9IHRoaXMuX3N1aXRlc0VsZW1lbnRzKCk7Ci0gICAgICAgIHZhciBzdGFydEJ1dHRv
biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNob21lID4gZm9vdGVyID4gYnV0dG9uIik7Ci0g
ICAgICAgIAotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1aXRlc0VsZW1lbnRzLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgc3VpdGVFbGVtZW50ID0gc3VpdGVzRWxlbWVudHNb
aV07Ci0gICAgICAgICAgICB2YXIgc3VpdGVDaGVja2JveCA9IHRoaXMuX2NoZWNrYm94RWxlbWVu
dChzdWl0ZUVsZW1lbnQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc3VpdGVDaGVj
a2JveC5jaGVja2VkKSB7Ci0gICAgICAgICAgICAgICAgc3RhcnRCdXR0b24uZGlzYWJsZWQgPSBm
YWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAKLSAgICAgICAgc3RhcnRCdXR0b24uZGlzYWJsZWQgPSB0cnVlOwotICAgIH0sCi0KLSAg
ICBfb25DaGFuZ2VTdWl0ZUNoZWNrYm94OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAg
IHZhciBzZWxlY3RlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkOwotICAgICAgICBldmVudC50YXJn
ZXQudGVzdHNFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RFbGVtZW50KSB7Ci0gICAgICAg
ICAgICB2YXIgdGVzdENoZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHRlc3RFbGVtZW50
KTsKLSAgICAgICAgICAgIHRlc3RDaGVja2JveC5jaGVja2VkID0gc2VsZWN0ZWQ7ICAgICAgICAK
LSAgICAgICAgfSwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXJ0QnV0dG9uU3RhdGUo
KTsKLSAgICB9LAotCi0gICAgX29uQ2hhbmdlVGVzdENoZWNrYm94OiBmdW5jdGlvbihldmVudCkK
LSAgICB7Ci0gICAgICAgIHZhciBzdWl0ZUNoZWNrYm94ID0gZXZlbnQudGFyZ2V0LnN1aXRlQ2hl
Y2tib3g7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVN1aXRlQ2hlY2tib3hTdGF0ZShzdWl0ZUNoZWNr
Ym94KTsKLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhcnRCdXR0b25TdGF0ZSgpOwotICAgIH0sCi0K
LSAgICBfY3JlYXRlU3VpdGVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc3VpdGUsIGlk
KQotICAgIHsKLSAgICAgICAgdmFyIHN1aXRlRWxlbWVudCA9IERvY3VtZW50RXh0ZW5zaW9uLmNy
ZWF0ZUVsZW1lbnQoImxpIiwge30sIHRyZWVFbGVtZW50KTsKLSAgICAgICAgdmFyIGV4cGFuZCA9
IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImlucHV0IiwgeyB0eXBlOiAiY2hlY2ti
b3giLCAgY2xhc3M6ICJleHBhbmQtYnV0dG9uIiwgaWQ6IGlkIH0sIHN1aXRlRWxlbWVudCk7Ci0g
ICAgICAgIHZhciBsYWJlbCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImxhYmVs
IiwgeyBjbGFzczogInRyZWUtbGFiZWwiLCBmb3I6IGlkIH0sIHN1aXRlRWxlbWVudCk7Ci0KLSAg
ICAgICAgdmFyIHN1aXRlQ2hlY2tib3ggPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50
KCJpbnB1dCIsIHsgdHlwZTogImNoZWNrYm94IiB9LCBsYWJlbCk7Ci0gICAgICAgIHN1aXRlQ2hl
Y2tib3guc3VpdGUgPSBzdWl0ZTsKLSAgICAgICAgc3VpdGVDaGVja2JveC5vbmNoYW5nZSA9IHRo
aXMuX29uQ2hhbmdlU3VpdGVDaGVja2JveC5iaW5kKHRoaXMpOwotICAgICAgICBzdWl0ZUNoZWNr
Ym94LnRlc3RzRWxlbWVudHMgPSBbXTsKLQotICAgICAgICBsYWJlbC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIgKyBzdWl0ZS5uYW1lKSk7Ci0gICAgICAgIHJldHVybiBz
dWl0ZUVsZW1lbnQ7Ci0gICAgfSwKLQotICAgIF9jcmVhdGVUZXN0RWxlbWVudDogZnVuY3Rpb24o
bGlzdEVsZW1lbnQsIHRlc3QsIHN1aXRlQ2hlY2tib3gpCi0gICAgewotICAgICAgICB2YXIgdGVz
dEVsZW1lbnQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJsaSIsIHt9LCBsaXN0
RWxlbWVudCk7Ci0gICAgICAgIHZhciBzcGFuID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxl
bWVudCgibGFiZWwiLCB7IGNsYXNzOiAidHJlZS1sYWJlbCIgfSwgdGVzdEVsZW1lbnQpOwotCi0g
ICAgICAgIHZhciB0ZXN0Q2hlY2tib3ggPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50
KCJpbnB1dCIsIHsgdHlwZTogImNoZWNrYm94IiB9LCBzcGFuKTsKLSAgICAgICAgdGVzdENoZWNr
Ym94LnRlc3QgPSB0ZXN0OwotICAgICAgICB0ZXN0Q2hlY2tib3gub25jaGFuZ2UgPSB0aGlzLl9v
bkNoYW5nZVRlc3RDaGVja2JveC5iaW5kKHRoaXMpOwotICAgICAgICB0ZXN0Q2hlY2tib3guc3Vp
dGVDaGVja2JveCA9IHN1aXRlQ2hlY2tib3g7Ci0KLSAgICAgICAgc3VpdGVDaGVja2JveC50ZXN0
c0VsZW1lbnRzLnB1c2godGVzdEVsZW1lbnQpOwotICAgICAgICBzcGFuLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIiArIHRlc3QubmFtZSkpOwotICAgICAgICBEb2N1bWVu
dEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJpbnB1dCIsIHsgdHlwZTogIm51bWJlciIgfSwgdGVz
dEVsZW1lbnQpOwotICAgICAgICByZXR1cm4gdGVzdEVsZW1lbnQ7Ci0gICAgfSwKLQotICAgIGNy
ZWF0ZUVsZW1lbnRzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgdHJlZUVsZW1lbnQg
PSB0aGlzLl90cmVlRWxlbWVudCgpOwotCi0gICAgICAgIFN1aXRlcy5mb3JFYWNoKGZ1bmN0aW9u
KHN1aXRlLCBpbmRleCkgewotICAgICAgICAgICAgdmFyIHN1aXRlRWxlbWVudCA9IHRoaXMuX2Ny
ZWF0ZVN1aXRlRWxlbWVudCh0cmVlRWxlbWVudCwgc3VpdGUsICJzdWl0ZS0iICsgaW5kZXgpOwot
ICAgICAgICAgICAgdmFyIGxpc3RFbGVtZW50ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxl
bWVudCgidWwiLCB7fSwgc3VpdGVFbGVtZW50KTsKLSAgICAgICAgICAgIHZhciBzdWl0ZUNoZWNr
Ym94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHN1aXRlRWxlbWVudCk7Ci0KLSAgICAgICAgICAg
IHN1aXRlLnRlc3RzLmZvckVhY2goZnVuY3Rpb24odGVzdCkgewotICAgICAgICAgICAgICAgIHZh
ciB0ZXN0RWxlbWVudCA9IHRoaXMuX2NyZWF0ZVRlc3RFbGVtZW50KGxpc3RFbGVtZW50LCB0ZXN0
LCBzdWl0ZUNoZWNrYm94KTsKLSAgICAgICAgICAgIH0sIHRoaXMpOwotICAgICAgICB9LCB0aGlz
KTsKLSAgICB9LAotICAgIAotICAgIHVwZGF0ZUVkaXRzRWxlbWVudHNTdGF0ZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdmFyIGVkaXRzRWxlbWVudHMgPSB0aGlzLl9lZGl0c0VsZW1lbnRz
KCk7Ci0gICAgICAgIHZhciBzaG93Q29tcGxleGl0eUlucHV0cyA9IG9wdGlvbnNNYW5hZ2VyLnZh
bHVlRm9yT3B0aW9uKCJhZGp1c3RtZW50IikgPT0gImZpeGVkIjsKLQotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGVkaXRzRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZh
ciBlZGl0RWxlbWVudCA9IGVkaXRzRWxlbWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoc2hvd0Nv
bXBsZXhpdHlJbnB1dHMpCi0gICAgICAgICAgICAgICAgZWRpdEVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgic2VsZWN0ZWQiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlZGl0RWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpOwotICAgICAgICB9Ci0gICAgfSwKLQot
ICAgIHVwZGF0ZURpc3BsYXk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGRvY3VtZW50LmJv
ZHkuY2xhc3NOYW1lID0gImRpc3BsYXktIiArIG9wdGlvbnNNYW5hZ2VyLnZhbHVlRm9yT3B0aW9u
KCJkaXNwbGF5Iik7Ci0gICAgfSwKLQotICAgIHVwZGF0ZVVJRnJvbUxvY2FsU3RvcmFnZTogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIHN1aXRlc0VsZW1lbnRzID0gdGhpcy5fc3VpdGVz
RWxlbWVudHMoKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3VpdGVz
RWxlbWVudHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBzdWl0ZUVsZW1lbnQgPSBz
dWl0ZXNFbGVtZW50c1tpXTsKLSAgICAgICAgICAgIHZhciBzdWl0ZUNoZWNrYm94ID0gdGhpcy5f
Y2hlY2tib3hFbGVtZW50KHN1aXRlRWxlbWVudCk7Ci0gICAgICAgICAgICB2YXIgc3VpdGUgPSBz
dWl0ZUNoZWNrYm94LnN1aXRlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzdWl0ZUNoZWNr
Ym94LnRlc3RzRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbih0ZXN0RWxlbWVudCkgewotICAgICAg
ICAgICAgICAgIHZhciB0ZXN0Q2hlY2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQodGVzdEVs
ZW1lbnQpOwotICAgICAgICAgICAgICAgIHZhciB0ZXN0RWRpdCA9IHRoaXMuX2VkaXRFbGVtZW50
KHRlc3RFbGVtZW50KTsKLSAgICAgICAgICAgICAgICB2YXIgdGVzdCA9IHRlc3RDaGVja2JveC50
ZXN0OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHZhciBzdHIgPSBsb2NhbFN0
b3JhZ2UuZ2V0SXRlbSh0aGlzLl9sb2NhbFN0b3JhZ2VOYW1lRm9yVGVzdChzdWl0ZS5uYW1lLCB0
ZXN0Lm5hbWUpKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RyID09PSBudWxsKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBKU09OLnBh
cnNlKHN0cik7Ci0gICAgICAgICAgICAgICAgdGVzdENoZWNrYm94LmNoZWNrZWQgPSB2YWx1ZS5j
aGVja2VkOwotICAgICAgICAgICAgICAgIHRlc3RFZGl0LnZhbHVlID0gdmFsdWUuY29tcGxleGl0
eTsKLSAgICAgICAgICAgIH0sIHRoaXMpOwotCi0gICAgICAgICAgICB0aGlzLl91cGRhdGVTdWl0
ZUNoZWNrYm94U3RhdGUoc3VpdGVDaGVja2JveCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHRoaXMuX3VwZGF0ZVN0YXJ0QnV0dG9uU3RhdGUoKTsKLSAgICB9LAotCi0gICAgdXBkYXRl
TG9jYWxTdG9yYWdlRnJvbVVJOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgc3VpdGVz
RWxlbWVudHMgPSB0aGlzLl9zdWl0ZXNFbGVtZW50cygpOwotICAgICAgICB2YXIgc3VpdGVzID0g
W107Ci0gICAgICAgIAotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1aXRlc0VsZW1lbnRz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgc3VpdGVFbGVtZW50ID0gc3VpdGVzRWxl
bWVudHNbaV07Ci0gICAgICAgICAgICB2YXIgc3VpdGVDaGVja2JveCA9IHRoaXMuX2NoZWNrYm94
RWxlbWVudChzdWl0ZUVsZW1lbnQpOwotICAgICAgICAgICAgdmFyIHN1aXRlID0gc3VpdGVDaGVj
a2JveC5zdWl0ZTsKLQotICAgICAgICAgICAgdmFyIHRlc3RzID0gW107Ci0gICAgICAgICAgICBz
dWl0ZUNoZWNrYm94LnRlc3RzRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbih0ZXN0RWxlbWVudCkg
ewotICAgICAgICAgICAgICAgIHZhciB0ZXN0Q2hlY2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1l
bnQodGVzdEVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHZhciB0ZXN0RWRpdCA9IHRoaXMuX2Vk
aXRFbGVtZW50KHRlc3RFbGVtZW50KTsKLSAgICAgICAgICAgICAgICB2YXIgdGVzdCA9IHRlc3RD
aGVja2JveC50ZXN0OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICh0ZXN0
Q2hlY2tib3guY2hlY2tlZCkgewotICAgICAgICAgICAgICAgICAgICB0ZXN0LmNvbXBsZXhpdHkg
PSB0ZXN0RWRpdC52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMucHVzaCh0ZXN0KTsK
LSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB7IGNoZWNr
ZWQ6IHRlc3RDaGVja2JveC5jaGVja2VkLCBjb21wbGV4aXR5OiB0ZXN0RWRpdC52YWx1ZSB9OyAK
LSAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9sb2NhbFN0b3JhZ2VO
YW1lRm9yVGVzdChzdWl0ZS5uYW1lLCB0ZXN0Lm5hbWUpLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkp
OwotICAgICAgICAgICAgfSwgdGhpcyk7Ci0KLSAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgp
Ci0gICAgICAgICAgICAgICAgc3VpdGVzLnB1c2gobmV3IFN1aXRlKHN1aXRlQ2hlY2tib3guc3Vp
dGUubmFtZSwgdGVzdHMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBzdWl0ZXM7Ci0g
ICAgfSwKLSAgICAKLSAgICB1cGRhdGVMb2NhbFN0b3JhZ2VGcm9tSlNPTjogZnVuY3Rpb24oaXRl
cmF0aW9uUmVzdWx0cykKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIHN1aXRlTmFtZSBpbiBpdGVy
YXRpb25SZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1bHRzLnN1aXRlc10pIHsKLSAgICAgICAgICAg
IHZhciBzdWl0ZVJlc3VsdHMgPSBpdGVyYXRpb25SZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1bHRz
LnN1aXRlc11bc3VpdGVOYW1lXTsKLQotICAgICAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4g
c3VpdGVSZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1bHRzLnRlc3RzXSkgewotICAgICAgICAgICAg
ICAgIHZhciB0ZXN0UmVzdWx0cyA9IHN1aXRlUmVzdWx0c1tTdHJpbmdzLmpzb24ucmVzdWx0cy50
ZXN0c11bdGVzdE5hbWVdOwotICAgICAgICAgICAgICAgIHZhciBkYXRhID0gdGVzdFJlc3VsdHNb
U3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmNvbXBsZXhpdHldOwotICAgICAgICAgICAgICAgIHZh
ciBjb21wbGV4aXR5ID0gTWF0aC5yb3VuZChkYXRhW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMu
YXZlcmFnZV0pOwotCi0gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0geyBjaGVja2VkOiB0cnVl
LCBjb21wbGV4aXR5OiBjb21wbGV4aXR5IH07Ci0gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdl
LnNldEl0ZW0odGhpcy5fbG9jYWxTdG9yYWdlTmFtZUZvclRlc3Qoc3VpdGVOYW1lLCB0ZXN0TmFt
ZSksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLXdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyID0KLXsKLSAgICBpbml0aWFsaXpl
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBkb2N1bWVudC5mb3Jtc1siYmVuY2htYXJrLW9w
dGlvbnMiXS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBiZW5jaG1hcmtDb250cm9sbGVyLm9u
Rm9ybUNoYW5nZWQsIHRydWUpOwotICAgICAgICBvcHRpb25zTWFuYWdlci51cGRhdGVVSUZyb21M
b2NhbFN0b3JhZ2UoKTsKLSAgICAgICAgc3VpdGVzTWFuYWdlci5jcmVhdGVFbGVtZW50cygpOwot
ICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZVVJRnJvbUxvY2FsU3RvcmFnZSgpOwotICAgICAg
ICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZURpc3BsYXkoKTsKLSAgICAgICAgc3VpdGVzTWFuYWdlci51
cGRhdGVFZGl0c0VsZW1lbnRzU3RhdGUoKTsKLSAgICB9LAotCi0gICAgb25Gb3JtQ2hhbmdlZDog
ZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAoZXZlbnQudGFyZ2V0Lm5hbWUgPT0g
ImFkanVzdG1lbnQiKSB7Ci0gICAgICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZUVkaXRzRWxl
bWVudHNTdGF0ZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChldmVudC50YXJnZXQubmFtZSA9PSAiZGlzcGxheSIpIHsKLSAgICAgICAgICAgIHN1aXRlc01h
bmFnZXIudXBkYXRlRGlzcGxheSgpOwotICAgICAgICB9Ci0gICAgfSwKLSAgICAKLSAgICBfcnVu
QmVuY2htYXJrOiBmdW5jdGlvbihzdWl0ZXMsIG9wdGlvbnMpCi0gICAgewotICAgICAgICBiZW5j
aG1hcmtSdW5uZXJDbGllbnQuaW5pdGlhbGl6ZShzdWl0ZXMsIG9wdGlvbnMpOwotICAgICAgICB2
YXIgZnJhbWVDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcnVubmluZyA+ICNy
dW5uaW5nLXRlc3QiKTsKLSAgICAgICAgdmFyIHJ1bm5lciA9IG5ldyBCZW5jaG1hcmtSdW5uZXIo
c3VpdGVzLCBmcmFtZUNvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5LCBiZW5jaG1hcmtSdW5uZXJD
bGllbnQpOwotICAgICAgICBydW5uZXIucnVuTXVsdGlwbGVJdGVyYXRpb25zKCk7Ci0gICAgfSwK
LQotICAgIHN0YXJ0VGVzdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIG9wdGlvbnMg
PSBvcHRpb25zTWFuYWdlci51cGRhdGVMb2NhbFN0b3JhZ2VGcm9tVUkoKTsKLSAgICAgICAgdmFy
IHN1aXRlcyA9IHN1aXRlc01hbmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbVVJKCk7Ci0gICAg
ICAgIHNlY3Rpb25zTWFuYWdlci5zZXR1cFJ1bm5pbmdTZWN0aW9uU3R5bGUob3B0aW9ucyk7Ci0g
ICAgICAgIHRoaXMuX3J1bkJlbmNobWFyayhzdWl0ZXMsIG9wdGlvbnMpOwotICAgICAgICBzZWN0
aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInJ1bm5pbmciKTsKLSAgICB9LAotCi0gICAgc2VsZWN0
UmVzdWx0czogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNlbGVj
dERhdGEoInJlc3VsdHMiKTsKLSAgICB9LAotICAgIAotICAgIHNob3dSZXN1bHRzOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1Njb3JlKCJyZXN1bHRzIiwg
U3RyaW5ncy50ZXh0LnJlc3VsdHMucmVzdWx0cyk7Ci0gICAgICAgIHNlY3Rpb25zTWFuYWdlci5z
aG93U2VjdGlvbigicmVzdWx0cyIsIHRydWUpOwotICAgIH0sCi0gICAgCi0gICAgc2hvd0pTT046
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93U2NvcmUoImpz
b24iLCBTdHJpbmdzLnRleHQucmVzdWx0cy5yZXN1bHRzKTsKLSAgICAgICAgc2VjdGlvbnNNYW5h
Z2VyLnNob3dTZWN0aW9uKCJqc29uIiwgdHJ1ZSk7Ci0gICAgfSwKLQotICAgIHNob3dUZXN0R3Jh
cGg6IGZ1bmN0aW9uKHRlc3ROYW1lLCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQp
Ci0gICAgewotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1Rlc3ROYW1lKCJ0ZXN0LWdyYXBo
IiwgU3RyaW5ncy50ZXh0LnJlc3VsdHMuZ3JhcGgsIHRlc3ROYW1lKTsKLSAgICAgICAgc2VjdGlv
bnNNYW5hZ2VyLnNob3dTZWN0aW9uKCJ0ZXN0LWdyYXBoIiwgdHJ1ZSk7Ci0gICAgICAgIGdyYXBo
KCJzZWN0aW9uI3Rlc3QtZ3JhcGggPiBkYXRhIiwgbmV3IEluc2V0cygyMCwgNTAsIDIwLCA1MCks
IGF4ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCk7Ci0gICAgfSwKLQotICAgIHNob3dU
ZXN0SlNPTjogZnVuY3Rpb24odGVzdE5hbWUsIGpzb24pCi0gICAgewotICAgICAgICBzZWN0aW9u
c01hbmFnZXIuc2hvd1Rlc3ROYW1lKCJ0ZXN0LWpzb24iLCBTdHJpbmdzLnRleHQucmVzdWx0cy5n
cmFwaCwgdGVzdE5hbWUpOwotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd0pTT04oInRlc3Qt
anNvbiIsIGpzb24pOwotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInRlc3Qt
anNvbiIsIHRydWUpOwotICAgIH0sCi0gICAgCi0gICAgc2VsZWN0SlNPTjogZnVuY3Rpb24oc2Vj
dGlvbklkZW50aWZpZXIpCi0gICAgewotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2VsZWN0RGF0
YUNvbnRlbnRzKHNlY3Rpb25JZGVudGlmaWVyKTsKLSAgICB9LAotfQotCi13aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigibG9hZCIsIGJlbmNobWFya0NvbnRyb2xsZXIuaW5pdGlhbGl6ZSk7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5j
aG1hcmstcnVubmVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNv
dXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NGY0ODM0NS4uMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVy
L3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICsw
LDAgQEAKLWZ1bmN0aW9uIEJlbmNobWFya1J1bm5lclN0YXRlKHN1aXRlcykKLXsKLSAgICB0aGlz
Ll9zdWl0ZXMgPSBzdWl0ZXM7Ci0gICAgdGhpcy5fc3VpdGVJbmRleCA9IC0xOwotICAgIHRoaXMu
X3Rlc3RJbmRleCA9IDA7Ci0gICAgdGhpcy5uZXh0KCk7Ci19Ci0KLUJlbmNobWFya1J1bm5lclN0
YXRlLnByb3RvdHlwZS5jdXJyZW50U3VpdGUgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIHRo
aXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XTsKLX0KLQotQmVuY2htYXJrUnVubmVyU3RhdGUu
cHJvdG90eXBlLmN1cnJlbnRUZXN0ID0gZnVuY3Rpb24oKQotewotICAgIHZhciBzdWl0ZSA9IHRo
aXMuY3VycmVudFN1aXRlKCk7Ci0gICAgcmV0dXJuIHN1aXRlID8gc3VpdGUudGVzdHNbdGhpcy5f
dGVzdEluZGV4XSA6IG51bGw7Ci19Ci0KLUJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5p
c0ZpcnN0VGVzdCA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gIXRoaXMuX3Rlc3RJbmRleDsK
LX0KLQotQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbigpCi17
Ci0gICAgdGhpcy5fdGVzdEluZGV4Kys7Ci0KLSAgICB2YXIgc3VpdGUgPSB0aGlzLl9zdWl0ZXNb
dGhpcy5fc3VpdGVJbmRleF07Ci0gICAgaWYgKHN1aXRlICYmIHRoaXMuX3Rlc3RJbmRleCA8IHN1
aXRlLnRlc3RzLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0KLSAgICB0aGlzLl90ZXN0
SW5kZXggPSAwOwotICAgIGRvIHsKLSAgICAgICAgdGhpcy5fc3VpdGVJbmRleCsrOwotICAgIH0g
d2hpbGUgKHRoaXMuX3N1aXRlSW5kZXggPCB0aGlzLl9zdWl0ZXMubGVuZ3RoICYmIHRoaXMuX3N1
aXRlc1t0aGlzLl9zdWl0ZUluZGV4XS5kaXNhYmxlZCk7Ci0KLSAgICByZXR1cm4gdGhpczsKLX0K
LQotQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLnByZXBhcmVDdXJyZW50VGVzdCA9IGZ1
bmN0aW9uKHJ1bm5lciwgZnJhbWUpCi17Ci0gICAgdmFyIHN1aXRlID0gdGhpcy5jdXJyZW50U3Vp
dGUoKTsKLSAgICB2YXIgdGVzdCA9IHRoaXMuY3VycmVudFRlc3QoKTsKLSAgICB2YXIgcHJvbWlz
ZSA9IG5ldyBTaW1wbGVQcm9taXNlOwotICAgIGZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICBzdWl0ZS5wcmVwYXJlKHJ1bm5lciwgZnJhbWUuY29udGVudFdpbmRvdywgZnJhbWUu
Y29udGVudERvY3VtZW50KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeyBwcm9taXNlLnJlc29sdmUo
cmVzdWx0KTsgfSk7Ci0gICAgfQotICAgIGZyYW1lLnNyYyA9ICIuLi90ZXN0cy8iICsgdGVzdC51
cmw7Ci0gICAgcmV0dXJuIHByb21pc2U7Ci19Ci0KLWZ1bmN0aW9uIEJlbmNobWFya1J1bm5lcihz
dWl0ZXMsIGZyYW1lQ29udGFpbmVyLCBjbGllbnQpCi17Ci0gICAgdGhpcy5fc3VpdGVzID0gc3Vp
dGVzOwotICAgIHRoaXMuX2NsaWVudCA9IGNsaWVudDsKLSAgICB0aGlzLl9mcmFtZUNvbnRhaW5l
ciA9IGZyYW1lQ29udGFpbmVyOwotfQotCi1CZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLndhaXRG
b3JFbGVtZW50ID0gZnVuY3Rpb24oc2VsZWN0b3IpCi17Ci0gICAgdmFyIHByb21pc2UgPSBuZXcg
U2ltcGxlUHJvbWlzZTsKLSAgICB2YXIgY29udGVudERvY3VtZW50ID0gdGhpcy5fZnJhbWUuY29u
dGVudERvY3VtZW50OwotCi0gICAgZnVuY3Rpb24gcmVzb2x2ZUlmUmVhZHkoKSB7Ci0gICAgICAg
IHZhciBlbGVtZW50ID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwot
ICAgICAgICBpZiAoZWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlc29sdmUo
ZWxlbWVudCk7Ci0gICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZUlmUmVhZHksIDUwKTsKLSAgICB9
Ci0KLSAgICByZXNvbHZlSWZSZWFkeSgpOwotICAgIHJldHVybiBwcm9taXNlOwotfQotCi1CZW5j
aG1hcmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2
YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKLSAgICBmcmFtZS5z
ZXRBdHRyaWJ1dGUoInNjcm9sbGluZyIsICJubyIpOwotCi0gICAgaWYgKHRoaXMuX2NsaWVudCAm
JiB0aGlzLl9jbGllbnQud2lsbEFkZFRlc3RGcmFtZSkKLSAgICAgICAgdGhpcy5fY2xpZW50Lndp
bGxBZGRUZXN0RnJhbWUoZnJhbWUpOwotCi0gICAgdGhpcy5fZnJhbWVDb250YWluZXIuaW5zZXJ0
QmVmb3JlKGZyYW1lLCB0aGlzLl9mcmFtZUNvbnRhaW5lci5maXJzdENoaWxkKTsKLSAgICB0aGlz
Ll9mcmFtZSA9IGZyYW1lOwotICAgIHJldHVybiBmcmFtZTsKLX0KLQotQmVuY2htYXJrUnVubmVy
LnByb3RvdHlwZS5fcmVtb3ZlRnJhbWUgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKHRoaXMuX2Zy
YW1lKSB7Ci0gICAgICAgIHRoaXMuX2ZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5f
ZnJhbWUpOwotICAgICAgICB0aGlzLl9mcmFtZSA9IG51bGw7Ci0gICAgfQotfQotCi1CZW5jaG1h
cmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyA9IGZ1bmN0aW9uKHN0
YXRlKQotewotICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7Ci0gICAgdmFyIHN1
aXRlID0gc3RhdGUuY3VycmVudFN1aXRlKCk7Ci0gICAgdmFyIHRlc3QgPSBzdGF0ZS5jdXJyZW50
VGVzdCgpOwotICAgIAotICAgIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LndpbGxS
dW5UZXN0VGVzdCkKLSAgICAgICAgdGhpcy5fY2xpZW50LndpbGxSdW5UZXN0KHN1aXRlLCB0ZXN0
KTsKLQotICAgIHZhciBjb250ZW50V2luZG93ID0gdGhpcy5fZnJhbWUuY29udGVudFdpbmRvdzsK
LSAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICBzdWl0ZS5ydW4oY29udGVudFdpbmRvdywgdGVz
dCwgdGhpcy5fY2xpZW50Lm9wdGlvbnMsIHRoaXMuX2NsaWVudC5yZWNvcmRUYWJsZSwgdGhpcy5f
Y2xpZW50LnByb2dyZXNzQmFyKS50aGVuKGZ1bmN0aW9uKHNhbXBsZXIpIHsKLSAgICAgICAgdmFy
IHNhbXBsZXJzID0gc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gfHwgW107Ci0gICAg
ICAgIAotICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2FtcGxlcjsKLSAgICAgICAgc2Vs
Zi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gPSBzYW1wbGVyczsKLQotICAgICAgICBpZiAo
c2VsZi5fY2xpZW50ICYmIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0KQotICAgICAgICAgICAgc2Vs
Zi5fY2xpZW50LmRpZFJ1blRlc3Qoc3VpdGUsIHRlc3QpOwotICAgICAgICAKLSAgICAgICAgc3Rh
dGUubmV4dCgpOwotICAgICAgICBpZiAoc3RhdGUuY3VycmVudFN1aXRlKCkgIT0gc3VpdGUpCi0g
ICAgICAgICAgICBzZWxmLl9yZW1vdmVGcmFtZSgpOwotICAgICAgICBwcm9taXNlLnJlc29sdmUo
c3RhdGUpOwotICAgIH0pOwotICAgIAotICAgIHJldHVybiBwcm9taXNlOwotfQotCi1CZW5jaG1h
cmtSdW5uZXIucHJvdG90eXBlLnN0ZXAgPSBmdW5jdGlvbihzdGF0ZSkKLXsKLSAgICBpZiAoIXN0
YXRlKSB7Ci0gICAgICAgIHN0YXRlID0gbmV3IEJlbmNobWFya1J1bm5lclN0YXRlKHRoaXMuX3N1
aXRlcyk7Ci0gICAgICAgIHRoaXMuX3N1aXRlc1NhbXBsZXJzID0ge307Ci0gICAgfQotCi0gICAg
dmFyIHN1aXRlID0gc3RhdGUuY3VycmVudFN1aXRlKCk7Ci0gICAgaWYgKCFzdWl0ZSkgewotICAg
ICAgICB0aGlzLl9maW5hbGl6ZSgpOwotICAgICAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQ
cm9taXNlOwotICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKLSAgICAgICAgcmV0dXJuIHByb21p
c2U7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlLmlzRmlyc3RUZXN0KCkpIHsKLSAgICAgICAgdGhp
cy5fbWFzdXJlZFZhbHVlc0ZvckN1cnJlbnRTdWl0ZSA9IHt9OwotICAgICAgICB0aGlzLl9hcHBl
bmRGcmFtZSgpOwotICAgIH0KLQotICAgIHJldHVybiBzdGF0ZS5wcmVwYXJlQ3VycmVudFRlc3Qo
dGhpcywgdGhpcy5fZnJhbWUpLnRoZW4oZnVuY3Rpb24ocHJlcGFyZVJldHVyblZhbHVlKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyhzdGF0ZSk7Ci0gICAg
fS5iaW5kKHRoaXMpKTsKLX0KLQotQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5BbGxTdGVw
cyA9IGZ1bmN0aW9uKHN0YXJ0aW5nU3RhdGUpCi17Ci0gICAgdmFyIG5leHRDYWxsZWUgPSB0aGlz
LnJ1bkFsbFN0ZXBzLmJpbmQodGhpcyk7Ci0gICAgdGhpcy5zdGVwKHN0YXJ0aW5nU3RhdGUpLnRo
ZW4oZnVuY3Rpb24obmV4dFN0YXRlKSB7Ci0gICAgICAgIGlmIChuZXh0U3RhdGUpCi0gICAgICAg
ICAgICBuZXh0Q2FsbGVlKG5leHRTdGF0ZSk7Ci0gICAgfSk7Ci19Ci0KLUJlbmNobWFya1J1bm5l
ci5wcm90b3R5cGUucnVuTXVsdGlwbGVJdGVyYXRpb25zID0gZnVuY3Rpb24oKQotewotICAgIHZh
ciBzZWxmID0gdGhpczsKLSAgICB2YXIgY3VycmVudEl0ZXJhdGlvbiA9IDA7Ci0KLSAgICB0aGlz
Ll9ydW5OZXh0SXRlcmF0aW9uID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGN1cnJlbnRJdGVyYXRp
b24rKzsKLSAgICAgICAgaWYgKGN1cnJlbnRJdGVyYXRpb24gPCBzZWxmLl9jbGllbnQuaXRlcmF0
aW9uQ291bnQpCi0gICAgICAgICAgICBzZWxmLnJ1bkFsbFN0ZXBzKCk7Ci0gICAgICAgIGVsc2Ug
aWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbikK
LSAgICAgICAgICAgIHNlbGYuX2NsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKCk7Ci0gICAg
fQotCi0gICAgaWYgKHNlbGYuX2NsaWVudCAmJiBzZWxmLl9jbGllbnQud2lsbFN0YXJ0Rmlyc3RJ
dGVyYXRpb24pCi0gICAgICAgIHNlbGYuX2NsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbigp
OwotCi0gICAgc2VsZi5ydW5BbGxTdGVwcygpOwotfQotCi1CZW5jaG1hcmtSdW5uZXIucHJvdG90
eXBlLl9maW5hbGl6ZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLl9yZW1vdmVGcmFtZSgpOwot
ICAgICAgICAKLSAgICBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC5kaWRSdW5TdWl0
ZXMpCi0gICAgICAgIHRoaXMuX2NsaWVudC5kaWRSdW5TdWl0ZXModGhpcy5fc3VpdGVzU2FtcGxl
cnMpOwotCi0gICAgaWYgKHRoaXMuX3J1bk5leHRJdGVyYXRpb24pCi0gICAgICAgIHRoaXMuX3J1
bk5leHRJdGVyYXRpb24oKTsKLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9ydW5uZXIvcmVzb3VyY2VzL2QzLm1pbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9ydW5uZXIvcmVzb3VyY2VzL2QzLm1pbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMWE3YWU5MC4uMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cnVubmVyL3Jlc291cmNlcy9kMy5taW4uanMKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAK
LSFmdW5jdGlvbigpe2Z1bmN0aW9uIG4obix0KXtyZXR1cm4gdD5uPy0xOm4+dD8xOm4+PXQ/MDow
LzB9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbnVsbCE9biYmIWlzTmFOKG4pfWZ1bmN0aW9uIGUobil7
cmV0dXJue2xlZnQ6ZnVuY3Rpb24odCxlLHIsdSl7Zm9yKGFyZ3VtZW50cy5sZW5ndGg8MyYmKHI9
MCksYXJndW1lbnRzLmxlbmd0aDw0JiYodT10Lmxlbmd0aCk7dT5yOyl7dmFyIGk9cit1Pj4+MTtu
KHRbaV0sZSk8MD9yPWkrMTp1PWl9cmV0dXJuIHJ9LHJpZ2h0OmZ1bmN0aW9uKHQsZSxyLHUpe2Zv
cihhcmd1bWVudHMubGVuZ3RoPDMmJihyPTApLGFyZ3VtZW50cy5sZW5ndGg8NCYmKHU9dC5sZW5n
dGgpO3U+cjspe3ZhciBpPXIrdT4+PjE7bih0W2ldLGUpPjA/dT1pOnI9aSsxfXJldHVybiByfX19
ZnVuY3Rpb24gcihuKXtyZXR1cm4gbi5sZW5ndGh9ZnVuY3Rpb24gdShuKXtmb3IodmFyIHQ9MTtu
KnQlMTspdCo9MTA7cmV0dXJuIHR9ZnVuY3Rpb24gaShuLHQpe3RyeXtmb3IodmFyIGUgaW4gdClP
YmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsZSx7dmFsdWU6dFtlXSxlbnVtZXJhYmxl
OiExfSl9Y2F0Y2gocil7bi5wcm90b3R5cGU9dH19ZnVuY3Rpb24gbygpe31mdW5jdGlvbiBhKG4p
e3JldHVybiBpYStuIGluIHRoaXN9ZnVuY3Rpb24gYyhuKXtyZXR1cm4gbj1pYStuLG4gaW4gdGhp
cyYmZGVsZXRlIHRoaXNbbl19ZnVuY3Rpb24gcygpe3ZhciBuPVtdO3JldHVybiB0aGlzLmZvckVh
Y2goZnVuY3Rpb24odCl7bi5wdXNoKHQpfSksbn1mdW5jdGlvbiBsKCl7dmFyIG49MDtmb3IodmFy
IHQgaW4gdGhpcyl0LmNoYXJDb2RlQXQoMCk9PT1vYSYmKytuO3JldHVybiBufWZ1bmN0aW9uIGYo
KXtmb3IodmFyIG4gaW4gdGhpcylpZihuLmNoYXJDb2RlQXQoMCk9PT1vYSlyZXR1cm4hMTtyZXR1
cm4hMH1mdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIGcobix0LGUpe3JldHVybiBmdW5jdGlvbigpe3Zh
ciByPWUuYXBwbHkodCxhcmd1bWVudHMpO3JldHVybiByPT09dD9uOnJ9fWZ1bmN0aW9uIHAobix0
KXtpZih0IGluIG4pcmV0dXJuIHQ7dD10LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc3Vic3Ry
aW5nKDEpO2Zvcih2YXIgZT0wLHI9YWEubGVuZ3RoO3I+ZTsrK2Upe3ZhciB1PWFhW2VdK3Q7aWYo
dSBpbiBuKXJldHVybiB1fX1mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gbShu
KXtmdW5jdGlvbiB0KCl7Zm9yKHZhciB0LHI9ZSx1PS0xLGk9ci5sZW5ndGg7Kyt1PGk7KSh0PXJb
dV0ub24pJiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbn12YXIgZT1bXSxyPW5ldyBv
O3JldHVybiB0Lm9uPWZ1bmN0aW9uKHQsdSl7dmFyIGksbz1yLmdldCh0KTtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aDwyP28mJm8ub246KG8mJihvLm9uPW51bGwsZT1lLnNsaWNlKDAsaT1lLmluZGV4
T2YobykpLmNvbmNhdChlLnNsaWNlKGkrMSkpLHIucmVtb3ZlKHQpKSx1JiZlLnB1c2goci5zZXQo
dCx7b246dX0pKSxuKX0sdH1mdW5jdGlvbiB5KCl7Wm8uZXZlbnQucHJldmVudERlZmF1bHQoKX1m
dW5jdGlvbiB4KCl7Zm9yKHZhciBuLHQ9Wm8uZXZlbnQ7bj10LnNvdXJjZUV2ZW50Oyl0PW47cmV0
dXJuIHR9ZnVuY3Rpb24gTShuKXtmb3IodmFyIHQ9bmV3IGQsZT0wLHI9YXJndW1lbnRzLmxlbmd0
aDsrK2U8cjspdFthcmd1bWVudHNbZV1dPW0odCk7cmV0dXJuIHQub2Y9ZnVuY3Rpb24oZSxyKXty
ZXR1cm4gZnVuY3Rpb24odSl7dHJ5e3ZhciBpPXUuc291cmNlRXZlbnQ9Wm8uZXZlbnQ7dS50YXJn
ZXQ9bixaby5ldmVudD11LHRbdS50eXBlXS5hcHBseShlLHIpfWZpbmFsbHl7Wm8uZXZlbnQ9aX19
fSx0fWZ1bmN0aW9uIF8obil7cmV0dXJuIHNhKG4scGEpLG59ZnVuY3Rpb24gYihuKXtyZXR1cm4i
ZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmZ1bmN0aW9uKCl7cmV0dXJuIGxhKG4sdGhpcyl9fWZ1bmN0
aW9uIHcobil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbigpe3JldHVybiBm
YShuLHRoaXMpfX1mdW5jdGlvbiBTKG4sdCl7ZnVuY3Rpb24gZSgpe3RoaXMucmVtb3ZlQXR0cmli
dXRlKG4pfWZ1bmN0aW9uIHIoKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2Nh
bCl9ZnVuY3Rpb24gdSgpe3RoaXMuc2V0QXR0cmlidXRlKG4sdCl9ZnVuY3Rpb24gaSgpe3RoaXMu
c2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsLHQpfWZ1bmN0aW9uIG8oKXt2YXIgZT10LmFw
cGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0cmlidXRlKG4pOnRoaXMu
c2V0QXR0cmlidXRlKG4sZSl9ZnVuY3Rpb24gYSgpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVu
dHMpO251bGw9PWU/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOnRoaXMu
c2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsLGUpfXJldHVybiBuPVpvLm5zLnF1YWxpZnko
biksbnVsbD09dD9uLmxvY2FsP3I6ZToiZnVuY3Rpb24iPT10eXBlb2YgdD9uLmxvY2FsP2E6bzpu
LmxvY2FsP2k6dX1mdW5jdGlvbiBrKG4pe3JldHVybiBuLnRyaW0oKS5yZXBsYWNlKC9ccysvZywi
ICIpfWZ1bmN0aW9uIEUobil7cmV0dXJuIG5ldyBSZWdFeHAoIig/Ol58XFxzKykiK1pvLnJlcXVv
dGUobikrIig/Olxccyt8JCkiLCJnIil9ZnVuY3Rpb24gQShuKXtyZXR1cm4obisiIikudHJpbSgp
LnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIEMobix0KXtmdW5jdGlvbiBlKCl7Zm9yKHZhciBlPS0x
OysrZTx1OyluW2VdKHRoaXMsdCl9ZnVuY3Rpb24gcigpe2Zvcih2YXIgZT0tMSxyPXQuYXBwbHko
dGhpcyxhcmd1bWVudHMpOysrZTx1OyluW2VdKHRoaXMscil9bj1BKG4pLm1hcChOKTt2YXIgdT1u
Lmxlbmd0aDtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD9yOmV9ZnVuY3Rpb24gTihuKXt2YXIg
dD1FKG4pO3JldHVybiBmdW5jdGlvbihlLHIpe2lmKHU9ZS5jbGFzc0xpc3QpcmV0dXJuIHI/dS5h
ZGQobik6dS5yZW1vdmUobik7dmFyIHU9ZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiO3I/KHQu
bGFzdEluZGV4PTAsdC50ZXN0KHUpfHxlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGsodSsiICIrbikp
KTplLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGsodS5yZXBsYWNlKHQsIiAiKSkpfX1mdW5jdGlvbiB6
KG4sdCxlKXtmdW5jdGlvbiByKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKX1mdW5jdGlv
biB1KCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLHQsZSl9ZnVuY3Rpb24gaSgpe3ZhciByPXQu
YXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PXI/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShu
KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KG4scixlKX1yZXR1cm4gbnVsbD09dD9yOiJmdW5jdGlv
biI9PXR5cGVvZiB0P2k6dX1mdW5jdGlvbiBMKG4sdCl7ZnVuY3Rpb24gZSgpe2RlbGV0ZSB0aGlz
W25dfWZ1bmN0aW9uIHIoKXt0aGlzW25dPXR9ZnVuY3Rpb24gdSgpe3ZhciBlPXQuYXBwbHkodGhp
cyxhcmd1bWVudHMpO251bGw9PWU/ZGVsZXRlIHRoaXNbbl06dGhpc1tuXT1lfXJldHVybiBudWxs
PT10P2U6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dTpyfWZ1bmN0aW9uIFQobil7cmV0dXJuImZ1bmN0
aW9uIj09dHlwZW9mIG4/bjoobj1aby5ucy5xdWFsaWZ5KG4pKS5sb2NhbD9mdW5jdGlvbigpe3Jl
dHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG4uc3BhY2Usbi5sb2NhbCl9
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlModGhp
cy5uYW1lc3BhY2VVUkksbil9fWZ1bmN0aW9uIHEobil7cmV0dXJue19fZGF0YV9fOm59fWZ1bmN0
aW9uIFIobil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGdhKHRoaXMsbil9fWZ1bmN0aW9uIEQo
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGh8fCh0PW4pLGZ1bmN0aW9uKG4sZSl7cmV0dXJuIG4m
JmU/dChuLl9fZGF0YV9fLGUuX19kYXRhX18pOiFuLSFlfX1mdW5jdGlvbiBQKG4sdCl7Zm9yKHZh
ciBlPTAscj1uLmxlbmd0aDtyPmU7ZSsrKWZvcih2YXIgdSxpPW5bZV0sbz0wLGE9aS5sZW5ndGg7
YT5vO28rKykodT1pW29dKSYmdCh1LG8sZSk7cmV0dXJuIG59ZnVuY3Rpb24gVShuKXtyZXR1cm4g
c2EobixkYSksbn1mdW5jdGlvbiBqKG4pe3ZhciB0LGU7cmV0dXJuIGZ1bmN0aW9uKHIsdSxpKXt2
YXIgbyxhPW5baV0udXBkYXRlLGM9YS5sZW5ndGg7Zm9yKGkhPWUmJihlPWksdD0wKSx1Pj10JiYo
dD11KzEpOyEobz1hW3RdKSYmKyt0PGM7KTtyZXR1cm4gb319ZnVuY3Rpb24gSCgpe3ZhciBuPXRo
aXMuX190cmFuc2l0aW9uX187biYmKytuLmFjdGl2ZX1mdW5jdGlvbiBGKG4sdCxlKXtmdW5jdGlv
biByKCl7dmFyIHQ9dGhpc1tvXTt0JiYodGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4sdCx0LiQp
LGRlbGV0ZSB0aGlzW29dKX1mdW5jdGlvbiB1KCl7dmFyIHU9Yyh0LFhvKGFyZ3VtZW50cykpO3Iu
Y2FsbCh0aGlzKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIobix0aGlzW29dPXUsdS4kPWUpLHUuXz10
fWZ1bmN0aW9uIGkoKXt2YXIgdCxlPW5ldyBSZWdFeHAoIl5fX29uKFteLl0rKSIrWm8ucmVxdW90
ZShuKSsiJCIpO2Zvcih2YXIgciBpbiB0aGlzKWlmKHQ9ci5tYXRjaChlKSl7dmFyIHU9dGhpc1ty
XTt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIodFsxXSx1LHUuJCksZGVsZXRlIHRoaXNbcl19fXZh
ciBvPSJfX29uIituLGE9bi5pbmRleE9mKCIuIiksYz1PO2E+MCYmKG49bi5zdWJzdHJpbmcoMCxh
KSk7dmFyIHM9eWEuZ2V0KG4pO3JldHVybiBzJiYobj1zLGM9WSksYT90P3U6cjp0P3Y6aX1mdW5j
dGlvbiBPKG4sdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByPVpvLmV2ZW50O1pvLmV2ZW50PWUs
dFswXT10aGlzLl9fZGF0YV9fO3RyeXtuLmFwcGx5KHRoaXMsdCl9ZmluYWxseXtaby5ldmVudD1y
fX19ZnVuY3Rpb24gWShuLHQpe3ZhciBlPU8obix0KTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHQ9
dGhpcyxyPW4ucmVsYXRlZFRhcmdldDtyJiYocj09PXR8fDgmci5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbih0KSl8fGUuY2FsbCh0LG4pfX1mdW5jdGlvbiBJKCl7dmFyIG49Ii5kcmFnc3VwcHJlc3Mt
IisgKytNYSx0PSJjbGljayIrbixlPVpvLnNlbGVjdChXbykub24oInRvdWNobW92ZSIrbix5KS5v
bigiZHJhZ3N0YXJ0IituLHkpLm9uKCJzZWxlY3RzdGFydCIrbix5KTtpZih4YSl7dmFyIHI9Qm8u
c3R5bGUsdT1yW3hhXTtyW3hhXT0ibm9uZSJ9cmV0dXJuIGZ1bmN0aW9uKGkpe2Z1bmN0aW9uIG8o
KXtlLm9uKHQsbnVsbCl9ZS5vbihuLG51bGwpLHhhJiYoclt4YV09dSksaSYmKGUub24odCxmdW5j
dGlvbigpe3koKSxvKCl9LCEwKSxzZXRUaW1lb3V0KG8sMCkpfX1mdW5jdGlvbiBaKG4sdCl7dC5j
aGFuZ2VkVG91Y2hlcyYmKHQ9dC5jaGFuZ2VkVG91Y2hlc1swXSk7dmFyIGU9bi5vd25lclNWR0Vs
ZW1lbnR8fG47aWYoZS5jcmVhdGVTVkdQb2ludCl7dmFyIHI9ZS5jcmVhdGVTVkdQb2ludCgpO2lm
KDA+X2EmJihXby5zY3JvbGxYfHxXby5zY3JvbGxZKSl7ZT1aby5zZWxlY3QoImJvZHkiKS5hcHBl
bmQoInN2ZyIpLnN0eWxlKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCxtYXJnaW46
MCxwYWRkaW5nOjAsYm9yZGVyOiJub25lIn0sImltcG9ydGFudCIpO3ZhciB1PWVbMF1bMF0uZ2V0
U2NyZWVuQ1RNKCk7X2E9ISh1LmZ8fHUuZSksZS5yZW1vdmUoKX1yZXR1cm4gX2E/KHIueD10LnBh
Z2VYLHIueT10LnBhZ2VZKTooci54PXQuY2xpZW50WCxyLnk9dC5jbGllbnRZKSxyPXIubWF0cml4
VHJhbnNmb3JtKG4uZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSxbci54LHIueV19dmFyIGk9bi5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bdC5jbGllbnRYLWkubGVmdC1uLmNsaWVudExl
ZnQsdC5jbGllbnRZLWkudG9wLW4uY2xpZW50VG9wXX1mdW5jdGlvbiBWKCl7cmV0dXJuIFpvLmV2
ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXJ9ZnVuY3Rpb24gWCgpe3JldHVybiBaby5l
dmVudC50YXJnZXR9ZnVuY3Rpb24gJCgpe3JldHVybiBXb31mdW5jdGlvbiBCKG4pe3JldHVybiBu
PjA/MTowPm4/LTE6MH1mdW5jdGlvbiBXKG4sdCxlKXtyZXR1cm4odFswXS1uWzBdKSooZVsxXS1u
WzFdKS0odFsxXS1uWzFdKSooZVswXS1uWzBdKX1mdW5jdGlvbiBKKG4pe3JldHVybiBuPjE/MDot
MT5uP2JhOk1hdGguYWNvcyhuKX1mdW5jdGlvbiBHKG4pe3JldHVybiBuPjE/U2E6LTE+bj8tU2E6
TWF0aC5hc2luKG4pfWZ1bmN0aW9uIEsobil7cmV0dXJuKChuPU1hdGguZXhwKG4pKS0xL24pLzJ9
ZnVuY3Rpb24gUShuKXtyZXR1cm4oKG49TWF0aC5leHAobikpKzEvbikvMn1mdW5jdGlvbiBudChu
KXtyZXR1cm4oKG49TWF0aC5leHAoMipuKSktMSkvKG4rMSl9ZnVuY3Rpb24gdHQobil7cmV0dXJu
KG49TWF0aC5zaW4obi8yKSkqbn1mdW5jdGlvbiBldCgpe31mdW5jdGlvbiBydChuLHQsZSl7cmV0
dXJuIHRoaXMgaW5zdGFuY2VvZiBydD8odGhpcy5oPStuLHRoaXMucz0rdCx2b2lkKHRoaXMubD0r
ZSkpOmFyZ3VtZW50cy5sZW5ndGg8Mj9uIGluc3RhbmNlb2YgcnQ/bmV3IHJ0KG4uaCxuLnMsbi5s
KTptdCgiIituLHl0LHJ0KTpuZXcgcnQobix0LGUpfWZ1bmN0aW9uIHV0KG4sdCxlKXtmdW5jdGlv
biByKG4pe3JldHVybiBuPjM2MD9uLT0zNjA6MD5uJiYobis9MzYwKSw2MD5uP2krKG8taSkqbi82
MDoxODA+bj9vOjI0MD5uP2krKG8taSkqKDI0MC1uKS82MDppfWZ1bmN0aW9uIHUobil7cmV0dXJu
IE1hdGgucm91bmQoMjU1KnIobikpfXZhciBpLG87cmV0dXJuIG49aXNOYU4obik/MDoobiU9MzYw
KTwwP24rMzYwOm4sdD1pc05hTih0KT8wOjA+dD8wOnQ+MT8xOnQsZT0wPmU/MDplPjE/MTplLG89
LjU+PWU/ZSooMSt0KTplK3QtZSp0LGk9MiplLW8sbmV3IGd0KHUobisxMjApLHUobiksdShuLTEy
MCkpfWZ1bmN0aW9uIGl0KG4sdCxlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGl0Pyh0aGlzLmg9
K24sdGhpcy5jPSt0LHZvaWQodGhpcy5sPStlKSk6YXJndW1lbnRzLmxlbmd0aDwyP24gaW5zdGFu
Y2VvZiBpdD9uZXcgaXQobi5oLG4uYyxuLmwpOm4gaW5zdGFuY2VvZiBhdD9zdChuLmwsbi5hLG4u
Yik6c3QoKG49eHQoKG49Wm8ucmdiKG4pKS5yLG4uZyxuLmIpKS5sLG4uYSxuLmIpOm5ldyBpdChu
LHQsZSl9ZnVuY3Rpb24gb3Qobix0LGUpe3JldHVybiBpc05hTihuKSYmKG49MCksaXNOYU4odCkm
Jih0PTApLG5ldyBhdChlLE1hdGguY29zKG4qPUFhKSp0LE1hdGguc2luKG4pKnQpfWZ1bmN0aW9u
IGF0KG4sdCxlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGF0Pyh0aGlzLmw9K24sdGhpcy5hPSt0
LHZvaWQodGhpcy5iPStlKSk6YXJndW1lbnRzLmxlbmd0aDwyP24gaW5zdGFuY2VvZiBhdD9uZXcg
YXQobi5sLG4uYSxuLmIpOm4gaW5zdGFuY2VvZiBpdD9vdChuLmwsbi5jLG4uaCk6eHQoKG49Z3Qo
bikpLnIsbi5nLG4uYik6bmV3IGF0KG4sdCxlKX1mdW5jdGlvbiBjdChuLHQsZSl7dmFyIHI9KG4r
MTYpLzExNix1PXIrdC81MDAsaT1yLWUvMjAwO3JldHVybiB1PWx0KHUpKmphLHI9bHQocikqSGEs
aT1sdChpKSpGYSxuZXcgZ3QoaHQoMy4yNDA0NTQyKnUtMS41MzcxMzg1KnItLjQ5ODUzMTQqaSks
aHQoLS45NjkyNjYqdSsxLjg3NjAxMDgqcisuMDQxNTU2KmkpLGh0KC4wNTU2NDM0KnUtLjIwNDAy
NTkqcisxLjA1NzIyNTIqaSkpfWZ1bmN0aW9uIHN0KG4sdCxlKXtyZXR1cm4gbj4wP25ldyBpdChN
YXRoLmF0YW4yKGUsdCkqQ2EsTWF0aC5zcXJ0KHQqdCtlKmUpLG4pOm5ldyBpdCgwLzAsMC8wLG4p
fWZ1bmN0aW9uIGx0KG4pe3JldHVybiBuPi4yMDY4OTMwMzQ/bipuKm46KG4tNC8yOSkvNy43ODcw
Mzd9ZnVuY3Rpb24gZnQobil7cmV0dXJuIG4+LjAwODg1Nj9NYXRoLnBvdyhuLDEvMyk6Ny43ODcw
Mzcqbis0LzI5fWZ1bmN0aW9uIGh0KG4pe3JldHVybiBNYXRoLnJvdW5kKDI1NSooLjAwMzA0Pj1u
PzEyLjkyKm46MS4wNTUqTWF0aC5wb3cobiwxLzIuNCktLjA1NSkpfWZ1bmN0aW9uIGd0KG4sdCxl
KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGd0Pyh0aGlzLnI9fn5uLHRoaXMuZz1+fnQsdm9pZCh0
aGlzLmI9fn5lKSk6YXJndW1lbnRzLmxlbmd0aDwyP24gaW5zdGFuY2VvZiBndD9uZXcgZ3Qobi5y
LG4uZyxuLmIpOm10KCIiK24sZ3QsdXQpOm5ldyBndChuLHQsZSl9ZnVuY3Rpb24gcHQobil7cmV0
dXJuIG5ldyBndChuPj4xNiwyNTUmbj4+OCwyNTUmbil9ZnVuY3Rpb24gdnQobil7cmV0dXJuIHB0
KG4pKyIifWZ1bmN0aW9uIGR0KG4pe3JldHVybiAxNj5uPyIwIitNYXRoLm1heCgwLG4pLnRvU3Ry
aW5nKDE2KTpNYXRoLm1pbigyNTUsbikudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIG10KG4sdCxlKXt2
YXIgcix1LGksbz0wLGE9MCxjPTA7aWYocj0vKFthLXpdKylcKCguKilcKS9pLmV4ZWMobikpc3dp
dGNoKHU9clsyXS5zcGxpdCgiLCIpLHJbMV0pe2Nhc2UiaHNsIjpyZXR1cm4gZShwYXJzZUZsb2F0
KHVbMF0pLHBhcnNlRmxvYXQodVsxXSkvMTAwLHBhcnNlRmxvYXQodVsyXSkvMTAwKTtjYXNlInJn
YiI6cmV0dXJuIHQoX3QodVswXSksX3QodVsxXSksX3QodVsyXSkpfXJldHVybihpPUlhLmdldChu
KSk/dChpLnIsaS5nLGkuYik6KG51bGw9PW58fCIjIiE9PW4uY2hhckF0KDApfHxpc05hTihpPXBh
cnNlSW50KG4uc3Vic3RyaW5nKDEpLDE2KSl8fCg0PT09bi5sZW5ndGg/KG89KDM4NDAmaSk+PjQs
bz1vPj40fG8sYT0yNDAmaSxhPWE+PjR8YSxjPTE1JmksYz1jPDw0fGMpOjc9PT1uLmxlbmd0aCYm
KG89KDE2NzExNjgwJmkpPj4xNixhPSg2NTI4MCZpKT4+OCxjPTI1NSZpKSksdChvLGEsYykpfWZ1
bmN0aW9uIHl0KG4sdCxlKXt2YXIgcix1LGk9TWF0aC5taW4obi89MjU1LHQvPTI1NSxlLz0yNTUp
LG89TWF0aC5tYXgobix0LGUpLGE9by1pLGM9KG8raSkvMjtyZXR1cm4gYT8odT0uNT5jP2EvKG8r
aSk6YS8oMi1vLWkpLHI9bj09bz8odC1lKS9hKyhlPnQ/NjowKTp0PT1vPyhlLW4pL2ErMjoobi10
KS9hKzQscio9NjApOihyPTAvMCx1PWM+MCYmMT5jPzA6ciksbmV3IHJ0KHIsdSxjKX1mdW5jdGlv
biB4dChuLHQsZSl7bj1NdChuKSx0PU10KHQpLGU9TXQoZSk7dmFyIHI9ZnQoKC40MTI0NTY0Km4r
LjM1NzU3NjEqdCsuMTgwNDM3NSplKS9qYSksdT1mdCgoLjIxMjY3MjkqbisuNzE1MTUyMip0Ky4w
NzIxNzUqZSkvSGEpLGk9ZnQoKC4wMTkzMzM5Km4rLjExOTE5Mip0Ky45NTAzMDQxKmUpL0ZhKTty
ZXR1cm4gYXQoMTE2KnUtMTYsNTAwKihyLXUpLDIwMCoodS1pKSl9ZnVuY3Rpb24gTXQobil7cmV0
dXJuKG4vPTI1NSk8PS4wNDA0NT9uLzEyLjkyOk1hdGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCl9
ZnVuY3Rpb24gX3Qobil7dmFyIHQ9cGFyc2VGbG9hdChuKTtyZXR1cm4iJSI9PT1uLmNoYXJBdChu
Lmxlbmd0aC0xKT9NYXRoLnJvdW5kKDIuNTUqdCk6dH1mdW5jdGlvbiBidChuKXtyZXR1cm4iZnVu
Y3Rpb24iPT10eXBlb2Ygbj9uOmZ1bmN0aW9uKCl7cmV0dXJuIG59fWZ1bmN0aW9uIHd0KG4pe3Jl
dHVybiBufWZ1bmN0aW9uIFN0KG4pe3JldHVybiBmdW5jdGlvbih0LGUscil7cmV0dXJuIDI9PT1h
cmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgZSYmKHI9ZSxlPW51bGwpLGt0KHQs
ZSxuLHIpfX1mdW5jdGlvbiBrdChuLHQsZSxyKXtmdW5jdGlvbiB1KCl7dmFyIG4sdD1jLnN0YXR1
cztpZighdCYmYy5yZXNwb25zZVRleHR8fHQ+PTIwMCYmMzAwPnR8fDMwND09PXQpe3RyeXtuPWUu
Y2FsbChpLGMpfWNhdGNoKHIpe3JldHVybiBvLmVycm9yLmNhbGwoaSxyKSx2b2lkIDB9by5sb2Fk
LmNhbGwoaSxuKX1lbHNlIG8uZXJyb3IuY2FsbChpLGMpfXZhciBpPXt9LG89Wm8uZGlzcGF0Y2go
ImJlZm9yZXNlbmQiLCJwcm9ncmVzcyIsImxvYWQiLCJlcnJvciIpLGE9e30sYz1uZXcgWE1MSHR0
cFJlcXVlc3Qscz1udWxsO3JldHVybiFXby5YRG9tYWluUmVxdWVzdHx8IndpdGhDcmVkZW50aWFs
cyJpbiBjfHwhL14oaHR0cChzKT86KT9cL1wvLy50ZXN0KG4pfHwoYz1uZXcgWERvbWFpblJlcXVl
c3QpLCJvbmxvYWQiaW4gYz9jLm9ubG9hZD1jLm9uZXJyb3I9dTpjLm9ucmVhZHlzdGF0ZWNoYW5n
ZT1mdW5jdGlvbigpe2MucmVhZHlTdGF0ZT4zJiZ1KCl9LGMub25wcm9ncmVzcz1mdW5jdGlvbihu
KXt2YXIgdD1aby5ldmVudDtaby5ldmVudD1uO3RyeXtvLnByb2dyZXNzLmNhbGwoaSxjKX1maW5h
bGx5e1pvLmV2ZW50PXR9fSxpLmhlYWRlcj1mdW5jdGlvbihuLHQpe3JldHVybiBuPShuKyIiKS50
b0xvd2VyQ2FzZSgpLGFyZ3VtZW50cy5sZW5ndGg8Mj9hW25dOihudWxsPT10P2RlbGV0ZSBhW25d
OmFbbl09dCsiIixpKX0saS5taW1lVHlwZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odD1udWxsPT1uP251bGw6bisiIixpKTp0fSxpLnJlc3BvbnNlVHlwZT1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1uLGkpOnN9LGkucmVzcG9uc2U9ZnVuY3Rpb24o
bil7cmV0dXJuIGU9bixpfSxbImdldCIsInBvc3QiXS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lbbl09
ZnVuY3Rpb24oKXtyZXR1cm4gaS5zZW5kLmFwcGx5KGksW25dLmNvbmNhdChYbyhhcmd1bWVudHMp
KSl9fSksaS5zZW5kPWZ1bmN0aW9uKGUscix1KXtpZigyPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1
bmN0aW9uIj09dHlwZW9mIHImJih1PXIscj1udWxsKSxjLm9wZW4oZSxuLCEwKSxudWxsPT10fHwi
YWNjZXB0ImluIGF8fChhLmFjY2VwdD10KyIsKi8qIiksYy5zZXRSZXF1ZXN0SGVhZGVyKWZvcih2
YXIgbCBpbiBhKWMuc2V0UmVxdWVzdEhlYWRlcihsLGFbbF0pO3JldHVybiBudWxsIT10JiZjLm92
ZXJyaWRlTWltZVR5cGUmJmMub3ZlcnJpZGVNaW1lVHlwZSh0KSxudWxsIT1zJiYoYy5yZXNwb25z
ZVR5cGU9cyksbnVsbCE9dSYmaS5vbigiZXJyb3IiLHUpLm9uKCJsb2FkIixmdW5jdGlvbihuKXt1
KG51bGwsbil9KSxvLmJlZm9yZXNlbmQuY2FsbChpLGMpLGMuc2VuZChudWxsPT1yP251bGw6ciks
aX0saS5hYm9ydD1mdW5jdGlvbigpe3JldHVybiBjLmFib3J0KCksaX0sWm8ucmViaW5kKGksbywi
b24iKSxudWxsPT1yP2k6aS5nZXQoRXQocikpfWZ1bmN0aW9uIEV0KG4pe3JldHVybiAxPT09bi5s
ZW5ndGg/ZnVuY3Rpb24odCxlKXtuKG51bGw9PXQ/ZTpudWxsKX06bn1mdW5jdGlvbiBBdCgpe3Zh
ciBuPUN0KCksdD1OdCgpLW47dD4yND8oaXNGaW5pdGUodCkmJihjbGVhclRpbWVvdXQoJGEpLCRh
PXNldFRpbWVvdXQoQXQsdCkpLFhhPTApOihYYT0xLFdhKEF0KSl9ZnVuY3Rpb24gQ3QoKXt2YXIg
bj1EYXRlLm5vdygpO2ZvcihCYT1aYTtCYTspbj49QmEudCYmKEJhLmY9QmEuYyhuLUJhLnQpKSxC
YT1CYS5uO3JldHVybiBufWZ1bmN0aW9uIE50KCl7Zm9yKHZhciBuLHQ9WmEsZT0xLzA7dDspdC5m
P3Q9bj9uLm49dC5uOlphPXQubjoodC50PGUmJihlPXQudCksdD0obj10KS5uKTtyZXR1cm4gVmE9
bixlfWZ1bmN0aW9uIHp0KG4sdCl7cmV0dXJuIHQtKG4/TWF0aC5jZWlsKE1hdGgubG9nKG4pL01h
dGguTE4xMCk6MSl9ZnVuY3Rpb24gTHQobix0KXt2YXIgZT1NYXRoLnBvdygxMCwzKnVhKDgtdCkp
O3JldHVybntzY2FsZTp0Pjg/ZnVuY3Rpb24obil7cmV0dXJuIG4vZX06ZnVuY3Rpb24obil7cmV0
dXJuIG4qZX0sc3ltYm9sOm59fWZ1bmN0aW9uIFR0KG4pe3ZhciB0PW4uZGVjaW1hbCxlPW4udGhv
dXNhbmRzLHI9bi5ncm91cGluZyx1PW4uY3VycmVuY3ksaT1yP2Z1bmN0aW9uKG4pe2Zvcih2YXIg
dD1uLmxlbmd0aCx1PVtdLGk9MCxvPXJbMF07dD4wJiZvPjA7KXUucHVzaChuLnN1YnN0cmluZyh0
LT1vLHQrbykpLG89cltpPShpKzEpJXIubGVuZ3RoXTtyZXR1cm4gdS5yZXZlcnNlKCkuam9pbihl
KX06d3Q7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPUdhLmV4ZWMobikscj1lWzFdfHwiICIsbz1l
WzJdfHwiPiIsYT1lWzNdfHwiIixjPWVbNF18fCIiLHM9ZVs1XSxsPStlWzZdLGY9ZVs3XSxoPWVb
OF0sZz1lWzldLHA9MSx2PSIiLGQ9IiIsbT0hMTtzd2l0Y2goaCYmKGg9K2guc3Vic3RyaW5nKDEp
KSwoc3x8IjAiPT09ciYmIj0iPT09bykmJihzPXI9IjAiLG89Ij0iLGYmJihsLT1NYXRoLmZsb29y
KChsLTEpLzQpKSksZyl7Y2FzZSJuIjpmPSEwLGc9ImciO2JyZWFrO2Nhc2UiJSI6cD0xMDAsZD0i
JSIsZz0iZiI7YnJlYWs7Y2FzZSJwIjpwPTEwMCxkPSIlIixnPSJyIjticmVhaztjYXNlImIiOmNh
c2UibyI6Y2FzZSJ4IjpjYXNlIlgiOiIjIj09PWMmJih2PSIwIitnLnRvTG93ZXJDYXNlKCkpO2Nh
c2UiYyI6Y2FzZSJkIjptPSEwLGg9MDticmVhaztjYXNlInMiOnA9LTEsZz0iciJ9IiQiPT09YyYm
KHY9dVswXSxkPXVbMV0pLCJyIiE9Z3x8aHx8KGc9ImciKSxudWxsIT1oJiYoImciPT1nP2g9TWF0
aC5tYXgoMSxNYXRoLm1pbigyMSxoKSk6KCJlIj09Z3x8ImYiPT1nKSYmKGg9TWF0aC5tYXgoMCxN
YXRoLm1pbigyMCxoKSkpKSxnPUthLmdldChnKXx8cXQ7dmFyIHk9cyYmZjtyZXR1cm4gZnVuY3Rp
b24obil7dmFyIGU9ZDtpZihtJiZuJTEpcmV0dXJuIiI7dmFyIHU9MD5ufHwwPT09biYmMD4xL24/
KG49LW4sIi0iKTphO2lmKDA+cCl7dmFyIGM9Wm8uZm9ybWF0UHJlZml4KG4saCk7bj1jLnNjYWxl
KG4pLGU9Yy5zeW1ib2wrZH1lbHNlIG4qPXA7bj1nKG4saCk7dmFyIHg9bi5sYXN0SW5kZXhPZigi
LiIpLE09MD54P246bi5zdWJzdHJpbmcoMCx4KSxfPTA+eD8iIjp0K24uc3Vic3RyaW5nKHgrMSk7
IXMmJmYmJihNPWkoTSkpO3ZhciBiPXYubGVuZ3RoK00ubGVuZ3RoK18ubGVuZ3RoKyh5PzA6dS5s
ZW5ndGgpLHc9bD5iP25ldyBBcnJheShiPWwtYisxKS5qb2luKHIpOiIiO3JldHVybiB5JiYoTT1p
KHcrTSkpLHUrPXYsbj1NK18sKCI8Ij09PW8/dStuK3c6Ij4iPT09bz93K3UrbjoiXiI9PT1vP3cu
c3Vic3RyaW5nKDAsYj4+PTEpK3Urbit3LnN1YnN0cmluZyhiKTp1Kyh5P246dytuKSkrZX19fWZ1
bmN0aW9uIHF0KG4pe3JldHVybiBuKyIifWZ1bmN0aW9uIFJ0KCl7dGhpcy5fPW5ldyBEYXRlKGFy
Z3VtZW50cy5sZW5ndGg+MT9EYXRlLlVUQy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6YXJndW1lbnRz
WzBdKX1mdW5jdGlvbiBEdChuLHQsZSl7ZnVuY3Rpb24gcih0KXt2YXIgZT1uKHQpLHI9aShlLDEp
O3JldHVybiByLXQ+dC1lP2U6cn1mdW5jdGlvbiB1KGUpe3JldHVybiB0KGU9bihuZXcgbmMoZS0x
KSksMSksZX1mdW5jdGlvbiBpKG4sZSl7cmV0dXJuIHQobj1uZXcgbmMoK24pLGUpLG59ZnVuY3Rp
b24gbyhuLHIsaSl7dmFyIG89dShuKSxhPVtdO2lmKGk+MSlmb3IoO3I+bzspZShvKSVpfHxhLnB1
c2gobmV3IERhdGUoK28pKSx0KG8sMSk7ZWxzZSBmb3IoO3I+bzspYS5wdXNoKG5ldyBEYXRlKCtv
KSksdChvLDEpO3JldHVybiBhfWZ1bmN0aW9uIGEobix0LGUpe3RyeXtuYz1SdDt2YXIgcj1uZXcg
UnQ7cmV0dXJuIHIuXz1uLG8ocix0LGUpfWZpbmFsbHl7bmM9RGF0ZX19bi5mbG9vcj1uLG4ucm91
bmQ9cixuLmNlaWw9dSxuLm9mZnNldD1pLG4ucmFuZ2U9bzt2YXIgYz1uLnV0Yz1QdChuKTtyZXR1
cm4gYy5mbG9vcj1jLGMucm91bmQ9UHQociksYy5jZWlsPVB0KHUpLGMub2Zmc2V0PVB0KGkpLGMu
cmFuZ2U9YSxufWZ1bmN0aW9uIFB0KG4pe3JldHVybiBmdW5jdGlvbih0LGUpe3RyeXtuYz1SdDt2
YXIgcj1uZXcgUnQ7cmV0dXJuIHIuXz10LG4ocixlKS5ffWZpbmFsbHl7bmM9RGF0ZX19fWZ1bmN0
aW9uIFV0KG4pe2Z1bmN0aW9uIHQobil7ZnVuY3Rpb24gdCh0KXtmb3IodmFyIGUsdSxpLG89W10s
YT0tMSxjPTA7KythPHI7KTM3PT09bi5jaGFyQ29kZUF0KGEpJiYoby5wdXNoKG4uc3Vic3RyaW5n
KGMsYSkpLG51bGwhPSh1PWVjW2U9bi5jaGFyQXQoKythKV0pJiYoZT1uLmNoYXJBdCgrK2EpKSwo
aT1DW2VdKSYmKGU9aSh0LG51bGw9PXU/ImUiPT09ZT8iICI6IjAiOnUpKSxvLnB1c2goZSksYz1h
KzEpO3JldHVybiBvLnB1c2gobi5zdWJzdHJpbmcoYyxhKSksby5qb2luKCIiKX12YXIgcj1uLmxl
bmd0aDtyZXR1cm4gdC5wYXJzZT1mdW5jdGlvbih0KXt2YXIgcj17eToxOTAwLG06MCxkOjEsSDow
LE06MCxTOjAsTDowLFo6bnVsbH0sdT1lKHIsbix0LDApO2lmKHUhPXQubGVuZ3RoKXJldHVybiBu
dWxsOyJwImluIHImJihyLkg9ci5IJTEyKzEyKnIucCk7dmFyIGk9bnVsbCE9ci5aJiZuYyE9PVJ0
LG89bmV3KGk/UnQ6bmMpO3JldHVybiJqImluIHI/by5zZXRGdWxsWWVhcihyLnksMCxyLmopOiJ3
ImluIHImJigiVyJpbiByfHwiVSJpbiByKT8oby5zZXRGdWxsWWVhcihyLnksMCwxKSxvLnNldEZ1
bGxZZWFyKHIueSwwLCJXImluIHI/KHIudys2KSU3Kzcqci5XLShvLmdldERheSgpKzUpJTc6ci53
Kzcqci5VLShvLmdldERheSgpKzYpJTcpKTpvLnNldEZ1bGxZZWFyKHIueSxyLm0sci5kKSxvLnNl
dEhvdXJzKHIuSCtNYXRoLmZsb29yKHIuWi8xMDApLHIuTStyLlolMTAwLHIuUyxyLkwpLGk/by5f
Om99LHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sdH1mdW5jdGlvbiBlKG4sdCxlLHIp
e2Zvcih2YXIgdSxpLG8sYT0wLGM9dC5sZW5ndGgscz1lLmxlbmd0aDtjPmE7KXtpZihyPj1zKXJl
dHVybi0xO2lmKHU9dC5jaGFyQ29kZUF0KGErKyksMzc9PT11KXtpZihvPXQuY2hhckF0KGErKyks
aT1OW28gaW4gZWM/dC5jaGFyQXQoYSsrKTpvXSwhaXx8KHI9aShuLGUscikpPDApcmV0dXJuLTF9
ZWxzZSBpZih1IT1lLmNoYXJDb2RlQXQocisrKSlyZXR1cm4tMX1yZXR1cm4gcn1mdW5jdGlvbiBy
KG4sdCxlKXtiLmxhc3RJbmRleD0wO3ZhciByPWIuZXhlYyh0LnN1YnN0cmluZyhlKSk7cmV0dXJu
IHI/KG4udz13LmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0
aW9uIHUobix0LGUpe00ubGFzdEluZGV4PTA7dmFyIHI9TS5leGVjKHQuc3Vic3RyaW5nKGUpKTty
ZXR1cm4gcj8obi53PV8uZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksZStyWzBdLmxlbmd0aCk6LTF9
ZnVuY3Rpb24gaShuLHQsZSl7RS5sYXN0SW5kZXg9MDt2YXIgcj1FLmV4ZWModC5zdWJzdHJpbmco
ZSkpO3JldHVybiByPyhuLm09QS5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3Ro
KTotMX1mdW5jdGlvbiBvKG4sdCxlKXtTLmxhc3RJbmRleD0wO3ZhciByPVMuZXhlYyh0LnN1YnN0
cmluZyhlKSk7cmV0dXJuIHI/KG4ubT1rLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5s
ZW5ndGgpOi0xfWZ1bmN0aW9uIGEobix0LHIpe3JldHVybiBlKG4sQy5jLnRvU3RyaW5nKCksdCxy
KX1mdW5jdGlvbiBjKG4sdCxyKXtyZXR1cm4gZShuLEMueC50b1N0cmluZygpLHQscil9ZnVuY3Rp
b24gcyhuLHQscil7cmV0dXJuIGUobixDLlgudG9TdHJpbmcoKSx0LHIpfWZ1bmN0aW9uIGwobix0
LGUpe3ZhciByPXguZ2V0KHQuc3Vic3RyaW5nKGUsZSs9MikudG9Mb3dlckNhc2UoKSk7cmV0dXJu
IG51bGw9PXI/LTE6KG4ucD1yLGUpfXZhciBmPW4uZGF0ZVRpbWUsaD1uLmRhdGUsZz1uLnRpbWUs
cD1uLnBlcmlvZHMsdj1uLmRheXMsZD1uLnNob3J0RGF5cyxtPW4ubW9udGhzLHk9bi5zaG9ydE1v
bnRoczt0LnV0Yz1mdW5jdGlvbihuKXtmdW5jdGlvbiBlKG4pe3RyeXtuYz1SdDt2YXIgdD1uZXcg
bmM7cmV0dXJuIHQuXz1uLHIodCl9ZmluYWxseXtuYz1EYXRlfX12YXIgcj10KG4pO3JldHVybiBl
LnBhcnNlPWZ1bmN0aW9uKG4pe3RyeXtuYz1SdDt2YXIgdD1yLnBhcnNlKG4pO3JldHVybiB0JiZ0
Ll99ZmluYWxseXtuYz1EYXRlfX0sZS50b1N0cmluZz1yLnRvU3RyaW5nLGV9LHQubXVsdGk9dC51
dGMubXVsdGk9cmU7dmFyIHg9Wm8ubWFwKCksTT1IdCh2KSxfPUZ0KHYpLGI9SHQoZCksdz1GdChk
KSxTPUh0KG0pLGs9RnQobSksRT1IdCh5KSxBPUZ0KHkpO3AuZm9yRWFjaChmdW5jdGlvbihuLHQp
e3guc2V0KG4udG9Mb3dlckNhc2UoKSx0KX0pO3ZhciBDPXthOmZ1bmN0aW9uKG4pe3JldHVybiBk
W24uZ2V0RGF5KCldfSxBOmZ1bmN0aW9uKG4pe3JldHVybiB2W24uZ2V0RGF5KCldfSxiOmZ1bmN0
aW9uKG4pe3JldHVybiB5W24uZ2V0TW9udGgoKV19LEI6ZnVuY3Rpb24obil7cmV0dXJuIG1bbi5n
ZXRNb250aCgpXX0sYzp0KGYpLGQ6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobi5nZXREYXRlKCks
dCwyKX0sZTpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldERhdGUoKSx0LDIpfSxIOmZ1bmN0
aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0SG91cnMoKSx0LDIpfSxJOmZ1bmN0aW9uKG4sdCl7cmV0
dXJuIGp0KG4uZ2V0SG91cnMoKSUxMnx8MTIsdCwyKX0sajpmdW5jdGlvbihuLHQpe3JldHVybiBq
dCgxK1FhLmRheU9mWWVhcihuKSx0LDMpfSxMOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0
TWlsbGlzZWNvbmRzKCksdCwzKX0sbTpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldE1vbnRo
KCkrMSx0LDIpfSxNOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0TWludXRlcygpLHQsMil9
LHA6ZnVuY3Rpb24obil7cmV0dXJuIHBbKyhuLmdldEhvdXJzKCk+PTEyKV19LFM6ZnVuY3Rpb24o
bix0KXtyZXR1cm4ganQobi5nZXRTZWNvbmRzKCksdCwyKX0sVTpmdW5jdGlvbihuLHQpe3JldHVy
biBqdChRYS5zdW5kYXlPZlllYXIobiksdCwyKX0sdzpmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRE
YXkoKX0sVzpmdW5jdGlvbihuLHQpe3JldHVybiBqdChRYS5tb25kYXlPZlllYXIobiksdCwyKX0s
eDp0KGgpLFg6dChnKSx5OmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0RnVsbFllYXIoKSUx
MDAsdCwyKX0sWTpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldEZ1bGxZZWFyKCklMWU0LHQs
NCl9LFo6dGUsIiUiOmZ1bmN0aW9uKCl7cmV0dXJuIiUifX0sTj17YTpyLEE6dSxiOmksQjpvLGM6
YSxkOld0LGU6V3QsSDpHdCxJOkd0LGo6SnQsTDpuZSxtOkJ0LE06S3QscDpsLFM6UXQsVTpZdCx3
Ok90LFc6SXQseDpjLFg6cyx5OlZ0LFk6WnQsWjpYdCwiJSI6ZWV9O3JldHVybiB0fWZ1bmN0aW9u
IGp0KG4sdCxlKXt2YXIgcj0wPm4/Ii0iOiIiLHU9KHI/LW46bikrIiIsaT11Lmxlbmd0aDtyZXR1
cm4gcisoZT5pP25ldyBBcnJheShlLWkrMSkuam9pbih0KSt1OnUpfWZ1bmN0aW9uIEh0KG4pe3Jl
dHVybiBuZXcgUmVnRXhwKCJeKD86IituLm1hcChaby5yZXF1b3RlKS5qb2luKCJ8IikrIikiLCJp
Iil9ZnVuY3Rpb24gRnQobil7Zm9yKHZhciB0PW5ldyBvLGU9LTEscj1uLmxlbmd0aDsrK2U8cjsp
dC5zZXQobltlXS50b0xvd2VyQ2FzZSgpLGUpO3JldHVybiB0fWZ1bmN0aW9uIE90KG4sdCxlKXty
Yy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSsxKSk7cmV0dXJuIHI/
KG4udz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBZdChuLHQsZSl7cmMubGFzdElu
ZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlKSk7cmV0dXJuIHI/KG4uVT0rclswXSxl
K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBJdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9
cmMuZXhlYyh0LnN1YnN0cmluZyhlKSk7cmV0dXJuIHI/KG4uVz0rclswXSxlK3JbMF0ubGVuZ3Ro
KTotMX1mdW5jdGlvbiBadChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1
YnN0cmluZyhlLGUrNCkpO3JldHVybiByPyhuLnk9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVu
Y3Rpb24gVnQobix0LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmco
ZSxlKzIpKTtyZXR1cm4gcj8obi55PSR0KCtyWzBdKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlv
biBYdChuLHQsZSl7cmV0dXJuL15bKy1dXGR7NH0kLy50ZXN0KHQ9dC5zdWJzdHJpbmcoZSxlKzUp
KT8obi5aPS10LGUrNSk6LTF9ZnVuY3Rpb24gJHQobil7cmV0dXJuIG4rKG4+Njg/MTkwMDoyZTMp
fWZ1bmN0aW9uIEJ0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3Ry
aW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4ubT1yWzBdLTEsZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rp
b24gV3Qobix0LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxl
KzIpKTtyZXR1cm4gcj8obi5kPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEp0KG4s
dCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSszKSk7cmV0
dXJuIHI/KG4uaj0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBHdChuLHQsZSl7cmMu
bGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhu
Lkg9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gS3Qobix0LGUpe3JjLmxhc3RJbmRl
eD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzIpKTtyZXR1cm4gcj8obi5NPStyWzBd
LGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFF0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIg
cj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4uUz0rclswXSxlK3JbMF0u
bGVuZ3RoKTotMX1mdW5jdGlvbiBuZShuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhl
Yyh0LnN1YnN0cmluZyhlLGUrMykpO3JldHVybiByPyhuLkw9K3JbMF0sZStyWzBdLmxlbmd0aCk6
LTF9ZnVuY3Rpb24gdGUobil7dmFyIHQ9bi5nZXRUaW1lem9uZU9mZnNldCgpLGU9dD4wPyItIjoi
KyIscj1+fih1YSh0KS82MCksdT11YSh0KSU2MDtyZXR1cm4gZStqdChyLCIwIiwyKStqdCh1LCIw
IiwyKX1mdW5jdGlvbiBlZShuLHQsZSl7dWMubGFzdEluZGV4PTA7dmFyIHI9dWMuZXhlYyh0LnN1
YnN0cmluZyhlLGUrMSkpO3JldHVybiByP2UrclswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gcmUobil7
Zm9yKHZhciB0PW4ubGVuZ3RoLGU9LTE7KytlPHQ7KW5bZV1bMF09dGhpcyhuW2VdWzBdKTtyZXR1
cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj1uW2VdOyFyWzFdKHQpOylyPW5bKytlXTtyZXR1
cm4gclswXSh0KX19ZnVuY3Rpb24gdWUoKXt9ZnVuY3Rpb24gaWUobix0LGUpe3ZhciByPWUucz1u
K3QsdT1yLW4saT1yLXU7ZS50PW4taSsodC11KX1mdW5jdGlvbiBvZShuLHQpe24mJmNjLmhhc093
blByb3BlcnR5KG4udHlwZSkmJmNjW24udHlwZV0obix0KX1mdW5jdGlvbiBhZShuLHQsZSl7dmFy
IHIsdT0tMSxpPW4ubGVuZ3RoLWU7Zm9yKHQubGluZVN0YXJ0KCk7Kyt1PGk7KXI9blt1XSx0LnBv
aW50KHJbMF0sclsxXSxyWzJdKTt0LmxpbmVFbmQoKX1mdW5jdGlvbiBjZShuLHQpe3ZhciBlPS0x
LHI9bi5sZW5ndGg7Zm9yKHQucG9seWdvblN0YXJ0KCk7KytlPHI7KWFlKG5bZV0sdCwxKTt0LnBv
bHlnb25FbmQoKX1mdW5jdGlvbiBzZSgpe2Z1bmN0aW9uIG4obix0KXtuKj1BYSx0PXQqQWEvMiti
YS80O3ZhciBlPW4tcixvPWU+PTA/MTotMSxhPW8qZSxjPU1hdGguY29zKHQpLHM9TWF0aC5zaW4o
dCksbD1pKnMsZj11KmMrbCpNYXRoLmNvcyhhKSxoPWwqbypNYXRoLnNpbihhKTtsYy5hZGQoTWF0
aC5hdGFuMihoLGYpKSxyPW4sdT1jLGk9c312YXIgdCxlLHIsdSxpO2ZjLnBvaW50PWZ1bmN0aW9u
KG8sYSl7ZmMucG9pbnQ9bixyPSh0PW8pKkFhLHU9TWF0aC5jb3MoYT0oZT1hKSpBYS8yK2JhLzQp
LGk9TWF0aC5zaW4oYSl9LGZjLmxpbmVFbmQ9ZnVuY3Rpb24oKXtuKHQsZSl9fWZ1bmN0aW9uIGxl
KG4pe3ZhciB0PW5bMF0sZT1uWzFdLHI9TWF0aC5jb3MoZSk7cmV0dXJuW3IqTWF0aC5jb3ModCks
cipNYXRoLnNpbih0KSxNYXRoLnNpbihlKV19ZnVuY3Rpb24gZmUobix0KXtyZXR1cm4gblswXSp0
WzBdK25bMV0qdFsxXStuWzJdKnRbMl19ZnVuY3Rpb24gaGUobix0KXtyZXR1cm5bblsxXSp0WzJd
LW5bMl0qdFsxXSxuWzJdKnRbMF0tblswXSp0WzJdLG5bMF0qdFsxXS1uWzFdKnRbMF1dfWZ1bmN0
aW9uIGdlKG4sdCl7blswXSs9dFswXSxuWzFdKz10WzFdLG5bMl0rPXRbMl19ZnVuY3Rpb24gcGUo
bix0KXtyZXR1cm5bblswXSp0LG5bMV0qdCxuWzJdKnRdfWZ1bmN0aW9uIHZlKG4pe3ZhciB0PU1h
dGguc3FydChuWzBdKm5bMF0rblsxXSpuWzFdK25bMl0qblsyXSk7blswXS89dCxuWzFdLz10LG5b
Ml0vPXR9ZnVuY3Rpb24gZGUobil7cmV0dXJuW01hdGguYXRhbjIoblsxXSxuWzBdKSxHKG5bMl0p
XX1mdW5jdGlvbiBtZShuLHQpe3JldHVybiB1YShuWzBdLXRbMF0pPGthJiZ1YShuWzFdLXRbMV0p
PGthfWZ1bmN0aW9uIHllKG4sdCl7bio9QWE7dmFyIGU9TWF0aC5jb3ModCo9QWEpO3hlKGUqTWF0
aC5jb3MobiksZSpNYXRoLnNpbihuKSxNYXRoLnNpbih0KSl9ZnVuY3Rpb24geGUobix0LGUpeysr
aGMscGMrPShuLXBjKS9oYyx2Yys9KHQtdmMpL2hjLGRjKz0oZS1kYykvaGN9ZnVuY3Rpb24gTWUo
KXtmdW5jdGlvbiBuKG4sdSl7bio9QWE7dmFyIGk9TWF0aC5jb3ModSo9QWEpLG89aSpNYXRoLmNv
cyhuKSxhPWkqTWF0aC5zaW4obiksYz1NYXRoLnNpbih1KSxzPU1hdGguYXRhbjIoTWF0aC5zcXJ0
KChzPWUqYy1yKmEpKnMrKHM9cipvLXQqYykqcysocz10KmEtZSpvKSpzKSx0Km8rZSphK3IqYyk7
Z2MrPXMsbWMrPXMqKHQrKHQ9bykpLHljKz1zKihlKyhlPWEpKSx4Yys9cyoocisocj1jKSkseGUo
dCxlLHIpfXZhciB0LGUscjt3Yy5wb2ludD1mdW5jdGlvbih1LGkpe3UqPUFhO3ZhciBvPU1hdGgu
Y29zKGkqPUFhKTt0PW8qTWF0aC5jb3ModSksZT1vKk1hdGguc2luKHUpLHI9TWF0aC5zaW4oaSks
d2MucG9pbnQ9bix4ZSh0LGUscil9fWZ1bmN0aW9uIF9lKCl7d2MucG9pbnQ9eWV9ZnVuY3Rpb24g
YmUoKXtmdW5jdGlvbiBuKG4sdCl7bio9QWE7dmFyIGU9TWF0aC5jb3ModCo9QWEpLG89ZSpNYXRo
LmNvcyhuKSxhPWUqTWF0aC5zaW4obiksYz1NYXRoLnNpbih0KSxzPXUqYy1pKmEsbD1pKm8tcipj
LGY9ciphLXUqbyxoPU1hdGguc3FydChzKnMrbCpsK2YqZiksZz1yKm8rdSphK2kqYyxwPWgmJi1K
KGcpL2gsdj1NYXRoLmF0YW4yKGgsZyk7TWMrPXAqcyxfYys9cCpsLGJjKz1wKmYsZ2MrPXYsbWMr
PXYqKHIrKHI9bykpLHljKz12Kih1Kyh1PWEpKSx4Yys9diooaSsoaT1jKSkseGUocix1LGkpfXZh
ciB0LGUscix1LGk7d2MucG9pbnQ9ZnVuY3Rpb24obyxhKXt0PW8sZT1hLHdjLnBvaW50PW4sbyo9
QWE7dmFyIGM9TWF0aC5jb3MoYSo9QWEpO3I9YypNYXRoLmNvcyhvKSx1PWMqTWF0aC5zaW4obyks
aT1NYXRoLnNpbihhKSx4ZShyLHUsaSl9LHdjLmxpbmVFbmQ9ZnVuY3Rpb24oKXtuKHQsZSksd2Mu
bGluZUVuZD1fZSx3Yy5wb2ludD15ZX19ZnVuY3Rpb24gd2UoKXtyZXR1cm4hMH1mdW5jdGlvbiBT
ZShuLHQsZSxyLHUpe3ZhciBpPVtdLG89W107aWYobi5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lmKCEo
KHQ9bi5sZW5ndGgtMSk8PTApKXt2YXIgdCxlPW5bMF0scj1uW3RdO2lmKG1lKGUscikpe3UubGlu
ZVN0YXJ0KCk7Zm9yKHZhciBhPTA7dD5hOysrYSl1LnBvaW50KChlPW5bYV0pWzBdLGVbMV0pO3Jl
dHVybiB1LmxpbmVFbmQoKSx2b2lkIDB9dmFyIGM9bmV3IEVlKGUsbixudWxsLCEwKSxzPW5ldyBF
ZShlLG51bGwsYywhMSk7Yy5vPXMsaS5wdXNoKGMpLG8ucHVzaChzKSxjPW5ldyBFZShyLG4sbnVs
bCwhMSkscz1uZXcgRWUocixudWxsLGMsITApLGMubz1zLGkucHVzaChjKSxvLnB1c2gocyl9fSks
by5zb3J0KHQpLGtlKGkpLGtlKG8pLGkubGVuZ3RoKXtmb3IodmFyIGE9MCxjPWUscz1vLmxlbmd0
aDtzPmE7KythKW9bYV0uZT1jPSFjO2Zvcih2YXIgbCxmLGg9aVswXTs7KXtmb3IodmFyIGc9aCxw
PSEwO2cudjspaWYoKGc9Zy5uKT09PWgpcmV0dXJuO2w9Zy56LHUubGluZVN0YXJ0KCk7ZG97aWYo
Zy52PWcuby52PSEwLGcuZSl7aWYocClmb3IodmFyIGE9MCxzPWwubGVuZ3RoO3M+YTsrK2EpdS5w
b2ludCgoZj1sW2FdKVswXSxmWzFdKTtlbHNlIHIoZy54LGcubi54LDEsdSk7Zz1nLm59ZWxzZXtp
ZihwKXtsPWcucC56O2Zvcih2YXIgYT1sLmxlbmd0aC0xO2E+PTA7LS1hKXUucG9pbnQoKGY9bFth
XSlbMF0sZlsxXSl9ZWxzZSByKGcueCxnLnAueCwtMSx1KTtnPWcucH1nPWcubyxsPWcueixwPSFw
fXdoaWxlKCFnLnYpO3UubGluZUVuZCgpfX19ZnVuY3Rpb24ga2Uobil7aWYodD1uLmxlbmd0aCl7
Zm9yKHZhciB0LGUscj0wLHU9blswXTsrK3I8dDspdS5uPWU9bltyXSxlLnA9dSx1PWU7dS5uPWU9
blswXSxlLnA9dX19ZnVuY3Rpb24gRWUobix0LGUscil7dGhpcy54PW4sdGhpcy56PXQsdGhpcy5v
PWUsdGhpcy5lPXIsdGhpcy52PSExLHRoaXMubj10aGlzLnA9bnVsbH1mdW5jdGlvbiBBZShuLHQs
ZSxyKXtyZXR1cm4gZnVuY3Rpb24odSxpKXtmdW5jdGlvbiBvKHQsZSl7dmFyIHI9dSh0LGUpO24o
dD1yWzBdLGU9clsxXSkmJmkucG9pbnQodCxlKX1mdW5jdGlvbiBhKG4sdCl7dmFyIGU9dShuLHQp
O2QucG9pbnQoZVswXSxlWzFdKX1mdW5jdGlvbiBjKCl7eS5wb2ludD1hLGQubGluZVN0YXJ0KCl9
ZnVuY3Rpb24gcygpe3kucG9pbnQ9byxkLmxpbmVFbmQoKX1mdW5jdGlvbiBsKG4sdCl7di5wdXNo
KFtuLHRdKTt2YXIgZT11KG4sdCk7TS5wb2ludChlWzBdLGVbMV0pfWZ1bmN0aW9uIGYoKXtNLmxp
bmVTdGFydCgpLHY9W119ZnVuY3Rpb24gaCgpe2wodlswXVswXSx2WzBdWzFdKSxNLmxpbmVFbmQo
KTt2YXIgbix0PU0uY2xlYW4oKSxlPXguYnVmZmVyKCkscj1lLmxlbmd0aDtpZih2LnBvcCgpLHAu
cHVzaCh2KSx2PW51bGwscilpZigxJnQpe249ZVswXTt2YXIgdSxyPW4ubGVuZ3RoLTEsbz0tMTtp
ZihyPjApe2ZvcihffHwoaS5wb2x5Z29uU3RhcnQoKSxfPSEwKSxpLmxpbmVTdGFydCgpOysrbzxy
OylpLnBvaW50KCh1PW5bb10pWzBdLHVbMV0pO2kubGluZUVuZCgpfX1lbHNlIHI+MSYmMiZ0JiZl
LnB1c2goZS5wb3AoKS5jb25jYXQoZS5zaGlmdCgpKSksZy5wdXNoKGUuZmlsdGVyKENlKSl9dmFy
IGcscCx2LGQ9dChpKSxtPXUuaW52ZXJ0KHJbMF0sclsxXSkseT17cG9pbnQ6byxsaW5lU3RhcnQ6
YyxsaW5lRW5kOnMscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7eS5wb2ludD1sLHkubGluZVN0YXJ0
PWYseS5saW5lRW5kPWgsZz1bXSxwPVtdfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7eS5wb2ludD1v
LHkubGluZVN0YXJ0PWMseS5saW5lRW5kPXMsZz1aby5tZXJnZShnKTt2YXIgbj1MZShtLHApO2cu
bGVuZ3RoPyhffHwoaS5wb2x5Z29uU3RhcnQoKSxfPSEwKSxTZShnLHplLG4sZSxpKSk6biYmKF98
fChpLnBvbHlnb25TdGFydCgpLF89ITApLGkubGluZVN0YXJ0KCksZShudWxsLG51bGwsMSxpKSxp
LmxpbmVFbmQoKSksXyYmKGkucG9seWdvbkVuZCgpLF89ITEpLGc9cD1udWxsfSxzcGhlcmU6ZnVu
Y3Rpb24oKXtpLnBvbHlnb25TdGFydCgpLGkubGluZVN0YXJ0KCksZShudWxsLG51bGwsMSxpKSxp
LmxpbmVFbmQoKSxpLnBvbHlnb25FbmQoKX19LHg9TmUoKSxNPXQoeCksXz0hMTtyZXR1cm4geX19
ZnVuY3Rpb24gQ2Uobil7cmV0dXJuIG4ubGVuZ3RoPjF9ZnVuY3Rpb24gTmUoKXt2YXIgbix0PVtd
O3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LnB1c2gobj1bXSl9LHBvaW50OmZ1bmN0aW9u
KHQsZSl7bi5wdXNoKFt0LGVdKX0sbGluZUVuZDp2LGJ1ZmZlcjpmdW5jdGlvbigpe3ZhciBlPXQ7
cmV0dXJuIHQ9W10sbj1udWxsLGV9LHJlam9pbjpmdW5jdGlvbigpe3QubGVuZ3RoPjEmJnQucHVz
aCh0LnBvcCgpLmNvbmNhdCh0LnNoaWZ0KCkpKX19fWZ1bmN0aW9uIHplKG4sdCl7cmV0dXJuKChu
PW4ueClbMF08MD9uWzFdLVNhLWthOlNhLW5bMV0pLSgodD10LngpWzBdPDA/dFsxXS1TYS1rYTpT
YS10WzFdKX1mdW5jdGlvbiBMZShuLHQpe3ZhciBlPW5bMF0scj1uWzFdLHU9W01hdGguc2luKGUp
LC1NYXRoLmNvcyhlKSwwXSxpPTAsbz0wO2xjLnJlc2V0KCk7Zm9yKHZhciBhPTAsYz10Lmxlbmd0
aDtjPmE7KythKXt2YXIgcz10W2FdLGw9cy5sZW5ndGg7aWYobClmb3IodmFyIGY9c1swXSxoPWZb
MF0sZz1mWzFdLzIrYmEvNCxwPU1hdGguc2luKGcpLHY9TWF0aC5jb3MoZyksZD0xOzspe2Q9PT1s
JiYoZD0wKSxuPXNbZF07dmFyIG09blswXSx5PW5bMV0vMitiYS80LHg9TWF0aC5zaW4oeSksTT1N
YXRoLmNvcyh5KSxfPW0taCxiPV8+PTA/MTotMSx3PWIqXyxTPXc+YmEsaz1wKng7aWYobGMuYWRk
KE1hdGguYXRhbjIoaypiKk1hdGguc2luKHcpLHYqTStrKk1hdGguY29zKHcpKSksaSs9Uz9fK2Iq
d2E6XyxTXmg+PWVebT49ZSl7dmFyIEU9aGUobGUoZiksbGUobikpO3ZlKEUpO3ZhciBBPWhlKHUs
RSk7dmUoQSk7dmFyIEM9KFNeXz49MD8tMToxKSpHKEFbMl0pOyhyPkN8fHI9PT1DJiYoRVswXXx8
RVsxXSkpJiYobys9U15fPj0wPzE6LTEpfWlmKCFkKyspYnJlYWs7aD1tLHA9eCx2PU0sZj1ufX1y
ZXR1cm4oLWthPml8fGthPmkmJjA+bGMpXjEmb31mdW5jdGlvbiBUZShuKXt2YXIgdCxlPTAvMCxy
PTAvMCx1PTAvMDtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7bi5saW5lU3RhcnQoKSx0PTF9
LHBvaW50OmZ1bmN0aW9uKGksbyl7dmFyIGE9aT4wP2JhOi1iYSxjPXVhKGktZSk7dWEoYy1iYSk8
a2E/KG4ucG9pbnQoZSxyPShyK28pLzI+MD9TYTotU2EpLG4ucG9pbnQodSxyKSxuLmxpbmVFbmQo
KSxuLmxpbmVTdGFydCgpLG4ucG9pbnQoYSxyKSxuLnBvaW50KGksciksdD0wKTp1IT09YSYmYz49
YmEmJih1YShlLXUpPGthJiYoZS09dSprYSksdWEoaS1hKTxrYSYmKGktPWEqa2EpLHI9cWUoZSxy
LGksbyksbi5wb2ludCh1LHIpLG4ubGluZUVuZCgpLG4ubGluZVN0YXJ0KCksbi5wb2ludChhLHIp
LHQ9MCksbi5wb2ludChlPWkscj1vKSx1PWF9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtuLmxpbmVFbmQo
KSxlPXI9MC8wfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLXR9fX1mdW5jdGlvbiBxZShuLHQs
ZSxyKXt2YXIgdSxpLG89TWF0aC5zaW4obi1lKTtyZXR1cm4gdWEobyk+a2E/TWF0aC5hdGFuKChN
YXRoLnNpbih0KSooaT1NYXRoLmNvcyhyKSkqTWF0aC5zaW4oZSktTWF0aC5zaW4ocikqKHU9TWF0
aC5jb3ModCkpKk1hdGguc2luKG4pKS8odSppKm8pKToodCtyKS8yfWZ1bmN0aW9uIFJlKG4sdCxl
LHIpe3ZhciB1O2lmKG51bGw9PW4pdT1lKlNhLHIucG9pbnQoLWJhLHUpLHIucG9pbnQoMCx1KSxy
LnBvaW50KGJhLHUpLHIucG9pbnQoYmEsMCksci5wb2ludChiYSwtdSksci5wb2ludCgwLC11KSxy
LnBvaW50KC1iYSwtdSksci5wb2ludCgtYmEsMCksci5wb2ludCgtYmEsdSk7ZWxzZSBpZih1YShu
WzBdLXRbMF0pPmthKXt2YXIgaT1uWzBdPHRbMF0/YmE6LWJhO3U9ZSppLzIsci5wb2ludCgtaSx1
KSxyLnBvaW50KDAsdSksci5wb2ludChpLHUpfWVsc2Ugci5wb2ludCh0WzBdLHRbMV0pfWZ1bmN0
aW9uIERlKG4pe2Z1bmN0aW9uIHQobix0KXtyZXR1cm4gTWF0aC5jb3MobikqTWF0aC5jb3ModCk+
aX1mdW5jdGlvbiBlKG4pe3ZhciBlLGksYyxzLGw7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigp
e3M9Yz0hMSxsPTF9LHBvaW50OmZ1bmN0aW9uKGYsaCl7dmFyIGcscD1bZixoXSx2PXQoZixoKSxk
PW8/dj8wOnUoZixoKTp2P3UoZisoMD5mP2JhOi1iYSksaCk6MDtpZighZSYmKHM9Yz12KSYmbi5s
aW5lU3RhcnQoKSx2IT09YyYmKGc9cihlLHApLChtZShlLGcpfHxtZShwLGcpKSYmKHBbMF0rPWth
LHBbMV0rPWthLHY9dChwWzBdLHBbMV0pKSksdiE9PWMpbD0wLHY/KG4ubGluZVN0YXJ0KCksZz1y
KHAsZSksbi5wb2ludChnWzBdLGdbMV0pKTooZz1yKGUscCksbi5wb2ludChnWzBdLGdbMV0pLG4u
bGluZUVuZCgpKSxlPWc7ZWxzZSBpZihhJiZlJiZvXnYpe3ZhciBtO2QmaXx8IShtPXIocCxlLCEw
KSl8fChsPTAsbz8obi5saW5lU3RhcnQoKSxuLnBvaW50KG1bMF1bMF0sbVswXVsxXSksbi5wb2lu
dChtWzFdWzBdLG1bMV1bMV0pLG4ubGluZUVuZCgpKToobi5wb2ludChtWzFdWzBdLG1bMV1bMV0p
LG4ubGluZUVuZCgpLG4ubGluZVN0YXJ0KCksbi5wb2ludChtWzBdWzBdLG1bMF1bMV0pKSl9IXZ8
fGUmJm1lKGUscCl8fG4ucG9pbnQocFswXSxwWzFdKSxlPXAsYz12LGk9ZH0sbGluZUVuZDpmdW5j
dGlvbigpe2MmJm4ubGluZUVuZCgpLGU9bnVsbH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gbHwo
cyYmYyk8PDF9fX1mdW5jdGlvbiByKG4sdCxlKXt2YXIgcj1sZShuKSx1PWxlKHQpLG89WzEsMCww
XSxhPWhlKHIsdSksYz1mZShhLGEpLHM9YVswXSxsPWMtcypzO2lmKCFsKXJldHVybiFlJiZuO3Zh
ciBmPWkqYy9sLGg9LWkqcy9sLGc9aGUobyxhKSxwPXBlKG8sZiksdj1wZShhLGgpO2dlKHAsdik7
dmFyIGQ9ZyxtPWZlKHAsZCkseT1mZShkLGQpLHg9bSptLXkqKGZlKHAscCktMSk7aWYoISgwPngp
KXt2YXIgTT1NYXRoLnNxcnQoeCksXz1wZShkLCgtbS1NKS95KTtpZihnZShfLHApLF89ZGUoXyks
IWUpcmV0dXJuIF87dmFyIGIsdz1uWzBdLFM9dFswXSxrPW5bMV0sRT10WzFdO3c+UyYmKGI9dyx3
PVMsUz1iKTt2YXIgQT1TLXcsQz11YShBLWJhKTxrYSxOPUN8fGthPkE7aWYoIUMmJms+RSYmKGI9
ayxrPUUsRT1iKSxOP0M/aytFPjBeX1sxXTwodWEoX1swXS13KTxrYT9rOkUpOms8PV9bMV0mJl9b
MV08PUU6QT5iYV4odzw9X1swXSYmX1swXTw9Uykpe3ZhciB6PXBlKGQsKC1tK00pL3kpO3JldHVy
biBnZSh6LHApLFtfLGRlKHopXX19fWZ1bmN0aW9uIHUodCxlKXt2YXIgcj1vP246YmEtbix1PTA7
cmV0dXJuLXI+dD91fD0xOnQ+ciYmKHV8PTIpLC1yPmU/dXw9NDplPnImJih1fD04KSx1fXZhciBp
PU1hdGguY29zKG4pLG89aT4wLGE9dWEoaSk+a2EsYz1zcihuLDYqQWEpO3JldHVybiBBZSh0LGUs
YyxvP1swLC1uXTpbLWJhLG4tYmFdKX1mdW5jdGlvbiBQZShuLHQsZSxyKXtyZXR1cm4gZnVuY3Rp
b24odSl7dmFyIGksbz11LmEsYT11LmIsYz1vLngscz1vLnksbD1hLngsZj1hLnksaD0wLGc9MSxw
PWwtYyx2PWYtcztpZihpPW4tYyxwfHwhKGk+MCkpe2lmKGkvPXAsMD5wKXtpZihoPmkpcmV0dXJu
O2c+aSYmKGc9aSl9ZWxzZSBpZihwPjApe2lmKGk+ZylyZXR1cm47aT5oJiYoaD1pKX1pZihpPWUt
YyxwfHwhKDA+aSkpe2lmKGkvPXAsMD5wKXtpZihpPmcpcmV0dXJuO2k+aCYmKGg9aSl9ZWxzZSBp
ZihwPjApe2lmKGg+aSlyZXR1cm47Zz5pJiYoZz1pKX1pZihpPXQtcyx2fHwhKGk+MCkpe2lmKGkv
PXYsMD52KXtpZihoPmkpcmV0dXJuO2c+aSYmKGc9aSl9ZWxzZSBpZih2PjApe2lmKGk+ZylyZXR1
cm47aT5oJiYoaD1pKX1pZihpPXItcyx2fHwhKDA+aSkpe2lmKGkvPXYsMD52KXtpZihpPmcpcmV0
dXJuO2k+aCYmKGg9aSl9ZWxzZSBpZih2PjApe2lmKGg+aSlyZXR1cm47Zz5pJiYoZz1pKX1yZXR1
cm4gaD4wJiYodS5hPXt4OmMraCpwLHk6cytoKnZ9KSwxPmcmJih1LmI9e3g6YytnKnAseTpzK2cq
dn0pLHV9fX19fX1mdW5jdGlvbiBVZShuLHQsZSxyKXtmdW5jdGlvbiB1KHIsdSl7cmV0dXJuIHVh
KHJbMF0tbik8a2E/dT4wPzA6Mzp1YShyWzBdLWUpPGthP3U+MD8yOjE6dWEoclsxXS10KTxrYT91
PjA/MTowOnU+MD8zOjJ9ZnVuY3Rpb24gaShuLHQpe3JldHVybiBvKG4ueCx0LngpfWZ1bmN0aW9u
IG8obix0KXt2YXIgZT11KG4sMSkscj11KHQsMSk7cmV0dXJuIGUhPT1yP2UtcjowPT09ZT90WzFd
LW5bMV06MT09PWU/blswXS10WzBdOjI9PT1lP25bMV0tdFsxXTp0WzBdLW5bMF19cmV0dXJuIGZ1
bmN0aW9uKGEpe2Z1bmN0aW9uIGMobil7Zm9yKHZhciB0PTAsZT1kLmxlbmd0aCxyPW5bMV0sdT0w
O2U+dTsrK3UpZm9yKHZhciBpLG89MSxhPWRbdV0sYz1hLmxlbmd0aCxzPWFbMF07Yz5vOysrbylp
PWFbb10sc1sxXTw9cj9pWzFdPnImJlcocyxpLG4pPjAmJisrdDppWzFdPD1yJiZXKHMsaSxuKTww
JiYtLXQscz1pO3JldHVybiAwIT09dH1mdW5jdGlvbiBzKGksYSxjLHMpe3ZhciBsPTAsZj0wO2lm
KG51bGw9PWl8fChsPXUoaSxjKSkhPT0oZj11KGEsYykpfHxvKGksYSk8MF5jPjApe2RvIHMucG9p
bnQoMD09PWx8fDM9PT1sP246ZSxsPjE/cjp0KTt3aGlsZSgobD0obCtjKzQpJTQpIT09Zil9ZWxz
ZSBzLnBvaW50KGFbMF0sYVsxXSl9ZnVuY3Rpb24gbCh1LGkpe3JldHVybiB1Pj1uJiZlPj11JiZp
Pj10JiZyPj1pfWZ1bmN0aW9uIGYobix0KXtsKG4sdCkmJmEucG9pbnQobix0KX1mdW5jdGlvbiBo
KCl7Ti5wb2ludD1wLGQmJmQucHVzaChtPVtdKSxTPSEwLHc9ITEsXz1iPTAvMH1mdW5jdGlvbiBn
KCl7diYmKHAoeSx4KSxNJiZ3JiZBLnJlam9pbigpLHYucHVzaChBLmJ1ZmZlcigpKSksTi5wb2lu
dD1mLHcmJmEubGluZUVuZCgpfWZ1bmN0aW9uIHAobix0KXtuPU1hdGgubWF4KC1rYyxNYXRoLm1p
bihrYyxuKSksdD1NYXRoLm1heCgta2MsTWF0aC5taW4oa2MsdCkpO3ZhciBlPWwobix0KTtpZihk
JiZtLnB1c2goW24sdF0pLFMpeT1uLHg9dCxNPWUsUz0hMSxlJiYoYS5saW5lU3RhcnQoKSxhLnBv
aW50KG4sdCkpO2Vsc2UgaWYoZSYmdylhLnBvaW50KG4sdCk7ZWxzZXt2YXIgcj17YTp7eDpfLHk6
Yn0sYjp7eDpuLHk6dH19O0Mocik/KHd8fChhLmxpbmVTdGFydCgpLGEucG9pbnQoci5hLngsci5h
LnkpKSxhLnBvaW50KHIuYi54LHIuYi55KSxlfHxhLmxpbmVFbmQoKSxrPSExKTplJiYoYS5saW5l
U3RhcnQoKSxhLnBvaW50KG4sdCksaz0hMSl9Xz1uLGI9dCx3PWV9dmFyIHYsZCxtLHkseCxNLF8s
Yix3LFMsayxFPWEsQT1OZSgpLEM9UGUobix0LGUsciksTj17cG9pbnQ6ZixsaW5lU3RhcnQ6aCxs
aW5lRW5kOmcscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7YT1BLHY9W10sZD1bXSxrPSEwfSxwb2x5
Z29uRW5kOmZ1bmN0aW9uKCl7YT1FLHY9Wm8ubWVyZ2Uodik7dmFyIHQ9YyhbbixyXSksZT1rJiZ0
LHU9di5sZW5ndGg7KGV8fHUpJiYoYS5wb2x5Z29uU3RhcnQoKSxlJiYoYS5saW5lU3RhcnQoKSxz
KG51bGwsbnVsbCwxLGEpLGEubGluZUVuZCgpKSx1JiZTZSh2LGksdCxzLGEpLGEucG9seWdvbkVu
ZCgpKSx2PWQ9bT1udWxsfX07cmV0dXJuIE59fWZ1bmN0aW9uIGplKG4sdCl7ZnVuY3Rpb24gZShl
LHIpe3JldHVybiBlPW4oZSxyKSx0KGVbMF0sZVsxXSl9cmV0dXJuIG4uaW52ZXJ0JiZ0LmludmVy
dCYmKGUuaW52ZXJ0PWZ1bmN0aW9uKGUscil7cmV0dXJuIGU9dC5pbnZlcnQoZSxyKSxlJiZuLmlu
dmVydChlWzBdLGVbMV0pfSksZX1mdW5jdGlvbiBIZShuKXt2YXIgdD0wLGU9YmEvMyxyPXRyKG4p
LHU9cih0LGUpO3JldHVybiB1LnBhcmFsbGVscz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD9yKHQ9blswXSpiYS8xODAsZT1uWzFdKmJhLzE4MCk6WzE4MCoodC9iYSksMTgwKihl
L2JhKV19LHV9ZnVuY3Rpb24gRmUobix0KXtmdW5jdGlvbiBlKG4sdCl7dmFyIGU9TWF0aC5zcXJ0
KGktMip1Kk1hdGguc2luKHQpKS91O3JldHVybltlKk1hdGguc2luKG4qPXUpLG8tZSpNYXRoLmNv
cyhuKV19dmFyIHI9TWF0aC5zaW4obiksdT0ocitNYXRoLnNpbih0KSkvMixpPTErciooMip1LXIp
LG89TWF0aC5zcXJ0KGkpL3U7cmV0dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7dmFyIGU9by10
O3JldHVybltNYXRoLmF0YW4yKG4sZSkvdSxHKChpLShuKm4rZSplKSp1KnUpLygyKnUpKV19LGV9
ZnVuY3Rpb24gT2UoKXtmdW5jdGlvbiBuKG4sdCl7QWMrPXUqbi1yKnQscj1uLHU9dH12YXIgdCxl
LHIsdTtUYy5wb2ludD1mdW5jdGlvbihpLG8pe1RjLnBvaW50PW4sdD1yPWksZT11PW99LFRjLmxp
bmVFbmQ9ZnVuY3Rpb24oKXtuKHQsZSl9fWZ1bmN0aW9uIFllKG4sdCl7Q2M+biYmKENjPW4pLG4+
emMmJih6Yz1uKSxOYz50JiYoTmM9dCksdD5MYyYmKExjPXQpfWZ1bmN0aW9uIEllKCl7ZnVuY3Rp
b24gbihuLHQpe28ucHVzaCgiTSIsbiwiLCIsdCxpKX1mdW5jdGlvbiB0KG4sdCl7by5wdXNoKCJN
IixuLCIsIix0KSxhLnBvaW50PWV9ZnVuY3Rpb24gZShuLHQpe28ucHVzaCgiTCIsbiwiLCIsdCl9
ZnVuY3Rpb24gcigpe2EucG9pbnQ9bn1mdW5jdGlvbiB1KCl7by5wdXNoKCJaIil9dmFyIGk9WmUo
NC41KSxvPVtdLGE9e3BvaW50Om4sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7YS5wb2ludD10fSxsaW5l
RW5kOnIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7YS5saW5lRW5kPXV9LHBvbHlnb25FbmQ6ZnVu
Y3Rpb24oKXthLmxpbmVFbmQ9cixhLnBvaW50PW59LHBvaW50UmFkaXVzOmZ1bmN0aW9uKG4pe3Jl
dHVybiBpPVplKG4pLGF9LHJlc3VsdDpmdW5jdGlvbigpe2lmKG8ubGVuZ3RoKXt2YXIgbj1vLmpv
aW4oIiIpO3JldHVybiBvPVtdLG59fX07cmV0dXJuIGF9ZnVuY3Rpb24gWmUobil7cmV0dXJuIm0w
LCIrbisiYSIrbisiLCIrbisiIDAgMSwxIDAsIistMipuKyJhIituKyIsIituKyIgMCAxLDEgMCwi
KzIqbisieiJ9ZnVuY3Rpb24gVmUobix0KXtwYys9bix2Yys9dCwrK2RjfWZ1bmN0aW9uIFhlKCl7
ZnVuY3Rpb24gbihuLHIpe3ZhciB1PW4tdCxpPXItZSxvPU1hdGguc3FydCh1KnUraSppKTttYys9
byoodCtuKS8yLHljKz1vKihlK3IpLzIseGMrPW8sVmUodD1uLGU9cil9dmFyIHQsZTtSYy5wb2lu
dD1mdW5jdGlvbihyLHUpe1JjLnBvaW50PW4sVmUodD1yLGU9dSl9fWZ1bmN0aW9uICRlKCl7UmMu
cG9pbnQ9VmV9ZnVuY3Rpb24gQmUoKXtmdW5jdGlvbiBuKG4sdCl7dmFyIGU9bi1yLGk9dC11LG89
TWF0aC5zcXJ0KGUqZStpKmkpO21jKz1vKihyK24pLzIseWMrPW8qKHUrdCkvMix4Yys9byxvPXUq
bi1yKnQsTWMrPW8qKHIrbiksX2MrPW8qKHUrdCksYmMrPTMqbyxWZShyPW4sdT10KX12YXIgdCxl
LHIsdTtSYy5wb2ludD1mdW5jdGlvbihpLG8pe1JjLnBvaW50PW4sVmUodD1yPWksZT11PW8pfSxS
Yy5saW5lRW5kPWZ1bmN0aW9uKCl7bih0LGUpfX1mdW5jdGlvbiBXZShuKXtmdW5jdGlvbiB0KHQs
ZSl7bi5tb3ZlVG8odCxlKSxuLmFyYyh0LGUsbywwLHdhKX1mdW5jdGlvbiBlKHQsZSl7bi5tb3Zl
VG8odCxlKSxhLnBvaW50PXJ9ZnVuY3Rpb24gcih0LGUpe24ubGluZVRvKHQsZSl9ZnVuY3Rpb24g
dSgpe2EucG9pbnQ9dH1mdW5jdGlvbiBpKCl7bi5jbG9zZVBhdGgoKX12YXIgbz00LjUsYT17cG9p
bnQ6dCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXthLnBvaW50PWV9LGxpbmVFbmQ6dSxwb2x5Z29uU3Rh
cnQ6ZnVuY3Rpb24oKXthLmxpbmVFbmQ9aX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2EubGluZUVu
ZD11LGEucG9pbnQ9dH0scG9pbnRSYWRpdXM6ZnVuY3Rpb24obil7cmV0dXJuIG89bixhfSxyZXN1
bHQ6dn07cmV0dXJuIGF9ZnVuY3Rpb24gSmUobil7ZnVuY3Rpb24gdChuKXtyZXR1cm4oYT9yOmUp
KG4pfWZ1bmN0aW9uIGUodCl7cmV0dXJuIFFlKHQsZnVuY3Rpb24oZSxyKXtlPW4oZSxyKSx0LnBv
aW50KGVbMF0sZVsxXSl9KX1mdW5jdGlvbiByKHQpe2Z1bmN0aW9uIGUoZSxyKXtlPW4oZSxyKSx0
LnBvaW50KGVbMF0sZVsxXSl9ZnVuY3Rpb24gcigpe3g9MC8wLFMucG9pbnQ9aSx0LmxpbmVTdGFy
dCgpfWZ1bmN0aW9uIGkoZSxyKXt2YXIgaT1sZShbZSxyXSksbz1uKGUscik7dSh4LE0seSxfLGIs
dyx4PW9bMF0sTT1vWzFdLHk9ZSxfPWlbMF0sYj1pWzFdLHc9aVsyXSxhLHQpLHQucG9pbnQoeCxN
KX1mdW5jdGlvbiBvKCl7Uy5wb2ludD1lLHQubGluZUVuZCgpfWZ1bmN0aW9uIGMoKXtyKCksUy5w
b2ludD1zLFMubGluZUVuZD1sfWZ1bmN0aW9uIHMobix0KXtpKGY9bixoPXQpLGc9eCxwPU0sdj1f
LGQ9YixtPXcsUy5wb2ludD1pfWZ1bmN0aW9uIGwoKXt1KHgsTSx5LF8sYix3LGcscCxmLHYsZCxt
LGEsdCksUy5saW5lRW5kPW8sbygpfXZhciBmLGgsZyxwLHYsZCxtLHkseCxNLF8sYix3LFM9e3Bv
aW50OmUsbGluZVN0YXJ0OnIsbGluZUVuZDpvLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3QucG9s
eWdvblN0YXJ0KCksUy5saW5lU3RhcnQ9Y30scG9seWdvbkVuZDpmdW5jdGlvbigpe3QucG9seWdv
bkVuZCgpLFMubGluZVN0YXJ0PXJ9fTtyZXR1cm4gU31mdW5jdGlvbiB1KHQsZSxyLGEsYyxzLGws
ZixoLGcscCx2LGQsbSl7dmFyIHk9bC10LHg9Zi1lLE09eSp5K3gqeDtpZihNPjQqaSYmZC0tKXt2
YXIgXz1hK2csYj1jK3Asdz1zK3YsUz1NYXRoLnNxcnQoXypfK2IqYit3KncpLGs9TWF0aC5hc2lu
KHcvPVMpLEU9dWEodWEodyktMSk8a2F8fHVhKHItaCk8a2E/KHIraCkvMjpNYXRoLmF0YW4yKGIs
XyksQT1uKEUsayksQz1BWzBdLE49QVsxXSx6PUMtdCxMPU4tZSxUPXgqei15Kkw7KFQqVC9NPml8
fHVhKCh5KnoreCpMKS9NLS41KT4uM3x8bz5hKmcrYypwK3MqdikmJih1KHQsZSxyLGEsYyxzLEMs
TixFLF8vPVMsYi89Uyx3LGQsbSksbS5wb2ludChDLE4pLHUoQyxOLEUsXyxiLHcsbCxmLGgsZyxw
LHYsZCxtKSl9fXZhciBpPS41LG89TWF0aC5jb3MoMzAqQWEpLGE9MTY7Ci1yZXR1cm4gdC5wcmVj
aXNpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9KGk9bipuKT4wJiYx
Nix0KTpNYXRoLnNxcnQoaSl9LHR9ZnVuY3Rpb24gR2Uobil7dmFyIHQ9SmUoZnVuY3Rpb24odCxl
KXtyZXR1cm4gbihbdCpDYSxlKkNhXSl9KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGVyKHQo
bikpfX1mdW5jdGlvbiBLZShuKXt0aGlzLnN0cmVhbT1ufWZ1bmN0aW9uIFFlKG4sdCl7cmV0dXJu
e3BvaW50OnQsc3BoZXJlOmZ1bmN0aW9uKCl7bi5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9u
KCl7bi5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe24ubGluZUVuZCgpfSxwb2x5Z29u
U3RhcnQ6ZnVuY3Rpb24oKXtuLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7
bi5wb2x5Z29uRW5kKCl9fX1mdW5jdGlvbiBucihuKXtyZXR1cm4gdHIoZnVuY3Rpb24oKXtyZXR1
cm4gbn0pKCl9ZnVuY3Rpb24gdHIobil7ZnVuY3Rpb24gdChuKXtyZXR1cm4gbj1hKG5bMF0qQWEs
blsxXSpBYSksW25bMF0qaCtjLHMtblsxXSpoXX1mdW5jdGlvbiBlKG4pe3JldHVybiBuPWEuaW52
ZXJ0KChuWzBdLWMpL2gsKHMtblsxXSkvaCksbiYmW25bMF0qQ2EsblsxXSpDYV19ZnVuY3Rpb24g
cigpe2E9amUobz1pcihtLHkseCksaSk7dmFyIG49aSh2LGQpO3JldHVybiBjPWctblswXSpoLHM9
cCtuWzFdKmgsdSgpfWZ1bmN0aW9uIHUoKXtyZXR1cm4gbCYmKGwudmFsaWQ9ITEsbD1udWxsKSx0
fXZhciBpLG8sYSxjLHMsbCxmPUplKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49aShuLHQpLFtuWzBd
KmgrYyxzLW5bMV0qaF19KSxoPTE1MCxnPTQ4MCxwPTI1MCx2PTAsZD0wLG09MCx5PTAseD0wLE09
U2MsXz13dCxiPW51bGwsdz1udWxsO3JldHVybiB0LnN0cmVhbT1mdW5jdGlvbihuKXtyZXR1cm4g
bCYmKGwudmFsaWQ9ITEpLGw9ZXIoTShvLGYoXyhuKSkpKSxsLnZhbGlkPSEwLGx9LHQuY2xpcEFu
Z2xlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhNPW51bGw9PW4/KGI9bixT
Yyk6RGUoKGI9K24pKkFhKSx1KCkpOmJ9LHQuY2xpcEV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odz1uLF89bj9VZShuWzBdWzBdLG5bMF1bMV0sblsxXVswXSxuWzFd
WzFdKTp3dCx1KCkpOnd9LHQuc2NhbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGg9K24scigpKTpofSx0LnRyYW5zbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZz0rblswXSxwPStuWzFdLHIoKSk6W2cscF19LHQuY2VudGVyPWZ1bmN0aW9uKG4p
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PW5bMF0lMzYwKkFhLGQ9blsxXSUzNjAqQWEscigp
KTpbdipDYSxkKkNhXX0sdC5yb3RhdGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KG09blswXSUzNjAqQWEseT1uWzFdJTM2MCpBYSx4PW4ubGVuZ3RoPjI/blsyXSUzNjAqQWE6
MCxyKCkpOlttKkNhLHkqQ2EseCpDYV19LFpvLnJlYmluZCh0LGYsInByZWNpc2lvbiIpLGZ1bmN0
aW9uKCl7cmV0dXJuIGk9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5pbnZlcnQ9aS5pbnZlcnQm
JmUscigpfX1mdW5jdGlvbiBlcihuKXtyZXR1cm4gUWUobixmdW5jdGlvbih0LGUpe24ucG9pbnQo
dCpBYSxlKkFhKX0pfWZ1bmN0aW9uIHJyKG4sdCl7cmV0dXJuW24sdF19ZnVuY3Rpb24gdXIobix0
KXtyZXR1cm5bbj5iYT9uLXdhOi1iYT5uP24rd2E6bix0XX1mdW5jdGlvbiBpcihuLHQsZSl7cmV0
dXJuIG4/dHx8ZT9qZShhcihuKSxjcih0LGUpKTphcihuKTp0fHxlP2NyKHQsZSk6dXJ9ZnVuY3Rp
b24gb3Iobil7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrPW4sW3Q+YmE/dC13YTotYmE+
dD90K3dhOnQsZV19fWZ1bmN0aW9uIGFyKG4pe3ZhciB0PW9yKG4pO3JldHVybiB0LmludmVydD1v
cigtbiksdH1mdW5jdGlvbiBjcihuLHQpe2Z1bmN0aW9uIGUobix0KXt2YXIgZT1NYXRoLmNvcyh0
KSxhPU1hdGguY29zKG4pKmUsYz1NYXRoLnNpbihuKSplLHM9TWF0aC5zaW4odCksbD1zKnIrYSp1
O3JldHVybltNYXRoLmF0YW4yKGMqaS1sKm8sYSpyLXMqdSksRyhsKmkrYypvKV19dmFyIHI9TWF0
aC5jb3MobiksdT1NYXRoLnNpbihuKSxpPU1hdGguY29zKHQpLG89TWF0aC5zaW4odCk7cmV0dXJu
IGUuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7dmFyIGU9TWF0aC5jb3ModCksYT1NYXRoLmNvcyhuKSpl
LGM9TWF0aC5zaW4obikqZSxzPU1hdGguc2luKHQpLGw9cyppLWMqbztyZXR1cm5bTWF0aC5hdGFu
MihjKmkrcypvLGEqcitsKnUpLEcobCpyLWEqdSldfSxlfWZ1bmN0aW9uIHNyKG4sdCl7dmFyIGU9
TWF0aC5jb3Mobikscj1NYXRoLnNpbihuKTtyZXR1cm4gZnVuY3Rpb24odSxpLG8sYSl7dmFyIGM9
byp0O251bGwhPXU/KHU9bHIoZSx1KSxpPWxyKGUsaSksKG8+MD9pPnU6dT5pKSYmKHUrPW8qd2Ep
KToodT1uK28qd2EsaT1uLS41KmMpO2Zvcih2YXIgcyxsPXU7bz4wP2w+aTppPmw7bC09YylhLnBv
aW50KChzPWRlKFtlLC1yKk1hdGguY29zKGwpLC1yKk1hdGguc2luKGwpXSkpWzBdLHNbMV0pfX1m
dW5jdGlvbiBscihuLHQpe3ZhciBlPWxlKHQpO2VbMF0tPW4sdmUoZSk7dmFyIHI9SigtZVsxXSk7
cmV0dXJuKCgtZVsyXTwwPy1yOnIpKzIqTWF0aC5QSS1rYSklKDIqTWF0aC5QSSl9ZnVuY3Rpb24g
ZnIobix0LGUpe3ZhciByPVpvLnJhbmdlKG4sdC1rYSxlKS5jb25jYXQodCk7cmV0dXJuIGZ1bmN0
aW9uKG4pe3JldHVybiByLm1hcChmdW5jdGlvbih0KXtyZXR1cm5bbix0XX0pfX1mdW5jdGlvbiBo
cihuLHQsZSl7dmFyIHI9Wm8ucmFuZ2Uobix0LWthLGUpLmNvbmNhdCh0KTtyZXR1cm4gZnVuY3Rp
b24obil7cmV0dXJuIHIubWFwKGZ1bmN0aW9uKHQpe3JldHVyblt0LG5dfSl9fWZ1bmN0aW9uIGdy
KG4pe3JldHVybiBuLnNvdXJjZX1mdW5jdGlvbiBwcihuKXtyZXR1cm4gbi50YXJnZXR9ZnVuY3Rp
b24gdnIobix0LGUscil7dmFyIHU9TWF0aC5jb3ModCksaT1NYXRoLnNpbih0KSxvPU1hdGguY29z
KHIpLGE9TWF0aC5zaW4ociksYz11Kk1hdGguY29zKG4pLHM9dSpNYXRoLnNpbihuKSxsPW8qTWF0
aC5jb3MoZSksZj1vKk1hdGguc2luKGUpLGg9MipNYXRoLmFzaW4oTWF0aC5zcXJ0KHR0KHItdCkr
dSpvKnR0KGUtbikpKSxnPTEvTWF0aC5zaW4oaCkscD1oP2Z1bmN0aW9uKG4pe3ZhciB0PU1hdGgu
c2luKG4qPWgpKmcsZT1NYXRoLnNpbihoLW4pKmcscj1lKmMrdCpsLHU9ZSpzK3QqZixvPWUqaSt0
KmE7cmV0dXJuW01hdGguYXRhbjIodSxyKSpDYSxNYXRoLmF0YW4yKG8sTWF0aC5zcXJ0KHIqcit1
KnUpKSpDYV19OmZ1bmN0aW9uKCl7cmV0dXJuW24qQ2EsdCpDYV19O3JldHVybiBwLmRpc3RhbmNl
PWgscH1mdW5jdGlvbiBkcigpe2Z1bmN0aW9uIG4obix1KXt2YXIgaT1NYXRoLnNpbih1Kj1BYSks
bz1NYXRoLmNvcyh1KSxhPXVhKChuKj1BYSktdCksYz1NYXRoLmNvcyhhKTtEYys9TWF0aC5hdGFu
MihNYXRoLnNxcnQoKGE9bypNYXRoLnNpbihhKSkqYSsoYT1yKmktZSpvKmMpKmEpLGUqaStyKm8q
YyksdD1uLGU9aSxyPW99dmFyIHQsZSxyO1BjLnBvaW50PWZ1bmN0aW9uKHUsaSl7dD11KkFhLGU9
TWF0aC5zaW4oaSo9QWEpLHI9TWF0aC5jb3MoaSksUGMucG9pbnQ9bn0sUGMubGluZUVuZD1mdW5j
dGlvbigpe1BjLnBvaW50PVBjLmxpbmVFbmQ9dn19ZnVuY3Rpb24gbXIobix0KXtmdW5jdGlvbiBl
KHQsZSl7dmFyIHI9TWF0aC5jb3ModCksdT1NYXRoLmNvcyhlKSxpPW4ocip1KTtyZXR1cm5baSp1
Kk1hdGguc2luKHQpLGkqTWF0aC5zaW4oZSldfXJldHVybiBlLmludmVydD1mdW5jdGlvbihuLGUp
e3ZhciByPU1hdGguc3FydChuKm4rZSplKSx1PXQociksaT1NYXRoLnNpbih1KSxvPU1hdGguY29z
KHUpO3JldHVybltNYXRoLmF0YW4yKG4qaSxyKm8pLE1hdGguYXNpbihyJiZlKmkvcildfSxlfWZ1
bmN0aW9uIHlyKG4sdCl7ZnVuY3Rpb24gZShuLHQpe28+MD8tU2Era2E+dCYmKHQ9LVNhK2thKTp0
PlNhLWthJiYodD1TYS1rYSk7dmFyIGU9by9NYXRoLnBvdyh1KHQpLGkpO3JldHVybltlKk1hdGgu
c2luKGkqbiksby1lKk1hdGguY29zKGkqbildfXZhciByPU1hdGguY29zKG4pLHU9ZnVuY3Rpb24o
bil7cmV0dXJuIE1hdGgudGFuKGJhLzQrbi8yKX0saT1uPT09dD9NYXRoLnNpbihuKTpNYXRoLmxv
ZyhyL01hdGguY29zKHQpKS9NYXRoLmxvZyh1KHQpL3UobikpLG89cipNYXRoLnBvdyh1KG4pLGkp
L2k7cmV0dXJuIGk/KGUuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7dmFyIGU9by10LHI9QihpKSpNYXRo
LnNxcnQobipuK2UqZSk7cmV0dXJuW01hdGguYXRhbjIobixlKS9pLDIqTWF0aC5hdGFuKE1hdGgu
cG93KG8vciwxL2kpKS1TYV19LGUpOk1yfWZ1bmN0aW9uIHhyKG4sdCl7ZnVuY3Rpb24gZShuLHQp
e3ZhciBlPWktdDtyZXR1cm5bZSpNYXRoLnNpbih1Km4pLGktZSpNYXRoLmNvcyh1Km4pXX12YXIg
cj1NYXRoLmNvcyhuKSx1PW49PT10P01hdGguc2luKG4pOihyLU1hdGguY29zKHQpKS8odC1uKSxp
PXIvdStuO3JldHVybiB1YSh1KTxrYT9ycjooZS5pbnZlcnQ9ZnVuY3Rpb24obix0KXt2YXIgZT1p
LXQ7cmV0dXJuW01hdGguYXRhbjIobixlKS91LGktQih1KSpNYXRoLnNxcnQobipuK2UqZSldfSxl
KX1mdW5jdGlvbiBNcihuLHQpe3JldHVybltuLE1hdGgubG9nKE1hdGgudGFuKGJhLzQrdC8yKSld
fWZ1bmN0aW9uIF9yKG4pe3ZhciB0LGU9bnIobikscj1lLnNjYWxlLHU9ZS50cmFuc2xhdGUsaT1l
LmNsaXBFeHRlbnQ7cmV0dXJuIGUuc2NhbGU9ZnVuY3Rpb24oKXt2YXIgbj1yLmFwcGx5KGUsYXJn
dW1lbnRzKTtyZXR1cm4gbj09PWU/dD9lLmNsaXBFeHRlbnQobnVsbCk6ZTpufSxlLnRyYW5zbGF0
ZT1mdW5jdGlvbigpe3ZhciBuPXUuYXBwbHkoZSxhcmd1bWVudHMpO3JldHVybiBuPT09ZT90P2Uu
Y2xpcEV4dGVudChudWxsKTplOm59LGUuY2xpcEV4dGVudD1mdW5jdGlvbihuKXt2YXIgbz1pLmFw
cGx5KGUsYXJndW1lbnRzKTtpZihvPT09ZSl7aWYodD1udWxsPT1uKXt2YXIgYT1iYSpyKCksYz11
KCk7aShbW2NbMF0tYSxjWzFdLWFdLFtjWzBdK2EsY1sxXSthXV0pfX1lbHNlIHQmJihvPW51bGwp
O3JldHVybiBvfSxlLmNsaXBFeHRlbnQobnVsbCl9ZnVuY3Rpb24gYnIobix0KXtyZXR1cm5bTWF0
aC5sb2coTWF0aC50YW4oYmEvNCt0LzIpKSwtbl19ZnVuY3Rpb24gd3Iobil7cmV0dXJuIG5bMF19
ZnVuY3Rpb24gU3Iobil7cmV0dXJuIG5bMV19ZnVuY3Rpb24ga3Iobil7Zm9yKHZhciB0PW4ubGVu
Z3RoLGU9WzAsMV0scj0yLHU9Mjt0PnU7dSsrKXtmb3IoO3I+MSYmVyhuW2Vbci0yXV0sbltlW3It
MV1dLG5bdV0pPD0wOyktLXI7ZVtyKytdPXV9cmV0dXJuIGUuc2xpY2UoMCxyKX1mdW5jdGlvbiBF
cihuLHQpe3JldHVybiBuWzBdLXRbMF18fG5bMV0tdFsxXX1mdW5jdGlvbiBBcihuLHQsZSl7cmV0
dXJuKGVbMF0tdFswXSkqKG5bMV0tdFsxXSk8KGVbMV0tdFsxXSkqKG5bMF0tdFswXSl9ZnVuY3Rp
b24gQ3Iobix0LGUscil7dmFyIHU9blswXSxpPWVbMF0sbz10WzBdLXUsYT1yWzBdLWksYz1uWzFd
LHM9ZVsxXSxsPXRbMV0tYyxmPXJbMV0tcyxoPShhKihjLXMpLWYqKHUtaSkpLyhmKm8tYSpsKTty
ZXR1cm5bdStoKm8sYytoKmxdfWZ1bmN0aW9uIE5yKG4pe3ZhciB0PW5bMF0sZT1uW24ubGVuZ3Ro
LTFdO3JldHVybiEodFswXS1lWzBdfHx0WzFdLWVbMV0pfWZ1bmN0aW9uIHpyKCl7R3IodGhpcyks
dGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIExyKG4pe3ZhciB0
PUJjLnBvcCgpfHxuZXcgenI7cmV0dXJuIHQuc2l0ZT1uLHR9ZnVuY3Rpb24gVHIobil7WXIobiks
VmMucmVtb3ZlKG4pLEJjLnB1c2gobiksR3Iobil9ZnVuY3Rpb24gcXIobil7dmFyIHQ9bi5jaXJj
bGUsZT10Lngscj10LmN5LHU9e3g6ZSx5OnJ9LGk9bi5QLG89bi5OLGE9W25dO1RyKG4pO2Zvcih2
YXIgYz1pO2MuY2lyY2xlJiZ1YShlLWMuY2lyY2xlLngpPGthJiZ1YShyLWMuY2lyY2xlLmN5KTxr
YTspaT1jLlAsYS51bnNoaWZ0KGMpLFRyKGMpLGM9aTthLnVuc2hpZnQoYyksWXIoYyk7Zm9yKHZh
ciBzPW87cy5jaXJjbGUmJnVhKGUtcy5jaXJjbGUueCk8a2EmJnVhKHItcy5jaXJjbGUuY3kpPGth
OylvPXMuTixhLnB1c2gocyksVHIocykscz1vO2EucHVzaChzKSxZcihzKTt2YXIgbCxmPWEubGVu
Z3RoO2ZvcihsPTE7Zj5sOysrbClzPWFbbF0sYz1hW2wtMV0sQnIocy5lZGdlLGMuc2l0ZSxzLnNp
dGUsdSk7Yz1hWzBdLHM9YVtmLTFdLHMuZWRnZT1YcihjLnNpdGUscy5zaXRlLG51bGwsdSksT3Io
YyksT3Iocyl9ZnVuY3Rpb24gUnIobil7Zm9yKHZhciB0LGUscix1LGk9bi54LG89bi55LGE9VmMu
XzthOylpZihyPURyKGEsbyktaSxyPmthKWE9YS5MO2Vsc2V7aWYodT1pLVByKGEsbyksISh1Pmth
KSl7cj4ta2E/KHQ9YS5QLGU9YSk6dT4ta2E/KHQ9YSxlPWEuTik6dD1lPWE7YnJlYWt9aWYoIWEu
Uil7dD1hO2JyZWFrfWE9YS5SfXZhciBjPUxyKG4pO2lmKFZjLmluc2VydCh0LGMpLHR8fGUpe2lm
KHQ9PT1lKXJldHVybiBZcih0KSxlPUxyKHQuc2l0ZSksVmMuaW5zZXJ0KGMsZSksYy5lZGdlPWUu
ZWRnZT1Ycih0LnNpdGUsYy5zaXRlKSxPcih0KSxPcihlKSx2b2lkIDA7aWYoIWUpcmV0dXJuIGMu
ZWRnZT1Ycih0LnNpdGUsYy5zaXRlKSx2b2lkIDA7WXIodCksWXIoZSk7dmFyIHM9dC5zaXRlLGw9
cy54LGY9cy55LGg9bi54LWwsZz1uLnktZixwPWUuc2l0ZSx2PXAueC1sLGQ9cC55LWYsbT0yKiho
KmQtZyp2KSx5PWgqaCtnKmcseD12KnYrZCpkLE09e3g6KGQqeS1nKngpL20rbCx5OihoKngtdip5
KS9tK2Z9O0JyKGUuZWRnZSxzLHAsTSksYy5lZGdlPVhyKHMsbixudWxsLE0pLGUuZWRnZT1Ycihu
LHAsbnVsbCxNKSxPcih0KSxPcihlKX19ZnVuY3Rpb24gRHIobix0KXt2YXIgZT1uLnNpdGUscj1l
LngsdT1lLnksaT11LXQ7aWYoIWkpcmV0dXJuIHI7dmFyIG89bi5QO2lmKCFvKXJldHVybi0xLzA7
ZT1vLnNpdGU7dmFyIGE9ZS54LGM9ZS55LHM9Yy10O2lmKCFzKXJldHVybiBhO3ZhciBsPWEtcixm
PTEvaS0xL3MsaD1sL3M7cmV0dXJuIGY/KC1oK01hdGguc3FydChoKmgtMipmKihsKmwvKC0yKnMp
LWMrcy8yK3UtaS8yKSkpL2YrcjoocithKS8yfWZ1bmN0aW9uIFByKG4sdCl7dmFyIGU9bi5OO2lm
KGUpcmV0dXJuIERyKGUsdCk7dmFyIHI9bi5zaXRlO3JldHVybiByLnk9PT10P3IueDoxLzB9ZnVu
Y3Rpb24gVXIobil7dGhpcy5zaXRlPW4sdGhpcy5lZGdlcz1bXX1mdW5jdGlvbiBqcihuKXtmb3Io
dmFyIHQsZSxyLHUsaSxvLGEsYyxzLGwsZj1uWzBdWzBdLGg9blsxXVswXSxnPW5bMF1bMV0scD1u
WzFdWzFdLHY9WmMsZD12Lmxlbmd0aDtkLS07KWlmKGk9dltkXSxpJiZpLnByZXBhcmUoKSlmb3Io
YT1pLmVkZ2VzLGM9YS5sZW5ndGgsbz0wO2M+bzspbD1hW29dLmVuZCgpLHI9bC54LHU9bC55LHM9
YVsrK28lY10uc3RhcnQoKSx0PXMueCxlPXMueSwodWEoci10KT5rYXx8dWEodS1lKT5rYSkmJihh
LnNwbGljZShvLDAsbmV3IFdyKCRyKGkuc2l0ZSxsLHVhKHItZik8a2EmJnAtdT5rYT97eDpmLHk6
dWEodC1mKTxrYT9lOnB9OnVhKHUtcCk8a2EmJmgtcj5rYT97eDp1YShlLXApPGthP3Q6aCx5OnB9
OnVhKHItaCk8a2EmJnUtZz5rYT97eDpoLHk6dWEodC1oKTxrYT9lOmd9OnVhKHUtZyk8a2EmJnIt
Zj5rYT97eDp1YShlLWcpPGthP3Q6Zix5Omd9Om51bGwpLGkuc2l0ZSxudWxsKSksKytjKX1mdW5j
dGlvbiBIcihuLHQpe3JldHVybiB0LmFuZ2xlLW4uYW5nbGV9ZnVuY3Rpb24gRnIoKXtHcih0aGlz
KSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24g
T3Iobil7dmFyIHQ9bi5QLGU9bi5OO2lmKHQmJmUpe3ZhciByPXQuc2l0ZSx1PW4uc2l0ZSxpPWUu
c2l0ZTtpZihyIT09aSl7dmFyIG89dS54LGE9dS55LGM9ci54LW8scz1yLnktYSxsPWkueC1vLGY9
aS55LWEsaD0yKihjKmYtcypsKTtpZighKGg+PS1FYSkpe3ZhciBnPWMqYytzKnMscD1sKmwrZipm
LHY9KGYqZy1zKnApL2gsZD0oYypwLWwqZykvaCxmPWQrYSxtPVdjLnBvcCgpfHxuZXcgRnI7bS5h
cmM9bixtLnNpdGU9dSxtLng9ditvLG0ueT1mK01hdGguc3FydCh2KnYrZCpkKSxtLmN5PWYsbi5j
aXJjbGU9bTtmb3IodmFyIHk9bnVsbCx4PSRjLl87eDspaWYobS55PHgueXx8bS55PT09eC55JiZt
Lng8PXgueCl7aWYoIXguTCl7eT14LlA7YnJlYWt9eD14Lkx9ZWxzZXtpZigheC5SKXt5PXg7YnJl
YWt9eD14LlJ9JGMuaW5zZXJ0KHksbSkseXx8KFhjPW0pfX19fWZ1bmN0aW9uIFlyKG4pe3ZhciB0
PW4uY2lyY2xlO3QmJih0LlB8fChYYz10Lk4pLCRjLnJlbW92ZSh0KSxXYy5wdXNoKHQpLEdyKHQp
LG4uY2lyY2xlPW51bGwpfWZ1bmN0aW9uIElyKG4pe2Zvcih2YXIgdCxlPUljLHI9UGUoblswXVsw
XSxuWzBdWzFdLG5bMV1bMF0sblsxXVsxXSksdT1lLmxlbmd0aDt1LS07KXQ9ZVt1XSwoIVpyKHQs
bil8fCFyKHQpfHx1YSh0LmEueC10LmIueCk8a2EmJnVhKHQuYS55LXQuYi55KTxrYSkmJih0LmE9
dC5iPW51bGwsZS5zcGxpY2UodSwxKSl9ZnVuY3Rpb24gWnIobix0KXt2YXIgZT1uLmI7aWYoZSly
ZXR1cm4hMDt2YXIgcix1LGk9bi5hLG89dFswXVswXSxhPXRbMV1bMF0sYz10WzBdWzFdLHM9dFsx
XVsxXSxsPW4ubCxmPW4ucixoPWwueCxnPWwueSxwPWYueCx2PWYueSxkPShoK3ApLzIsbT0oZyt2
KS8yO2lmKHY9PT1nKXtpZihvPmR8fGQ+PWEpcmV0dXJuO2lmKGg+cCl7aWYoaSl7aWYoaS55Pj1z
KXJldHVybn1lbHNlIGk9e3g6ZCx5OmN9O2U9e3g6ZCx5OnN9fWVsc2V7aWYoaSl7aWYoaS55PGMp
cmV0dXJufWVsc2UgaT17eDpkLHk6c307ZT17eDpkLHk6Y319fWVsc2UgaWYocj0oaC1wKS8odi1n
KSx1PW0tcipkLC0xPnJ8fHI+MSlpZihoPnApe2lmKGkpe2lmKGkueT49cylyZXR1cm59ZWxzZSBp
PXt4OihjLXUpL3IseTpjfTtlPXt4OihzLXUpL3IseTpzfX1lbHNle2lmKGkpe2lmKGkueTxjKXJl
dHVybn1lbHNlIGk9e3g6KHMtdSkvcix5OnN9O2U9e3g6KGMtdSkvcix5OmN9fWVsc2UgaWYodj5n
KXtpZihpKXtpZihpLng+PWEpcmV0dXJufWVsc2UgaT17eDpvLHk6cipvK3V9O2U9e3g6YSx5OnIq
YSt1fX1lbHNle2lmKGkpe2lmKGkueDxvKXJldHVybn1lbHNlIGk9e3g6YSx5OnIqYSt1fTtlPXt4
Om8seTpyKm8rdX19cmV0dXJuIG4uYT1pLG4uYj1lLCEwfWZ1bmN0aW9uIFZyKG4sdCl7dGhpcy5s
PW4sdGhpcy5yPXQsdGhpcy5hPXRoaXMuYj1udWxsfWZ1bmN0aW9uIFhyKG4sdCxlLHIpe3ZhciB1
PW5ldyBWcihuLHQpO3JldHVybiBJYy5wdXNoKHUpLGUmJkJyKHUsbix0LGUpLHImJkJyKHUsdCxu
LHIpLFpjW24uaV0uZWRnZXMucHVzaChuZXcgV3IodSxuLHQpKSxaY1t0LmldLmVkZ2VzLnB1c2go
bmV3IFdyKHUsdCxuKSksdX1mdW5jdGlvbiAkcihuLHQsZSl7dmFyIHI9bmV3IFZyKG4sbnVsbCk7
cmV0dXJuIHIuYT10LHIuYj1lLEljLnB1c2gocikscn1mdW5jdGlvbiBCcihuLHQsZSxyKXtuLmF8
fG4uYj9uLmw9PT1lP24uYj1yOm4uYT1yOihuLmE9cixuLmw9dCxuLnI9ZSl9ZnVuY3Rpb24gV3Io
bix0LGUpe3ZhciByPW4uYSx1PW4uYjt0aGlzLmVkZ2U9bix0aGlzLnNpdGU9dCx0aGlzLmFuZ2xl
PWU/TWF0aC5hdGFuMihlLnktdC55LGUueC10LngpOm4ubD09PXQ/TWF0aC5hdGFuMih1Lngtci54
LHIueS11LnkpOk1hdGguYXRhbjIoci54LXUueCx1Lnktci55KX1mdW5jdGlvbiBKcigpe3RoaXMu
Xz1udWxsfWZ1bmN0aW9uIEdyKG4pe24uVT1uLkM9bi5MPW4uUj1uLlA9bi5OPW51bGx9ZnVuY3Rp
b24gS3Iobix0KXt2YXIgZT10LHI9dC5SLHU9ZS5VO3U/dS5MPT09ZT91Lkw9cjp1LlI9cjpuLl89
cixyLlU9dSxlLlU9cixlLlI9ci5MLGUuUiYmKGUuUi5VPWUpLHIuTD1lfWZ1bmN0aW9uIFFyKG4s
dCl7dmFyIGU9dCxyPXQuTCx1PWUuVTt1P3UuTD09PWU/dS5MPXI6dS5SPXI6bi5fPXIsci5VPXUs
ZS5VPXIsZS5MPXIuUixlLkwmJihlLkwuVT1lKSxyLlI9ZX1mdW5jdGlvbiBudShuKXtmb3IoO24u
TDspbj1uLkw7cmV0dXJuIG59ZnVuY3Rpb24gdHUobix0KXt2YXIgZSxyLHUsaT1uLnNvcnQoZXUp
LnBvcCgpO2ZvcihJYz1bXSxaYz1uZXcgQXJyYXkobi5sZW5ndGgpLFZjPW5ldyBKciwkYz1uZXcg
SnI7OylpZih1PVhjLGkmJighdXx8aS55PHUueXx8aS55PT09dS55JiZpLng8dS54KSkoaS54IT09
ZXx8aS55IT09cikmJihaY1tpLmldPW5ldyBVcihpKSxScihpKSxlPWkueCxyPWkueSksaT1uLnBv
cCgpO2Vsc2V7aWYoIXUpYnJlYWs7cXIodS5hcmMpfXQmJihJcih0KSxqcih0KSk7dmFyIG89e2Nl
bGxzOlpjLGVkZ2VzOkljfTtyZXR1cm4gVmM9JGM9SWM9WmM9bnVsbCxvfWZ1bmN0aW9uIGV1KG4s
dCl7cmV0dXJuIHQueS1uLnl8fHQueC1uLnh9ZnVuY3Rpb24gcnUobix0LGUpe3JldHVybihuLngt
ZS54KSoodC55LW4ueSktKG4ueC10LngpKihlLnktbi55KX1mdW5jdGlvbiB1dShuKXtyZXR1cm4g
bi54fWZ1bmN0aW9uIGl1KG4pe3JldHVybiBuLnl9ZnVuY3Rpb24gb3UoKXtyZXR1cm57bGVhZjoh
MCxub2RlczpbXSxwb2ludDpudWxsLHg6bnVsbCx5Om51bGx9fWZ1bmN0aW9uIGF1KG4sdCxlLHIs
dSxpKXtpZighbih0LGUscix1LGkpKXt2YXIgbz0uNSooZSt1KSxhPS41KihyK2kpLGM9dC5ub2Rl
cztjWzBdJiZhdShuLGNbMF0sZSxyLG8sYSksY1sxXSYmYXUobixjWzFdLG8scix1LGEpLGNbMl0m
JmF1KG4sY1syXSxlLGEsbyxpKSxjWzNdJiZhdShuLGNbM10sbyxhLHUsaSl9fWZ1bmN0aW9uIGN1
KG4sdCl7bj1aby5yZ2IobiksdD1aby5yZ2IodCk7dmFyIGU9bi5yLHI9bi5nLHU9bi5iLGk9dC5y
LWUsbz10LmctcixhPXQuYi11O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4iIyIrZHQoTWF0aC5y
b3VuZChlK2kqbikpK2R0KE1hdGgucm91bmQocitvKm4pKStkdChNYXRoLnJvdW5kKHUrYSpuKSl9
fWZ1bmN0aW9uIHN1KG4sdCl7dmFyIGUscj17fSx1PXt9O2ZvcihlIGluIG4pZSBpbiB0P3JbZV09
aHUobltlXSx0W2VdKTp1W2VdPW5bZV07Zm9yKGUgaW4gdCllIGluIG58fCh1W2VdPXRbZV0pO3Jl
dHVybiBmdW5jdGlvbihuKXtmb3IoZSBpbiByKXVbZV09cltlXShuKTtyZXR1cm4gdX19ZnVuY3Rp
b24gbHUobix0KXtyZXR1cm4gdC09bj0rbixmdW5jdGlvbihlKXtyZXR1cm4gbit0KmV9fWZ1bmN0
aW9uIGZ1KG4sdCl7dmFyIGUscix1LGk9R2MubGFzdEluZGV4PUtjLmxhc3RJbmRleD0wLG89LTEs
YT1bXSxjPVtdO2ZvcihuKz0iIix0Kz0iIjsoZT1HYy5leGVjKG4pKSYmKHI9S2MuZXhlYyh0KSk7
KSh1PXIuaW5kZXgpPmkmJih1PXQuc3Vic3RyaW5nKGksdSksYVtvXT9hW29dKz11OmFbKytvXT11
KSwoZT1lWzBdKT09PShyPXJbMF0pP2Fbb10/YVtvXSs9cjphWysrb109cjooYVsrK29dPW51bGws
Yy5wdXNoKHtpOm8seDpsdShlLHIpfSkpLGk9S2MubGFzdEluZGV4O3JldHVybiBpPHQubGVuZ3Ro
JiYodT10LnN1YnN0cmluZyhpKSxhW29dP2Fbb10rPXU6YVsrK29dPXUpLGEubGVuZ3RoPDI/Y1sw
XT8odD1jWzBdLngsZnVuY3Rpb24obil7cmV0dXJuIHQobikrIiJ9KTpmdW5jdGlvbigpe3JldHVy
biB0fToodD1jLmxlbmd0aCxmdW5jdGlvbihuKXtmb3IodmFyIGUscj0wO3Q+cjsrK3IpYVsoZT1j
W3JdKS5pXT1lLngobik7cmV0dXJuIGEuam9pbigiIil9KX1mdW5jdGlvbiBodShuLHQpe2Zvcih2
YXIgZSxyPVpvLmludGVycG9sYXRvcnMubGVuZ3RoOy0tcj49MCYmIShlPVpvLmludGVycG9sYXRv
cnNbcl0obix0KSk7KTtyZXR1cm4gZX1mdW5jdGlvbiBndShuLHQpe3ZhciBlLHI9W10sdT1bXSxp
PW4ubGVuZ3RoLG89dC5sZW5ndGgsYT1NYXRoLm1pbihuLmxlbmd0aCx0Lmxlbmd0aCk7Zm9yKGU9
MDthPmU7KytlKXIucHVzaChodShuW2VdLHRbZV0pKTtmb3IoO2k+ZTsrK2UpdVtlXT1uW2VdO2Zv
cig7bz5lOysrZSl1W2VdPXRbZV07cmV0dXJuIGZ1bmN0aW9uKG4pe2ZvcihlPTA7YT5lOysrZSl1
W2VdPXJbZV0obik7cmV0dXJuIHV9fWZ1bmN0aW9uIHB1KG4pe3JldHVybiBmdW5jdGlvbih0KXty
ZXR1cm4gMD49dD8wOnQ+PTE/MTpuKHQpfX1mdW5jdGlvbiB2dShuKXtyZXR1cm4gZnVuY3Rpb24o
dCl7cmV0dXJuIDEtbigxLXQpfX1mdW5jdGlvbiBkdShuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0
dXJuLjUqKC41PnQ/bigyKnQpOjItbigyLTIqdCkpfX1mdW5jdGlvbiBtdShuKXtyZXR1cm4gbipu
fWZ1bmN0aW9uIHl1KG4pe3JldHVybiBuKm4qbn1mdW5jdGlvbiB4dShuKXtpZigwPj1uKXJldHVy
biAwO2lmKG4+PTEpcmV0dXJuIDE7dmFyIHQ9bipuLGU9dCpuO3JldHVybiA0KiguNT5uP2U6Myoo
bi10KStlLS43NSl9ZnVuY3Rpb24gTXUobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBNYXRo
LnBvdyh0LG4pfX1mdW5jdGlvbiBfdShuKXtyZXR1cm4gMS1NYXRoLmNvcyhuKlNhKX1mdW5jdGlv
biBidShuKXtyZXR1cm4gTWF0aC5wb3coMiwxMCoobi0xKSl9ZnVuY3Rpb24gd3Uobil7cmV0dXJu
IDEtTWF0aC5zcXJ0KDEtbipuKX1mdW5jdGlvbiBTdShuLHQpe3ZhciBlO3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPDImJih0PS40NSksYXJndW1lbnRzLmxlbmd0aD9lPXQvd2EqTWF0aC5hc2luKDEv
bik6KG49MSxlPXQvNCksZnVuY3Rpb24ocil7cmV0dXJuIDErbipNYXRoLnBvdygyLC0xMCpyKSpN
YXRoLnNpbigoci1lKSp3YS90KX19ZnVuY3Rpb24ga3Uobil7cmV0dXJuIG58fChuPTEuNzAxNTgp
LGZ1bmN0aW9uKHQpe3JldHVybiB0KnQqKChuKzEpKnQtbil9fWZ1bmN0aW9uIEV1KG4pe3JldHVy
biAxLzIuNzU+bj83LjU2MjUqbipuOjIvMi43NT5uPzcuNTYyNSoobi09MS41LzIuNzUpKm4rLjc1
OjIuNS8yLjc1Pm4/Ny41NjI1KihuLT0yLjI1LzIuNzUpKm4rLjkzNzU6Ny41NjI1KihuLT0yLjYy
NS8yLjc1KSpuKy45ODQzNzV9ZnVuY3Rpb24gQXUobix0KXtuPVpvLmhjbChuKSx0PVpvLmhjbCh0
KTt2YXIgZT1uLmgscj1uLmMsdT1uLmwsaT10LmgtZSxvPXQuYy1yLGE9dC5sLXU7cmV0dXJuIGlz
TmFOKG8pJiYobz0wLHI9aXNOYU4ocik/dC5jOnIpLGlzTmFOKGkpPyhpPTAsZT1pc05hTihlKT90
Lmg6ZSk6aT4xODA/aS09MzYwOi0xODA+aSYmKGkrPTM2MCksZnVuY3Rpb24obil7cmV0dXJuIG90
KGUraSpuLHIrbypuLHUrYSpuKSsiIn19ZnVuY3Rpb24gQ3Uobix0KXtuPVpvLmhzbChuKSx0PVpv
LmhzbCh0KTt2YXIgZT1uLmgscj1uLnMsdT1uLmwsaT10LmgtZSxvPXQucy1yLGE9dC5sLXU7cmV0
dXJuIGlzTmFOKG8pJiYobz0wLHI9aXNOYU4ocik/dC5zOnIpLGlzTmFOKGkpPyhpPTAsZT1pc05h
TihlKT90Lmg6ZSk6aT4xODA/aS09MzYwOi0xODA+aSYmKGkrPTM2MCksZnVuY3Rpb24obil7cmV0
dXJuIHV0KGUraSpuLHIrbypuLHUrYSpuKSsiIn19ZnVuY3Rpb24gTnUobix0KXtuPVpvLmxhYihu
KSx0PVpvLmxhYih0KTt2YXIgZT1uLmwscj1uLmEsdT1uLmIsaT10LmwtZSxvPXQuYS1yLGE9dC5i
LXU7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBjdChlK2kqbixyK28qbix1K2EqbikrIiJ9fWZ1
bmN0aW9uIHp1KG4sdCl7cmV0dXJuIHQtPW4sZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucm91bmQo
bit0KmUpfX1mdW5jdGlvbiBMdShuKXt2YXIgdD1bbi5hLG4uYl0sZT1bbi5jLG4uZF0scj1xdSh0
KSx1PVR1KHQsZSksaT1xdShSdShlLHQsLXUpKXx8MDt0WzBdKmVbMV08ZVswXSp0WzFdJiYodFsw
XSo9LTEsdFsxXSo9LTEscio9LTEsdSo9LTEpLHRoaXMucm90YXRlPShyP01hdGguYXRhbjIodFsx
XSx0WzBdKTpNYXRoLmF0YW4yKC1lWzBdLGVbMV0pKSpDYSx0aGlzLnRyYW5zbGF0ZT1bbi5lLG4u
Zl0sdGhpcy5zY2FsZT1bcixpXSx0aGlzLnNrZXc9aT9NYXRoLmF0YW4yKHUsaSkqQ2E6MH1mdW5j
dGlvbiBUdShuLHQpe3JldHVybiBuWzBdKnRbMF0rblsxXSp0WzFdfWZ1bmN0aW9uIHF1KG4pe3Zh
ciB0PU1hdGguc3FydChUdShuLG4pKTtyZXR1cm4gdCYmKG5bMF0vPXQsblsxXS89dCksdH1mdW5j
dGlvbiBSdShuLHQsZSl7cmV0dXJuIG5bMF0rPWUqdFswXSxuWzFdKz1lKnRbMV0sbn1mdW5jdGlv
biBEdShuLHQpe3ZhciBlLHI9W10sdT1bXSxpPVpvLnRyYW5zZm9ybShuKSxvPVpvLnRyYW5zZm9y
bSh0KSxhPWkudHJhbnNsYXRlLGM9by50cmFuc2xhdGUscz1pLnJvdGF0ZSxsPW8ucm90YXRlLGY9
aS5za2V3LGg9by5za2V3LGc9aS5zY2FsZSxwPW8uc2NhbGU7cmV0dXJuIGFbMF0hPWNbMF18fGFb
MV0hPWNbMV0/KHIucHVzaCgidHJhbnNsYXRlKCIsbnVsbCwiLCIsbnVsbCwiKSIpLHUucHVzaCh7
aToxLHg6bHUoYVswXSxjWzBdKX0se2k6Myx4Omx1KGFbMV0sY1sxXSl9KSk6Y1swXXx8Y1sxXT9y
LnB1c2goInRyYW5zbGF0ZSgiK2MrIikiKTpyLnB1c2goIiIpLHMhPWw/KHMtbD4xODA/bCs9MzYw
Omwtcz4xODAmJihzKz0zNjApLHUucHVzaCh7aTpyLnB1c2goci5wb3AoKSsicm90YXRlKCIsbnVs
bCwiKSIpLTIseDpsdShzLGwpfSkpOmwmJnIucHVzaChyLnBvcCgpKyJyb3RhdGUoIitsKyIpIiks
ZiE9aD91LnB1c2goe2k6ci5wdXNoKHIucG9wKCkrInNrZXdYKCIsbnVsbCwiKSIpLTIseDpsdShm
LGgpfSk6aCYmci5wdXNoKHIucG9wKCkrInNrZXdYKCIraCsiKSIpLGdbMF0hPXBbMF18fGdbMV0h
PXBbMV0/KGU9ci5wdXNoKHIucG9wKCkrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpLHUucHVz
aCh7aTplLTQseDpsdShnWzBdLHBbMF0pfSx7aTplLTIseDpsdShnWzFdLHBbMV0pfSkpOigxIT1w
WzBdfHwxIT1wWzFdKSYmci5wdXNoKHIucG9wKCkrInNjYWxlKCIrcCsiKSIpLGU9dS5sZW5ndGgs
ZnVuY3Rpb24obil7Zm9yKHZhciB0LGk9LTE7KytpPGU7KXJbKHQ9dVtpXSkuaV09dC54KG4pO3Jl
dHVybiByLmpvaW4oIiIpfX1mdW5jdGlvbiBQdShuLHQpe3JldHVybiB0PXQtKG49K24pPzEvKHQt
bik6MCxmdW5jdGlvbihlKXtyZXR1cm4oZS1uKSp0fX1mdW5jdGlvbiBVdShuLHQpe3JldHVybiB0
PXQtKG49K24pPzEvKHQtbik6MCxmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1p
bigxLChlLW4pKnQpKX19ZnVuY3Rpb24ganUobil7Zm9yKHZhciB0PW4uc291cmNlLGU9bi50YXJn
ZXQscj1GdSh0LGUpLHU9W3RdO3QhPT1yOyl0PXQucGFyZW50LHUucHVzaCh0KTtmb3IodmFyIGk9
dS5sZW5ndGg7ZSE9PXI7KXUuc3BsaWNlKGksMCxlKSxlPWUucGFyZW50O3JldHVybiB1fWZ1bmN0
aW9uIEh1KG4pe2Zvcih2YXIgdD1bXSxlPW4ucGFyZW50O251bGwhPWU7KXQucHVzaChuKSxuPWUs
ZT1lLnBhcmVudDtyZXR1cm4gdC5wdXNoKG4pLHR9ZnVuY3Rpb24gRnUobix0KXtpZihuPT09dCly
ZXR1cm4gbjtmb3IodmFyIGU9SHUobikscj1IdSh0KSx1PWUucG9wKCksaT1yLnBvcCgpLG89bnVs
bDt1PT09aTspbz11LHU9ZS5wb3AoKSxpPXIucG9wKCk7cmV0dXJuIG99ZnVuY3Rpb24gT3Uobil7
bi5maXhlZHw9Mn1mdW5jdGlvbiBZdShuKXtuLmZpeGVkJj0tN31mdW5jdGlvbiBJdShuKXtuLmZp
eGVkfD00LG4ucHg9bi54LG4ucHk9bi55fWZ1bmN0aW9uIFp1KG4pe24uZml4ZWQmPS01fWZ1bmN0
aW9uIFZ1KG4sdCxlKXt2YXIgcj0wLHU9MDtpZihuLmNoYXJnZT0wLCFuLmxlYWYpZm9yKHZhciBp
LG89bi5ub2RlcyxhPW8ubGVuZ3RoLGM9LTE7KytjPGE7KWk9b1tjXSxudWxsIT1pJiYoVnUoaSx0
LGUpLG4uY2hhcmdlKz1pLmNoYXJnZSxyKz1pLmNoYXJnZSppLmN4LHUrPWkuY2hhcmdlKmkuY3kp
O2lmKG4ucG9pbnQpe24ubGVhZnx8KG4ucG9pbnQueCs9TWF0aC5yYW5kb20oKS0uNSxuLnBvaW50
LnkrPU1hdGgucmFuZG9tKCktLjUpO3ZhciBzPXQqZVtuLnBvaW50LmluZGV4XTtuLmNoYXJnZSs9
bi5wb2ludENoYXJnZT1zLHIrPXMqbi5wb2ludC54LHUrPXMqbi5wb2ludC55fW4uY3g9ci9uLmNo
YXJnZSxuLmN5PXUvbi5jaGFyZ2V9ZnVuY3Rpb24gWHUobix0KXtyZXR1cm4gWm8ucmViaW5kKG4s
dCwic29ydCIsImNoaWxkcmVuIiwidmFsdWUiKSxuLm5vZGVzPW4sbi5saW5rcz1LdSxufWZ1bmN0
aW9uICR1KG4sdCl7Zm9yKHZhciBlPVtuXTtudWxsIT0obj1lLnBvcCgpKTspaWYodChuKSwodT1u
LmNoaWxkcmVuKSYmKHI9dS5sZW5ndGgpKWZvcih2YXIgcix1Oy0tcj49MDspZS5wdXNoKHVbcl0p
fWZ1bmN0aW9uIEJ1KG4sdCl7Zm9yKHZhciBlPVtuXSxyPVtdO251bGwhPShuPWUucG9wKCkpOylp
ZihyLnB1c2gobiksKGk9bi5jaGlsZHJlbikmJih1PWkubGVuZ3RoKSlmb3IodmFyIHUsaSxvPS0x
Oysrbzx1OyllLnB1c2goaVtvXSk7Zm9yKDtudWxsIT0obj1yLnBvcCgpKTspdChuKX1mdW5jdGlv
biBXdShuKXtyZXR1cm4gbi5jaGlsZHJlbn1mdW5jdGlvbiBKdShuKXtyZXR1cm4gbi52YWx1ZX1m
dW5jdGlvbiBHdShuLHQpe3JldHVybiB0LnZhbHVlLW4udmFsdWV9ZnVuY3Rpb24gS3Uobil7cmV0
dXJuIFpvLm1lcmdlKG4ubWFwKGZ1bmN0aW9uKG4pe3JldHVybihuLmNoaWxkcmVufHxbXSkubWFw
KGZ1bmN0aW9uKHQpe3JldHVybntzb3VyY2U6bix0YXJnZXQ6dH19KX0pKX1mdW5jdGlvbiBRdShu
KXtyZXR1cm4gbi54fWZ1bmN0aW9uIG5pKG4pe3JldHVybiBuLnl9ZnVuY3Rpb24gdGkobix0LGUp
e24ueTA9dCxuLnk9ZX1mdW5jdGlvbiBlaShuKXtyZXR1cm4gWm8ucmFuZ2Uobi5sZW5ndGgpfWZ1
bmN0aW9uIHJpKG4pe2Zvcih2YXIgdD0tMSxlPW5bMF0ubGVuZ3RoLHI9W107Kyt0PGU7KXJbdF09
MDtyZXR1cm4gcn1mdW5jdGlvbiB1aShuKXtmb3IodmFyIHQsZT0xLHI9MCx1PW5bMF1bMV0saT1u
Lmxlbmd0aDtpPmU7KytlKSh0PW5bZV1bMV0pPnUmJihyPWUsdT10KTtyZXR1cm4gcn1mdW5jdGlv
biBpaShuKXtyZXR1cm4gbi5yZWR1Y2Uob2ksMCl9ZnVuY3Rpb24gb2kobix0KXtyZXR1cm4gbit0
WzFdfWZ1bmN0aW9uIGFpKG4sdCl7cmV0dXJuIGNpKG4sTWF0aC5jZWlsKE1hdGgubG9nKHQubGVu
Z3RoKS9NYXRoLkxOMisxKSl9ZnVuY3Rpb24gY2kobix0KXtmb3IodmFyIGU9LTEscj0rblswXSx1
PShuWzFdLXIpL3QsaT1bXTsrK2U8PXQ7KWlbZV09dSplK3I7cmV0dXJuIGl9ZnVuY3Rpb24gc2ko
bil7cmV0dXJuW1pvLm1pbihuKSxaby5tYXgobildfWZ1bmN0aW9uIGxpKG4sdCl7cmV0dXJuIG4u
dmFsdWUtdC52YWx1ZX1mdW5jdGlvbiBmaShuLHQpe3ZhciBlPW4uX3BhY2tfbmV4dDtuLl9wYWNr
X25leHQ9dCx0Ll9wYWNrX3ByZXY9bix0Ll9wYWNrX25leHQ9ZSxlLl9wYWNrX3ByZXY9dH1mdW5j
dGlvbiBoaShuLHQpe24uX3BhY2tfbmV4dD10LHQuX3BhY2tfcHJldj1ufWZ1bmN0aW9uIGdpKG4s
dCl7dmFyIGU9dC54LW4ueCxyPXQueS1uLnksdT1uLnIrdC5yO3JldHVybi45OTkqdSp1PmUqZSty
KnJ9ZnVuY3Rpb24gcGkobil7ZnVuY3Rpb24gdChuKXtsPU1hdGgubWluKG4ueC1uLnIsbCksZj1N
YXRoLm1heChuLngrbi5yLGYpLGg9TWF0aC5taW4obi55LW4ucixoKSxnPU1hdGgubWF4KG4ueStu
LnIsZyl9aWYoKGU9bi5jaGlsZHJlbikmJihzPWUubGVuZ3RoKSl7dmFyIGUscix1LGksbyxhLGMs
cyxsPTEvMCxmPS0xLzAsaD0xLzAsZz0tMS8wO2lmKGUuZm9yRWFjaCh2aSkscj1lWzBdLHIueD0t
ci5yLHIueT0wLHQocikscz4xJiYodT1lWzFdLHUueD11LnIsdS55PTAsdCh1KSxzPjIpKWZvcihp
PWVbMl0seWkocix1LGkpLHQoaSksZmkocixpKSxyLl9wYWNrX3ByZXY9aSxmaShpLHUpLHU9ci5f
cGFja19uZXh0LG89MztzPm87bysrKXt5aShyLHUsaT1lW29dKTt2YXIgcD0wLHY9MSxkPTE7Zm9y
KGE9dS5fcGFja19uZXh0O2EhPT11O2E9YS5fcGFja19uZXh0LHYrKylpZihnaShhLGkpKXtwPTE7
YnJlYWt9aWYoMT09cClmb3IoYz1yLl9wYWNrX3ByZXY7YyE9PWEuX3BhY2tfcHJldiYmIWdpKGMs
aSk7Yz1jLl9wYWNrX3ByZXYsZCsrKTtwPyhkPnZ8fHY9PWQmJnUucjxyLnI/aGkocix1PWEpOmhp
KHI9Yyx1KSxvLS0pOihmaShyLGkpLHU9aSx0KGkpKX12YXIgbT0obCtmKS8yLHk9KGgrZykvMix4
PTA7Zm9yKG89MDtzPm87bysrKWk9ZVtvXSxpLngtPW0saS55LT15LHg9TWF0aC5tYXgoeCxpLnIr
TWF0aC5zcXJ0KGkueCppLngraS55KmkueSkpO24ucj14LGUuZm9yRWFjaChkaSl9fWZ1bmN0aW9u
IHZpKG4pe24uX3BhY2tfbmV4dD1uLl9wYWNrX3ByZXY9bn1mdW5jdGlvbiBkaShuKXtkZWxldGUg
bi5fcGFja19uZXh0LGRlbGV0ZSBuLl9wYWNrX3ByZXZ9ZnVuY3Rpb24gbWkobix0LGUscil7dmFy
IHU9bi5jaGlsZHJlbjtpZihuLng9dCs9cipuLngsbi55PWUrPXIqbi55LG4ucio9cix1KWZvcih2
YXIgaT0tMSxvPXUubGVuZ3RoOysraTxvOyltaSh1W2ldLHQsZSxyKX1mdW5jdGlvbiB5aShuLHQs
ZSl7dmFyIHI9bi5yK2Uucix1PXQueC1uLngsaT10Lnktbi55O2lmKHImJih1fHxpKSl7dmFyIG89
dC5yK2UucixhPXUqdStpKmk7byo9byxyKj1yO3ZhciBjPS41KyhyLW8pLygyKmEpLHM9TWF0aC5z
cXJ0KE1hdGgubWF4KDAsMipvKihyK2EpLShyLT1hKSpyLW8qbykpLygyKmEpO2UueD1uLngrYyp1
K3MqaSxlLnk9bi55K2MqaS1zKnV9ZWxzZSBlLng9bi54K3IsZS55PW4ueX1mdW5jdGlvbiB4aShu
LHQpe3JldHVybiBuLnBhcmVudD09dC5wYXJlbnQ/MToyfWZ1bmN0aW9uIE1pKG4pe3ZhciB0PW4u
Y2hpbGRyZW47cmV0dXJuIHQubGVuZ3RoP3RbMF06bi50fWZ1bmN0aW9uIF9pKG4pe3ZhciB0LGU9
bi5jaGlsZHJlbjtyZXR1cm4odD1lLmxlbmd0aCk/ZVt0LTFdOm4udH1mdW5jdGlvbiBiaShuLHQs
ZSl7dmFyIHI9ZS8odC5pLW4uaSk7dC5jLT1yLHQucys9ZSxuLmMrPXIsdC56Kz1lLHQubSs9ZX1m
dW5jdGlvbiB3aShuKXtmb3IodmFyIHQsZT0wLHI9MCx1PW4uY2hpbGRyZW4saT11Lmxlbmd0aDst
LWk+PTA7KXQ9dVtpXSx0LnorPWUsdC5tKz1lLGUrPXQucysocis9dC5jKX1mdW5jdGlvbiBTaShu
LHQsZSl7cmV0dXJuIG4uYS5wYXJlbnQ9PT10LnBhcmVudD9uLmE6ZX1mdW5jdGlvbiBraShuKXty
ZXR1cm4gMStaby5tYXgobixmdW5jdGlvbihuKXtyZXR1cm4gbi55fSl9ZnVuY3Rpb24gRWkobil7
cmV0dXJuIG4ucmVkdWNlKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4rdC54fSwwKS9uLmxlbmd0aH1m
dW5jdGlvbiBBaShuKXt2YXIgdD1uLmNoaWxkcmVuO3JldHVybiB0JiZ0Lmxlbmd0aD9BaSh0WzBd
KTpufWZ1bmN0aW9uIENpKG4pe3ZhciB0LGU9bi5jaGlsZHJlbjtyZXR1cm4gZSYmKHQ9ZS5sZW5n
dGgpP0NpKGVbdC0xXSk6bn1mdW5jdGlvbiBOaShuKXtyZXR1cm57eDpuLngseTpuLnksZHg6bi5k
eCxkeTpuLmR5fX1mdW5jdGlvbiB6aShuLHQpe3ZhciBlPW4ueCt0WzNdLHI9bi55K3RbMF0sdT1u
LmR4LXRbMV0tdFszXSxpPW4uZHktdFswXS10WzJdO3JldHVybiAwPnUmJihlKz11LzIsdT0wKSww
PmkmJihyKz1pLzIsaT0wKSx7eDplLHk6cixkeDp1LGR5Oml9fWZ1bmN0aW9uIExpKG4pe3ZhciB0
PW5bMF0sZT1uW24ubGVuZ3RoLTFdO3JldHVybiBlPnQ/W3QsZV06W2UsdF19ZnVuY3Rpb24gVGko
bil7cmV0dXJuIG4ucmFuZ2VFeHRlbnQ/bi5yYW5nZUV4dGVudCgpOkxpKG4ucmFuZ2UoKSl9ZnVu
Y3Rpb24gcWkobix0LGUscil7dmFyIHU9ZShuWzBdLG5bMV0pLGk9cih0WzBdLHRbMV0pO3JldHVy
biBmdW5jdGlvbihuKXtyZXR1cm4gaSh1KG4pKX19ZnVuY3Rpb24gUmkobix0KXt2YXIgZSxyPTAs
dT1uLmxlbmd0aC0xLGk9bltyXSxvPW5bdV07cmV0dXJuIGk+byYmKGU9cixyPXUsdT1lLGU9aSxp
PW8sbz1lKSxuW3JdPXQuZmxvb3IoaSksblt1XT10LmNlaWwobyksbn1mdW5jdGlvbiBEaShuKXty
ZXR1cm4gbj97Zmxvb3I6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguZmxvb3IodC9uKSpufSxjZWls
OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmNlaWwodC9uKSpufX06c3N9ZnVuY3Rpb24gUGkobix0
LGUscil7dmFyIHU9W10saT1bXSxvPTAsYT1NYXRoLm1pbihuLmxlbmd0aCx0Lmxlbmd0aCktMTtm
b3IoblthXTxuWzBdJiYobj1uLnNsaWNlKCkucmV2ZXJzZSgpLHQ9dC5zbGljZSgpLnJldmVyc2Uo
KSk7KytvPD1hOyl1LnB1c2goZShuW28tMV0sbltvXSkpLGkucHVzaChyKHRbby0xXSx0W29dKSk7
cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPVpvLmJpc2VjdChuLHQsMSxhKS0xO3JldHVybiBpW2Vd
KHVbZV0odCkpfX1mdW5jdGlvbiBVaShuLHQsZSxyKXtmdW5jdGlvbiB1KCl7dmFyIHU9TWF0aC5t
aW4obi5sZW5ndGgsdC5sZW5ndGgpPjI/UGk6cWksYz1yP1V1OlB1O3JldHVybiBvPXUobix0LGMs
ZSksYT11KHQsbixjLGh1KSxpfWZ1bmN0aW9uIGkobil7cmV0dXJuIG8obil9dmFyIG8sYTtyZXR1
cm4gaS5pbnZlcnQ9ZnVuY3Rpb24obil7cmV0dXJuIGEobil9LGkuZG9tYWluPWZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQubWFwKE51bWJlciksdSgpKTpufSxpLnJhbmdl
PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sdSgpKTp0fSxpLnJhbmdl
Um91bmQ9ZnVuY3Rpb24obil7cmV0dXJuIGkucmFuZ2UobikuaW50ZXJwb2xhdGUoenUpfSxpLmNs
YW1wPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdSgpKTpyfSxpLmlu
dGVycG9sYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdSgpKTpl
fSxpLnRpY2tzPWZ1bmN0aW9uKHQpe3JldHVybiBPaShuLHQpfSxpLnRpY2tGb3JtYXQ9ZnVuY3Rp
b24odCxlKXtyZXR1cm4gWWkobix0LGUpfSxpLm5pY2U9ZnVuY3Rpb24odCl7cmV0dXJuIEhpKG4s
dCksdSgpfSxpLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVWkobix0LGUscil9LHUoKX1mdW5jdGlv
biBqaShuLHQpe3JldHVybiBaby5yZWJpbmQobix0LCJyYW5nZSIsInJhbmdlUm91bmQiLCJpbnRl
cnBvbGF0ZSIsImNsYW1wIil9ZnVuY3Rpb24gSGkobix0KXtyZXR1cm4gUmkobixEaShGaShuLHQp
WzJdKSl9ZnVuY3Rpb24gRmkobix0KXtudWxsPT10JiYodD0xMCk7dmFyIGU9TGkobikscj1lWzFd
LWVbMF0sdT1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKHIvdCkvTWF0aC5MTjEwKSks
aT10L3IqdTtyZXR1cm4uMTU+PWk/dSo9MTA6LjM1Pj1pP3UqPTU6Ljc1Pj1pJiYodSo9MiksZVsw
XT1NYXRoLmNlaWwoZVswXS91KSp1LGVbMV09TWF0aC5mbG9vcihlWzFdL3UpKnUrLjUqdSxlWzJd
PXUsZX1mdW5jdGlvbiBPaShuLHQpe3JldHVybiBaby5yYW5nZS5hcHBseShabyxGaShuLHQpKX1m
dW5jdGlvbiBZaShuLHQsZSl7dmFyIHI9Rmkobix0KTtpZihlKXt2YXIgdT1HYS5leGVjKGUpO2lm
KHUuc2hpZnQoKSwicyI9PT11WzhdKXt2YXIgaT1aby5mb3JtYXRQcmVmaXgoTWF0aC5tYXgodWEo
clswXSksdWEoclsxXSkpKTtyZXR1cm4gdVs3XXx8KHVbN109Ii4iK0lpKGkuc2NhbGUoclsyXSkp
KSx1WzhdPSJmIixlPVpvLmZvcm1hdCh1LmpvaW4oIiIpKSxmdW5jdGlvbihuKXtyZXR1cm4gZShp
LnNjYWxlKG4pKStpLnN5bWJvbH19dVs3XXx8KHVbN109Ii4iK1ppKHVbOF0scikpLGU9dS5qb2lu
KCIiKX1lbHNlIGU9IiwuIitJaShyWzJdKSsiZiI7cmV0dXJuIFpvLmZvcm1hdChlKX1mdW5jdGlv
biBJaShuKXtyZXR1cm4tTWF0aC5mbG9vcihNYXRoLmxvZyhuKS9NYXRoLkxOMTArLjAxKX1mdW5j
dGlvbiBaaShuLHQpe3ZhciBlPUlpKHRbMl0pO3JldHVybiBuIGluIGxzP01hdGguYWJzKGUtSWko
TWF0aC5tYXgodWEodFswXSksdWEodFsxXSkpKSkrICsoImUiIT09bik6ZS0yKigiJSI9PT1uKX1m
dW5jdGlvbiBWaShuLHQsZSxyKXtmdW5jdGlvbiB1KG4pe3JldHVybihlP01hdGgubG9nKDA+bj8w
Om4pOi1NYXRoLmxvZyhuPjA/MDotbikpL01hdGgubG9nKHQpfWZ1bmN0aW9uIGkobil7cmV0dXJu
IGU/TWF0aC5wb3codCxuKTotTWF0aC5wb3codCwtbil9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbih1
KHQpKX1yZXR1cm4gby5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGkobi5pbnZlcnQodCkpfSxv
LmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10WzBdPj0wLG4u
ZG9tYWluKChyPXQubWFwKE51bWJlcikpLm1hcCh1KSksbyk6cn0sby5iYXNlPWZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStlLG4uZG9tYWluKHIubWFwKHUpKSxvKTp0fSxv
Lm5pY2U9ZnVuY3Rpb24oKXt2YXIgdD1SaShyLm1hcCh1KSxlP01hdGg6aHMpO3JldHVybiBuLmRv
bWFpbih0KSxyPXQubWFwKGkpLG99LG8udGlja3M9ZnVuY3Rpb24oKXt2YXIgbj1MaShyKSxvPVtd
LGE9blswXSxjPW5bMV0scz1NYXRoLmZsb29yKHUoYSkpLGw9TWF0aC5jZWlsKHUoYykpLGY9dCUx
PzI6dDtpZihpc0Zpbml0ZShsLXMpKXtpZihlKXtmb3IoO2w+cztzKyspZm9yKHZhciBoPTE7Zj5o
O2grKylvLnB1c2goaShzKSpoKTtvLnB1c2goaShzKSl9ZWxzZSBmb3Ioby5wdXNoKGkocykpO3Mr
KzxsOylmb3IodmFyIGg9Zi0xO2g+MDtoLS0pby5wdXNoKGkocykqaCk7Zm9yKHM9MDtvW3NdPGE7
cysrKTtmb3IobD1vLmxlbmd0aDtvW2wtMV0+YztsLS0pO289by5zbGljZShzLGwpfXJldHVybiBv
fSxvLnRpY2tGb3JtYXQ9ZnVuY3Rpb24obix0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4g
ZnM7YXJndW1lbnRzLmxlbmd0aDwyP3Q9ZnM6ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVpvLmZv
cm1hdCh0KSk7dmFyIHIsYT1NYXRoLm1heCguMSxuL28udGlja3MoKS5sZW5ndGgpLGM9ZT8ocj0x
ZS0xMixNYXRoLmNlaWwpOihyPS0xZS0xMixNYXRoLmZsb29yKTtyZXR1cm4gZnVuY3Rpb24obil7
cmV0dXJuIG4vaShjKHUobikrcikpPD1hP3Qobik6IiJ9fSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1
cm4gVmkobi5jb3B5KCksdCxlLHIpfSxqaShvLG4pfWZ1bmN0aW9uIFhpKG4sdCxlKXtmdW5jdGlv
biByKHQpe3JldHVybiBuKHUodCkpfXZhciB1PSRpKHQpLGk9JGkoMS90KTtyZXR1cm4gci5pbnZl
cnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGkobi5pbnZlcnQodCkpfSxyLmRvbWFpbj1mdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obi5kb21haW4oKGU9dC5tYXAoTnVtYmVyKSkubWFw
KHUpKSxyKTplfSxyLnRpY2tzPWZ1bmN0aW9uKG4pe3JldHVybiBPaShlLG4pfSxyLnRpY2tGb3Jt
YXQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gWWkoZSxuLHQpfSxyLm5pY2U9ZnVuY3Rpb24obil7cmV0
dXJuIHIuZG9tYWluKEhpKGUsbikpfSxyLmV4cG9uZW50PWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyh1PSRpKHQ9byksaT0kaSgxL3QpLG4uZG9tYWluKGUubWFwKHUpKSxyKTp0
fSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gWGkobi5jb3B5KCksdCxlKX0samkocixuKX1mdW5j
dGlvbiAkaShuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIDA+dD8tTWF0aC5wb3coLXQsbik6
TWF0aC5wb3codCxuKX19ZnVuY3Rpb24gQmkobix0KXtmdW5jdGlvbiBlKGUpe3JldHVybiBpWygo
dS5nZXQoZSl8fCgicmFuZ2UiPT09dC50P3Uuc2V0KGUsbi5wdXNoKGUpKTowLzApKS0xKSVpLmxl
bmd0aF19ZnVuY3Rpb24gcih0LGUpe3JldHVybiBaby5yYW5nZShuLmxlbmd0aCkubWFwKGZ1bmN0
aW9uKG4pe3JldHVybiB0K2Uqbn0pfXZhciB1LGksYTtyZXR1cm4gZS5kb21haW49ZnVuY3Rpb24o
cil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG47bj1bXSx1PW5ldyBvO2Zvcih2YXIgaSxh
PS0xLGM9ci5sZW5ndGg7KythPGM7KXUuaGFzKGk9clthXSl8fHUuc2V0KGksbi5wdXNoKGkpKTty
ZXR1cm4gZVt0LnRdLmFwcGx5KGUsdC5hKX0sZS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oaT1uLGE9MCx0PXt0OiJyYW5nZSIsYTphcmd1bWVudHN9LGUpOml9LGUu
cmFuZ2VQb2ludHM9ZnVuY3Rpb24odSxvKXthcmd1bWVudHMubGVuZ3RoPDImJihvPTApO3ZhciBj
PXVbMF0scz11WzFdLGw9KHMtYykvKE1hdGgubWF4KDEsbi5sZW5ndGgtMSkrbyk7cmV0dXJuIGk9
cihuLmxlbmd0aDwyPyhjK3MpLzI6YytsKm8vMixsKSxhPTAsdD17dDoicmFuZ2VQb2ludHMiLGE6
YXJndW1lbnRzfSxlfSxlLnJhbmdlQmFuZHM9ZnVuY3Rpb24odSxvLGMpe2FyZ3VtZW50cy5sZW5n
dGg8MiYmKG89MCksYXJndW1lbnRzLmxlbmd0aDwzJiYoYz1vKTt2YXIgcz11WzFdPHVbMF0sbD11
W3MtMF0sZj11WzEtc10saD0oZi1sKS8obi5sZW5ndGgtbysyKmMpO3JldHVybiBpPXIobCtoKmMs
aCkscyYmaS5yZXZlcnNlKCksYT1oKigxLW8pLHQ9e3Q6InJhbmdlQmFuZHMiLGE6YXJndW1lbnRz
fSxlfSxlLnJhbmdlUm91bmRCYW5kcz1mdW5jdGlvbih1LG8sYyl7YXJndW1lbnRzLmxlbmd0aDwy
JiYobz0wKSxhcmd1bWVudHMubGVuZ3RoPDMmJihjPW8pO3ZhciBzPXVbMV08dVswXSxsPXVbcy0w
XSxmPXVbMS1zXSxoPU1hdGguZmxvb3IoKGYtbCkvKG4ubGVuZ3RoLW8rMipjKSksZz1mLWwtKG4u
bGVuZ3RoLW8pKmg7cmV0dXJuIGk9cihsK01hdGgucm91bmQoZy8yKSxoKSxzJiZpLnJldmVyc2Uo
KSxhPU1hdGgucm91bmQoaCooMS1vKSksdD17dDoicmFuZ2VSb3VuZEJhbmRzIixhOmFyZ3VtZW50
c30sZX0sZS5yYW5nZUJhbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gYX0sZS5yYW5nZUV4dGVudD1mdW5j
dGlvbigpe3JldHVybiBMaSh0LmFbMF0pfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQmkobix0
KX0sZS5kb21haW4obil9ZnVuY3Rpb24gV2koZSxyKXtmdW5jdGlvbiB1KCl7dmFyIG49MCx0PXIu
bGVuZ3RoO2ZvcihvPVtdOysrbjx0OylvW24tMV09Wm8ucXVhbnRpbGUoZSxuL3QpO3JldHVybiBp
fWZ1bmN0aW9uIGkobil7cmV0dXJuIGlzTmFOKG49K24pP3ZvaWQgMDpyW1pvLmJpc2VjdChvLG4p
XX12YXIgbztyZXR1cm4gaS5kb21haW49ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGU9ci5maWx0ZXIodCkuc29ydChuKSx1KCkpOmV9LGkucmFuZ2U9ZnVuY3Rpb24obil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bix1KCkpOnJ9LGkucXVhbnRpbGVzPWZ1bmN0aW9uKCl7
cmV0dXJuIG99LGkuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKG4pe3JldHVybiBuPXIuaW5kZXhPZihu
KSwwPm4/WzAvMCwwLzBdOltuPjA/b1tuLTFdOmVbMF0sbjxvLmxlbmd0aD9vW25dOmVbZS5sZW5n
dGgtMV1dfSxpLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gV2koZSxyKX0sdSgpfWZ1bmN0aW9uIEpp
KG4sdCxlKXtmdW5jdGlvbiByKHQpe3JldHVybiBlW01hdGgubWF4KDAsTWF0aC5taW4obyxNYXRo
LmZsb29yKGkqKHQtbikpKSldfWZ1bmN0aW9uIHUoKXtyZXR1cm4gaT1lLmxlbmd0aC8odC1uKSxv
PWUubGVuZ3RoLTEscn12YXIgaSxvO3JldHVybiByLmRvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8obj0rZVswXSx0PStlW2UubGVuZ3RoLTFdLHUoKSk6W24sdF19LHIu
cmFuZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bix1KCkpOmV9LHIu
aW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0PWUuaW5kZXhPZih0KSx0PTA+dD8wLzA6
dC9pK24sW3QsdCsxL2ldfSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gSmkobix0LGUpfSx1KCl9
ZnVuY3Rpb24gR2kobix0KXtmdW5jdGlvbiBlKGUpe3JldHVybiBlPj1lP3RbWm8uYmlzZWN0KG4s
ZSldOnZvaWQgMH1yZXR1cm4gZS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KG49dCxlKTpufSxlLnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh0PW4sZSk6dH0sZS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9dC5pbmRl
eE9mKGUpLFtuW2UtMV0sbltlXV19LGUuY29weT1mdW5jdGlvbigpe3JldHVybiBHaShuLHQpfSxl
fWZ1bmN0aW9uIEtpKG4pe2Z1bmN0aW9uIHQobil7cmV0dXJuK259cmV0dXJuIHQuaW52ZXJ0PXQs
dC5kb21haW49dC5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1l
Lm1hcCh0KSx0KTpufSx0LnRpY2tzPWZ1bmN0aW9uKHQpe3JldHVybiBPaShuLHQpfSx0LnRpY2tG
b3JtYXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gWWkobix0LGUpfSx0LmNvcHk9ZnVuY3Rpb24oKXty
ZXR1cm4gS2kobil9LHR9ZnVuY3Rpb24gUWkobil7cmV0dXJuIG4uaW5uZXJSYWRpdXN9ZnVuY3Rp
b24gbm8obil7cmV0dXJuIG4ub3V0ZXJSYWRpdXN9ZnVuY3Rpb24gdG8obil7cmV0dXJuIG4uc3Rh
cnRBbmdsZX1mdW5jdGlvbiBlbyhuKXtyZXR1cm4gbi5lbmRBbmdsZX1mdW5jdGlvbiBybyhuKXtm
dW5jdGlvbiB0KHQpe2Z1bmN0aW9uIG8oKXtzLnB1c2goIk0iLGkobihsKSxhKSl9Zm9yKHZhciBj
LHM9W10sbD1bXSxmPS0xLGg9dC5sZW5ndGgsZz1idChlKSxwPWJ0KHIpOysrZjxoOyl1LmNhbGwo
dGhpcyxjPXRbZl0sZik/bC5wdXNoKFsrZy5jYWxsKHRoaXMsYyxmKSwrcC5jYWxsKHRoaXMsYyxm
KV0pOmwubGVuZ3RoJiYobygpLGw9W10pO3JldHVybiBsLmxlbmd0aCYmbygpLHMubGVuZ3RoP3Mu
am9pbigiIik6bnVsbH12YXIgZT13cixyPVNyLHU9d2UsaT11byxvPWkua2V5LGE9Ljc7cmV0dXJu
IHQueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHQpOmV9LHQueT1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHQpOnJ9LHQuZGVmaW5lZD1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1uLHQpOnV9LHQuaW50ZXJwb2xh
dGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlw
ZW9mIG4/aT1uOihpPXhzLmdldChuKXx8dW8pLmtleSx0KTpvfSx0LnRlbnNpb249ZnVuY3Rpb24o
bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bix0KTphfSx0fWZ1bmN0aW9uIHVvKG4pe3Jl
dHVybiBuLmpvaW4oIkwiKX1mdW5jdGlvbiBpbyhuKXtyZXR1cm4gdW8obikrIloifWZ1bmN0aW9u
IG9vKG4pe2Zvcih2YXIgdD0wLGU9bi5sZW5ndGgscj1uWzBdLHU9W3JbMF0sIiwiLHJbMV1dOysr
dDxlOyl1LnB1c2goIkgiLChyWzBdKyhyPW5bdF0pWzBdKS8yLCJWIixyWzFdKTtyZXR1cm4gZT4x
JiZ1LnB1c2goIkgiLHJbMF0pLHUuam9pbigiIil9ZnVuY3Rpb24gYW8obil7Zm9yKHZhciB0PTAs
ZT1uLmxlbmd0aCxyPW5bMF0sdT1bclswXSwiLCIsclsxXV07Kyt0PGU7KXUucHVzaCgiViIsKHI9
blt0XSlbMV0sIkgiLHJbMF0pO3JldHVybiB1LmpvaW4oIiIpfWZ1bmN0aW9uIGNvKG4pe2Zvcih2
YXIgdD0wLGU9bi5sZW5ndGgscj1uWzBdLHU9W3JbMF0sIiwiLHJbMV1dOysrdDxlOyl1LnB1c2go
IkgiLChyPW5bdF0pWzBdLCJWIixyWzFdKTtyZXR1cm4gdS5qb2luKCIiKX1mdW5jdGlvbiBzbyhu
LHQpe3JldHVybiBuLmxlbmd0aDw0P3VvKG4pOm5bMV0raG8obi5zbGljZSgxLG4ubGVuZ3RoLTEp
LGdvKG4sdCkpfWZ1bmN0aW9uIGxvKG4sdCl7cmV0dXJuIG4ubGVuZ3RoPDM/dW8obik6blswXSto
bygobi5wdXNoKG5bMF0pLG4pLGdvKFtuW24ubGVuZ3RoLTJdXS5jb25jYXQobixbblsxXV0pLHQp
KX1mdW5jdGlvbiBmbyhuLHQpe3JldHVybiBuLmxlbmd0aDwzP3VvKG4pOm5bMF0raG8obixnbyhu
LHQpKX1mdW5jdGlvbiBobyhuLHQpe2lmKHQubGVuZ3RoPDF8fG4ubGVuZ3RoIT10Lmxlbmd0aCYm
bi5sZW5ndGghPXQubGVuZ3RoKzIpcmV0dXJuIHVvKG4pO3ZhciBlPW4ubGVuZ3RoIT10Lmxlbmd0
aCxyPSIiLHU9blswXSxpPW5bMV0sbz10WzBdLGE9byxjPTE7aWYoZSYmKHIrPSJRIisoaVswXS0y
Km9bMF0vMykrIiwiKyhpWzFdLTIqb1sxXS8zKSsiLCIraVswXSsiLCIraVsxXSx1PW5bMV0sYz0y
KSx0Lmxlbmd0aD4xKXthPXRbMV0saT1uW2NdLGMrKyxyKz0iQyIrKHVbMF0rb1swXSkrIiwiKyh1
WzFdK29bMV0pKyIsIisoaVswXS1hWzBdKSsiLCIrKGlbMV0tYVsxXSkrIiwiK2lbMF0rIiwiK2lb
MV07Zm9yKHZhciBzPTI7czx0Lmxlbmd0aDtzKyssYysrKWk9bltjXSxhPXRbc10scis9IlMiKyhp
WzBdLWFbMF0pKyIsIisoaVsxXS1hWzFdKSsiLCIraVswXSsiLCIraVsxXX1pZihlKXt2YXIgbD1u
W2NdO3IrPSJRIisoaVswXSsyKmFbMF0vMykrIiwiKyhpWzFdKzIqYVsxXS8zKSsiLCIrbFswXSsi
LCIrbFsxXX1yZXR1cm4gcn1mdW5jdGlvbiBnbyhuLHQpe2Zvcih2YXIgZSxyPVtdLHU9KDEtdCkv
MixpPW5bMF0sbz1uWzFdLGE9MSxjPW4ubGVuZ3RoOysrYTxjOyllPWksaT1vLG89blthXSxyLnB1
c2goW3UqKG9bMF0tZVswXSksdSoob1sxXS1lWzFdKV0pO3JldHVybiByfWZ1bmN0aW9uIHBvKG4p
e2lmKG4ubGVuZ3RoPDMpcmV0dXJuIHVvKG4pO3ZhciB0PTEsZT1uLmxlbmd0aCxyPW5bMF0sdT1y
WzBdLGk9clsxXSxvPVt1LHUsdSwocj1uWzFdKVswXV0sYT1baSxpLGksclsxXV0sYz1bdSwiLCIs
aSwiTCIseG8oYnMsbyksIiwiLHhvKGJzLGEpXTtmb3Iobi5wdXNoKG5bZS0xXSk7Kyt0PD1lOyly
PW5bdF0sby5zaGlmdCgpLG8ucHVzaChyWzBdKSxhLnNoaWZ0KCksYS5wdXNoKHJbMV0pLE1vKGMs
byxhKTtyZXR1cm4gbi5wb3AoKSxjLnB1c2goIkwiLHIpLGMuam9pbigiIil9ZnVuY3Rpb24gdm8o
bil7aWYobi5sZW5ndGg8NClyZXR1cm4gdW8obik7Zm9yKHZhciB0LGU9W10scj0tMSx1PW4ubGVu
Z3RoLGk9WzBdLG89WzBdOysrcjwzOyl0PW5bcl0saS5wdXNoKHRbMF0pLG8ucHVzaCh0WzFdKTtm
b3IoZS5wdXNoKHhvKGJzLGkpKyIsIit4byhicyxvKSksLS1yOysrcjx1Oyl0PW5bcl0saS5zaGlm
dCgpLGkucHVzaCh0WzBdKSxvLnNoaWZ0KCksby5wdXNoKHRbMV0pLE1vKGUsaSxvKTtyZXR1cm4g
ZS5qb2luKCIiKX1mdW5jdGlvbiBtbyhuKXtmb3IodmFyIHQsZSxyPS0xLHU9bi5sZW5ndGgsaT11
KzQsbz1bXSxhPVtdOysrcjw0OyllPW5bciV1XSxvLnB1c2goZVswXSksYS5wdXNoKGVbMV0pO2Zv
cih0PVt4byhicyxvKSwiLCIseG8oYnMsYSldLC0tcjsrK3I8aTspZT1uW3IldV0sby5zaGlmdCgp
LG8ucHVzaChlWzBdKSxhLnNoaWZ0KCksYS5wdXNoKGVbMV0pLE1vKHQsbyxhKTtyZXR1cm4gdC5q
b2luKCIiKX1mdW5jdGlvbiB5byhuLHQpe3ZhciBlPW4ubGVuZ3RoLTE7aWYoZSlmb3IodmFyIHIs
dSxpPW5bMF1bMF0sbz1uWzBdWzFdLGE9bltlXVswXS1pLGM9bltlXVsxXS1vLHM9LTE7KytzPD1l
OylyPW5bc10sdT1zL2UsclswXT10KnJbMF0rKDEtdCkqKGkrdSphKSxyWzFdPXQqclsxXSsoMS10
KSoobyt1KmMpO3JldHVybiBwbyhuKX1mdW5jdGlvbiB4byhuLHQpe3JldHVybiBuWzBdKnRbMF0r
blsxXSp0WzFdK25bMl0qdFsyXStuWzNdKnRbM119ZnVuY3Rpb24gTW8obix0LGUpe24ucHVzaCgi
QyIseG8oTXMsdCksIiwiLHhvKE1zLGUpLCIsIix4byhfcyx0KSwiLCIseG8oX3MsZSksIiwiLHhv
KGJzLHQpLCIsIix4byhicyxlKSl9ZnVuY3Rpb24gX28obix0KXtyZXR1cm4odFsxXS1uWzFdKS8o
dFswXS1uWzBdKX1mdW5jdGlvbiBibyhuKXtmb3IodmFyIHQ9MCxlPW4ubGVuZ3RoLTEscj1bXSx1
PW5bMF0saT1uWzFdLG89clswXT1fbyh1LGkpOysrdDxlOylyW3RdPShvKyhvPV9vKHU9aSxpPW5b
dCsxXSkpKS8yO3JldHVybiByW3RdPW8scn1mdW5jdGlvbiB3byhuKXtmb3IodmFyIHQsZSxyLHUs
aT1bXSxvPWJvKG4pLGE9LTEsYz1uLmxlbmd0aC0xOysrYTxjOyl0PV9vKG5bYV0sblthKzFdKSx1
YSh0KTxrYT9vW2FdPW9bYSsxXT0wOihlPW9bYV0vdCxyPW9bYSsxXS90LHU9ZSplK3Iqcix1Pjkm
Jih1PTMqdC9NYXRoLnNxcnQodSksb1thXT11KmUsb1thKzFdPXUqcikpO2ZvcihhPS0xOysrYTw9
YzspdT0obltNYXRoLm1pbihjLGErMSldWzBdLW5bTWF0aC5tYXgoMCxhLTEpXVswXSkvKDYqKDEr
b1thXSpvW2FdKSksaS5wdXNoKFt1fHwwLG9bYV0qdXx8MF0pO3JldHVybiBpfWZ1bmN0aW9uIFNv
KG4pe3JldHVybiBuLmxlbmd0aDwzP3VvKG4pOm5bMF0raG8obix3byhuKSl9ZnVuY3Rpb24ga28o
bil7Zm9yKHZhciB0LGUscix1PS0xLGk9bi5sZW5ndGg7Kyt1PGk7KXQ9blt1XSxlPXRbMF0scj10
WzFdK21zLHRbMF09ZSpNYXRoLmNvcyhyKSx0WzFdPWUqTWF0aC5zaW4ocik7cmV0dXJuIG59ZnVu
Y3Rpb24gRW8obil7ZnVuY3Rpb24gdCh0KXtmdW5jdGlvbiBjKCl7di5wdXNoKCJNIixhKG4obSks
ZiksbCxzKG4oZC5yZXZlcnNlKCkpLGYpLCJaIil9Zm9yKHZhciBoLGcscCx2PVtdLGQ9W10sbT1b
XSx5PS0xLHg9dC5sZW5ndGgsTT1idChlKSxfPWJ0KHUpLGI9ZT09PXI/ZnVuY3Rpb24oKXtyZXR1
cm4gZ306YnQociksdz11PT09aT9mdW5jdGlvbigpe3JldHVybiBwfTpidChpKTsrK3k8eDspby5j
YWxsKHRoaXMsaD10W3ldLHkpPyhkLnB1c2goW2c9K00uY2FsbCh0aGlzLGgseSkscD0rXy5jYWxs
KHRoaXMsaCx5KV0pLG0ucHVzaChbK2IuY2FsbCh0aGlzLGgseSksK3cuY2FsbCh0aGlzLGgseSld
KSk6ZC5sZW5ndGgmJihjKCksZD1bXSxtPVtdKTtyZXR1cm4gZC5sZW5ndGgmJmMoKSx2Lmxlbmd0
aD92LmpvaW4oIiIpOm51bGx9dmFyIGU9d3Iscj13cix1PTAsaT1TcixvPXdlLGE9dW8sYz1hLmtl
eSxzPWEsbD0iTCIsZj0uNztyZXR1cm4gdC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhlPXI9bix0KTpyfSx0LngwPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhlPW4sdCk6ZX0sdC54MT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cj1uLHQpOnJ9LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1pPW4s
dCk6aX0sdC55MD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1uLHQpOnV9
LHQueTE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bix0KTppfSx0LmRl
ZmluZWQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bix0KTpvfSx0Lmlu
dGVycG9sYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSJmdW5jdGlv
biI9PXR5cGVvZiBuP2E9bjooYT14cy5nZXQobil8fHVvKS5rZXkscz1hLnJldmVyc2V8fGEsbD1h
LmNsb3NlZD8iTSI6IkwiLHQpOmN9LHQudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oZj1uLHQpOmZ9LHR9ZnVuY3Rpb24gQW8obil7cmV0dXJuIG4ucmFkaXVzfWZ1
bmN0aW9uIENvKG4pe3JldHVybltuLngsbi55XX1mdW5jdGlvbiBObyhuKXtyZXR1cm4gZnVuY3Rp
b24oKXt2YXIgdD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlPXRbMF0scj10WzFdK21zO3JldHVy
bltlKk1hdGguY29zKHIpLGUqTWF0aC5zaW4ocildfX1mdW5jdGlvbiB6bygpe3JldHVybiA2NH1m
dW5jdGlvbiBMbygpe3JldHVybiJjaXJjbGUifWZ1bmN0aW9uIFRvKG4pe3ZhciB0PU1hdGguc3Fy
dChuL2JhKTtyZXR1cm4iTTAsIit0KyJBIit0KyIsIit0KyIgMCAxLDEgMCwiKy10KyJBIit0KyIs
Iit0KyIgMCAxLDEgMCwiK3QrIloifWZ1bmN0aW9uIHFvKG4sdCl7cmV0dXJuIHNhKG4sQ3MpLG4u
aWQ9dCxufWZ1bmN0aW9uIFJvKG4sdCxlLHIpe3ZhciB1PW4uaWQ7cmV0dXJuIFAobiwiZnVuY3Rp
b24iPT10eXBlb2YgZT9mdW5jdGlvbihuLGksbyl7bi5fX3RyYW5zaXRpb25fX1t1XS50d2Vlbi5z
ZXQodCxyKGUuY2FsbChuLG4uX19kYXRhX18saSxvKSkpfTooZT1yKGUpLGZ1bmN0aW9uKG4pe24u
X190cmFuc2l0aW9uX19bdV0udHdlZW4uc2V0KHQsZSl9KSl9ZnVuY3Rpb24gRG8obil7cmV0dXJu
IG51bGw9PW4mJihuPSIiKSxmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9bn19ZnVuY3Rpb24g
UG8obix0LGUscil7dmFyIHU9bi5fX3RyYW5zaXRpb25fX3x8KG4uX190cmFuc2l0aW9uX189e2Fj
dGl2ZTowLGNvdW50OjB9KSxpPXVbZV07aWYoIWkpe3ZhciBhPXIudGltZTtpPXVbZV09e3R3ZWVu
Om5ldyBvLHRpbWU6YSxlYXNlOnIuZWFzZSxkZWxheTpyLmRlbGF5LGR1cmF0aW9uOnIuZHVyYXRp
b259LCsrdS5jb3VudCxaby50aW1lcihmdW5jdGlvbihyKXtmdW5jdGlvbiBvKHIpe3JldHVybiB1
LmFjdGl2ZT5lP3MoKToodS5hY3RpdmU9ZSxpLmV2ZW50JiZpLmV2ZW50LnN0YXJ0LmNhbGwobixs
LHQpLGkudHdlZW4uZm9yRWFjaChmdW5jdGlvbihlLHIpeyhyPXIuY2FsbChuLGwsdCkpJiZ2LnB1
c2gocil9KSxaby50aW1lcihmdW5jdGlvbigpe3JldHVybiBwLmM9YyhyfHwxKT93ZTpjLDF9LDAs
YSksdm9pZCAwKX1mdW5jdGlvbiBjKHIpe2lmKHUuYWN0aXZlIT09ZSlyZXR1cm4gcygpO2Zvcih2
YXIgbz1yL2csYT1mKG8pLGM9di5sZW5ndGg7Yz4wOyl2Wy0tY10uY2FsbChuLGEpOwotcmV0dXJu
IG8+PTE/KGkuZXZlbnQmJmkuZXZlbnQuZW5kLmNhbGwobixsLHQpLHMoKSk6dm9pZCAwfWZ1bmN0
aW9uIHMoKXtyZXR1cm4tLXUuY291bnQ/ZGVsZXRlIHVbZV06ZGVsZXRlIG4uX190cmFuc2l0aW9u
X18sMX12YXIgbD1uLl9fZGF0YV9fLGY9aS5lYXNlLGg9aS5kZWxheSxnPWkuZHVyYXRpb24scD1C
YSx2PVtdO3JldHVybiBwLnQ9aCthLHI+PWg/byhyLWgpOihwLmM9byx2b2lkIDApfSwwLGEpfX1m
dW5jdGlvbiBVbyhuLHQpe24uYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihuKXtyZXR1cm4idHJh
bnNsYXRlKCIrdChuKSsiLDApIn0pfWZ1bmN0aW9uIGpvKG4sdCl7bi5hdHRyKCJ0cmFuc2Zvcm0i
LGZ1bmN0aW9uKG4pe3JldHVybiJ0cmFuc2xhdGUoMCwiK3QobikrIikifSl9ZnVuY3Rpb24gSG8o
bil7cmV0dXJuIG4udG9JU09TdHJpbmcoKX1mdW5jdGlvbiBGbyhuLHQsZSl7ZnVuY3Rpb24gcih0
KXtyZXR1cm4gbih0KX1mdW5jdGlvbiB1KG4sZSl7dmFyIHI9blsxXS1uWzBdLHU9ci9lLGk9Wm8u
YmlzZWN0KFVzLHUpO3JldHVybiBpPT1Vcy5sZW5ndGg/W3QueWVhcixGaShuLm1hcChmdW5jdGlv
bihuKXtyZXR1cm4gbi8zMTUzNmU2fSksZSlbMl1dOmk/dFt1L1VzW2ktMV08VXNbaV0vdT9pLTE6
aV06W0ZzLEZpKG4sZSlbMl1dfXJldHVybiByLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gT28o
bi5pbnZlcnQodCkpfSxyLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8obi5kb21haW4odCkscik6bi5kb21haW4oKS5tYXAoT28pfSxyLm5pY2U9ZnVuY3Rpb24obix0
KXtmdW5jdGlvbiBlKGUpe3JldHVybiFpc05hTihlKSYmIW4ucmFuZ2UoZSxPbygrZSsxKSx0KS5s
ZW5ndGh9dmFyIGk9ci5kb21haW4oKSxvPUxpKGkpLGE9bnVsbD09bj91KG8sMTApOiJudW1iZXIi
PT10eXBlb2YgbiYmdShvLG4pO3JldHVybiBhJiYobj1hWzBdLHQ9YVsxXSksci5kb21haW4oUmko
aSx0PjE/e2Zsb29yOmZ1bmN0aW9uKHQpe2Zvcig7ZSh0PW4uZmxvb3IodCkpOyl0PU9vKHQtMSk7
cmV0dXJuIHR9LGNlaWw6ZnVuY3Rpb24odCl7Zm9yKDtlKHQ9bi5jZWlsKHQpKTspdD1PbygrdCsx
KTtyZXR1cm4gdH19Om4pKX0sci50aWNrcz1mdW5jdGlvbihuLHQpe3ZhciBlPUxpKHIuZG9tYWlu
KCkpLGk9bnVsbD09bj91KGUsMTApOiJudW1iZXIiPT10eXBlb2Ygbj91KGUsbik6IW4ucmFuZ2Um
Jlt7cmFuZ2U6bn0sdF07cmV0dXJuIGkmJihuPWlbMF0sdD1pWzFdKSxuLnJhbmdlKGVbMF0sT28o
K2VbMV0rMSksMT50PzE6dCl9LHIudGlja0Zvcm1hdD1mdW5jdGlvbigpe3JldHVybiBlfSxyLmNv
cHk9ZnVuY3Rpb24oKXtyZXR1cm4gRm8obi5jb3B5KCksdCxlKX0samkocixuKX1mdW5jdGlvbiBP
byhuKXtyZXR1cm4gbmV3IERhdGUobil9ZnVuY3Rpb24gWW8obil7cmV0dXJuIEpTT04ucGFyc2Uo
bi5yZXNwb25zZVRleHQpfWZ1bmN0aW9uIElvKG4pe3ZhciB0PSRvLmNyZWF0ZVJhbmdlKCk7cmV0
dXJuIHQuc2VsZWN0Tm9kZSgkby5ib2R5KSx0LmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChuLnJl
c3BvbnNlVGV4dCl9dmFyIFpvPXt2ZXJzaW9uOiIzLjQuMTEifTtEYXRlLm5vd3x8KERhdGUubm93
PWZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSk7dmFyIFZvPVtdLnNsaWNlLFhvPWZ1bmN0aW9u
KG4pe3JldHVybiBWby5jYWxsKG4pfSwkbz1kb2N1bWVudCxCbz0kby5kb2N1bWVudEVsZW1lbnQs
V289d2luZG93O3RyeXtYbyhCby5jaGlsZE5vZGVzKVswXS5ub2RlVHlwZX1jYXRjaChKbyl7WG89
ZnVuY3Rpb24obil7Zm9yKHZhciB0PW4ubGVuZ3RoLGU9bmV3IEFycmF5KHQpO3QtLTspZVt0XT1u
W3RdO3JldHVybiBlfX10cnl7JG8uY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUuc2V0UHJvcGVy
dHkoIm9wYWNpdHkiLDAsIiIpfWNhdGNoKEdvKXt2YXIgS289V28uRWxlbWVudC5wcm90b3R5cGUs
UW89S28uc2V0QXR0cmlidXRlLG5hPUtvLnNldEF0dHJpYnV0ZU5TLHRhPVdvLkNTU1N0eWxlRGVj
bGFyYXRpb24ucHJvdG90eXBlLGVhPXRhLnNldFByb3BlcnR5O0tvLnNldEF0dHJpYnV0ZT1mdW5j
dGlvbihuLHQpe1FvLmNhbGwodGhpcyxuLHQrIiIpfSxLby5zZXRBdHRyaWJ1dGVOUz1mdW5jdGlv
bihuLHQsZSl7bmEuY2FsbCh0aGlzLG4sdCxlKyIiKX0sdGEuc2V0UHJvcGVydHk9ZnVuY3Rpb24o
bix0LGUpe2VhLmNhbGwodGhpcyxuLHQrIiIsZSl9fVpvLmFzY2VuZGluZz1uLFpvLmRlc2NlbmRp
bmc9ZnVuY3Rpb24obix0KXtyZXR1cm4gbj50Py0xOnQ+bj8xOnQ+PW4/MDowLzB9LFpvLm1pbj1m
dW5jdGlvbihuLHQpe3ZhciBlLHIsdT0tMSxpPW4ubGVuZ3RoO2lmKDE9PT1hcmd1bWVudHMubGVu
Z3RoKXtmb3IoOysrdTxpJiYhKG51bGwhPShlPW5bdV0pJiZlPj1lKTspZT12b2lkIDA7Zm9yKDsr
K3U8aTspbnVsbCE9KHI9blt1XSkmJmU+ciYmKGU9cil9ZWxzZXtmb3IoOysrdTxpJiYhKG51bGwh
PShlPXQuY2FsbChuLG5bdV0sdSkpJiZlPj1lKTspZT12b2lkIDA7Zm9yKDsrK3U8aTspbnVsbCE9
KHI9dC5jYWxsKG4sblt1XSx1KSkmJmU+ciYmKGU9cil9cmV0dXJuIGV9LFpvLm1heD1mdW5jdGlv
bihuLHQpe3ZhciBlLHIsdT0tMSxpPW4ubGVuZ3RoO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtm
b3IoOysrdTxpJiYhKG51bGwhPShlPW5bdV0pJiZlPj1lKTspZT12b2lkIDA7Zm9yKDsrK3U8aTsp
bnVsbCE9KHI9blt1XSkmJnI+ZSYmKGU9cil9ZWxzZXtmb3IoOysrdTxpJiYhKG51bGwhPShlPXQu
Y2FsbChuLG5bdV0sdSkpJiZlPj1lKTspZT12b2lkIDA7Zm9yKDsrK3U8aTspbnVsbCE9KHI9dC5j
YWxsKG4sblt1XSx1KSkmJnI+ZSYmKGU9cil9cmV0dXJuIGV9LFpvLmV4dGVudD1mdW5jdGlvbihu
LHQpe3ZhciBlLHIsdSxpPS0xLG89bi5sZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2Zv
cig7KytpPG8mJiEobnVsbCE9KGU9dT1uW2ldKSYmZT49ZSk7KWU9dT12b2lkIDA7Zm9yKDsrK2k8
bzspbnVsbCE9KHI9bltpXSkmJihlPnImJihlPXIpLHI+dSYmKHU9cikpfWVsc2V7Zm9yKDsrK2k8
byYmIShudWxsIT0oZT11PXQuY2FsbChuLG5baV0saSkpJiZlPj1lKTspZT12b2lkIDA7Zm9yKDsr
K2k8bzspbnVsbCE9KHI9dC5jYWxsKG4sbltpXSxpKSkmJihlPnImJihlPXIpLHI+dSYmKHU9cikp
fXJldHVybltlLHVdfSxaby5zdW09ZnVuY3Rpb24obix0KXt2YXIgZSxyPTAsdT1uLmxlbmd0aCxp
PS0xO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7KytpPHU7KWlzTmFOKGU9K25baV0pfHwo
cis9ZSk7ZWxzZSBmb3IoOysraTx1Oylpc05hTihlPSt0LmNhbGwobixuW2ldLGkpKXx8KHIrPWUp
O3JldHVybiByfSxaby5tZWFuPWZ1bmN0aW9uKG4sZSl7dmFyIHIsdT0wLGk9bi5sZW5ndGgsbz0t
MSxhPWk7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDsrK288aTspdChyPW5bb10pP3UrPXI6
LS1hO2Vsc2UgZm9yKDsrK288aTspdChyPWUuY2FsbChuLG5bb10sbykpP3UrPXI6LS1hO3JldHVy
biBhP3UvYTp2b2lkIDB9LFpvLnF1YW50aWxlPWZ1bmN0aW9uKG4sdCl7dmFyIGU9KG4ubGVuZ3Ro
LTEpKnQrMSxyPU1hdGguZmxvb3IoZSksdT0rbltyLTFdLGk9ZS1yO3JldHVybiBpP3UraSooblty
XS11KTp1fSxaby5tZWRpYW49ZnVuY3Rpb24oZSxyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4x
JiYoZT1lLm1hcChyKSksZT1lLmZpbHRlcih0KSxlLmxlbmd0aD9aby5xdWFudGlsZShlLnNvcnQo
biksLjUpOnZvaWQgMH07dmFyIHJhPWUobik7Wm8uYmlzZWN0TGVmdD1yYS5sZWZ0LFpvLmJpc2Vj
dD1aby5iaXNlY3RSaWdodD1yYS5yaWdodCxaby5iaXNlY3Rvcj1mdW5jdGlvbih0KXtyZXR1cm4g
ZSgxPT09dC5sZW5ndGg/ZnVuY3Rpb24oZSxyKXtyZXR1cm4gbih0KGUpLHIpfTp0KX0sWm8uc2h1
ZmZsZT1mdW5jdGlvbihuKXtmb3IodmFyIHQsZSxyPW4ubGVuZ3RoO3I7KWU9MHxNYXRoLnJhbmRv
bSgpKnItLSx0PW5bcl0sbltyXT1uW2VdLG5bZV09dDtyZXR1cm4gbn0sWm8ucGVybXV0ZT1mdW5j
dGlvbihuLHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPW5ldyBBcnJheShlKTtlLS07KXJbZV09blt0
W2VdXTtyZXR1cm4gcn0sWm8ucGFpcnM9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGU9MCxyPW4ubGVu
Z3RoLTEsdT1uWzBdLGk9bmV3IEFycmF5KDA+cj8wOnIpO3I+ZTspaVtlXT1bdD11LHU9blsrK2Vd
XTtyZXR1cm4gaX0sWm8uemlwPWZ1bmN0aW9uKCl7aWYoISh1PWFyZ3VtZW50cy5sZW5ndGgpKXJl
dHVybltdO2Zvcih2YXIgbj0tMSx0PVpvLm1pbihhcmd1bWVudHMsciksZT1uZXcgQXJyYXkodCk7
KytuPHQ7KWZvcih2YXIgdSxpPS0xLG89ZVtuXT1uZXcgQXJyYXkodSk7KytpPHU7KW9baV09YXJn
dW1lbnRzW2ldW25dO3JldHVybiBlfSxaby50cmFuc3Bvc2U9ZnVuY3Rpb24obil7cmV0dXJuIFpv
LnppcC5hcHBseShabyxuKX0sWm8ua2V5cz1mdW5jdGlvbihuKXt2YXIgdD1bXTtmb3IodmFyIGUg
aW4gbil0LnB1c2goZSk7cmV0dXJuIHR9LFpvLnZhbHVlcz1mdW5jdGlvbihuKXt2YXIgdD1bXTtm
b3IodmFyIGUgaW4gbil0LnB1c2gobltlXSk7cmV0dXJuIHR9LFpvLmVudHJpZXM9ZnVuY3Rpb24o
bil7dmFyIHQ9W107Zm9yKHZhciBlIGluIG4pdC5wdXNoKHtrZXk6ZSx2YWx1ZTpuW2VdfSk7cmV0
dXJuIHR9LFpvLm1lcmdlPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxlLHIsdT1uLmxlbmd0aCxpPS0x
LG89MDsrK2k8dTspbys9bltpXS5sZW5ndGg7Zm9yKGU9bmV3IEFycmF5KG8pOy0tdT49MDspZm9y
KHI9blt1XSx0PXIubGVuZ3RoOy0tdD49MDspZVstLW9dPXJbdF07cmV0dXJuIGV9O3ZhciB1YT1N
YXRoLmFicztaby5yYW5nZT1mdW5jdGlvbihuLHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwzJiYo
ZT0xLGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9bixuPTApKSwxLzA9PT0odC1uKS9lKXRocm93IG5l
dyBFcnJvcigiaW5maW5pdGUgcmFuZ2UiKTt2YXIgcixpPVtdLG89dSh1YShlKSksYT0tMTtpZihu
Kj1vLHQqPW8sZSo9bywwPmUpZm9yKDsocj1uK2UqKythKT50OylpLnB1c2goci9vKTtlbHNlIGZv
cig7KHI9bitlKisrYSk8dDspaS5wdXNoKHIvbyk7cmV0dXJuIGl9LFpvLm1hcD1mdW5jdGlvbihu
KXt2YXIgdD1uZXcgbztpZihuIGluc3RhbmNlb2YgbyluLmZvckVhY2goZnVuY3Rpb24obixlKXt0
LnNldChuLGUpfSk7ZWxzZSBmb3IodmFyIGUgaW4gbil0LnNldChlLG5bZV0pO3JldHVybiB0fSxp
KG8se2hhczphLGdldDpmdW5jdGlvbihuKXtyZXR1cm4gdGhpc1tpYStuXX0sc2V0OmZ1bmN0aW9u
KG4sdCl7cmV0dXJuIHRoaXNbaWErbl09dH0scmVtb3ZlOmMsa2V5czpzLHZhbHVlczpmdW5jdGlv
bigpe3ZhciBuPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCxlKXtuLnB1c2goZSl9
KSxufSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5j
dGlvbih0LGUpe24ucHVzaCh7a2V5OnQsdmFsdWU6ZX0pfSksbn0sc2l6ZTpsLGVtcHR5OmYsZm9y
RWFjaDpmdW5jdGlvbihuKXtmb3IodmFyIHQgaW4gdGhpcyl0LmNoYXJDb2RlQXQoMCk9PT1vYSYm
bi5jYWxsKHRoaXMsdC5zdWJzdHJpbmcoMSksdGhpc1t0XSl9fSk7dmFyIGlhPSJceDAwIixvYT1p
YS5jaGFyQ29kZUF0KDApO1pvLm5lc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKHQsYSxjKXtpZihj
Pj1pLmxlbmd0aClyZXR1cm4gcj9yLmNhbGwodSxhKTplP2Euc29ydChlKTphO2Zvcih2YXIgcyxs
LGYsaCxnPS0xLHA9YS5sZW5ndGgsdj1pW2MrK10sZD1uZXcgbzsrK2c8cDspKGg9ZC5nZXQocz12
KGw9YVtnXSkpKT9oLnB1c2gobCk6ZC5zZXQocyxbbF0pO3JldHVybiB0PyhsPXQoKSxmPWZ1bmN0
aW9uKGUscil7bC5zZXQoZSxuKHQscixjKSl9KToobD17fSxmPWZ1bmN0aW9uKGUscil7bFtlXT1u
KHQscixjKX0pLGQuZm9yRWFjaChmKSxsfWZ1bmN0aW9uIHQobixlKXtpZihlPj1pLmxlbmd0aCly
ZXR1cm4gbjt2YXIgcj1bXSx1PWFbZSsrXTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKG4sdSl7
ci5wdXNoKHtrZXk6bix2YWx1ZXM6dCh1LGUpfSl9KSx1P3Iuc29ydChmdW5jdGlvbihuLHQpe3Jl
dHVybiB1KG4ua2V5LHQua2V5KX0pOnJ9dmFyIGUscix1PXt9LGk9W10sYT1bXTtyZXR1cm4gdS5t
YXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbihlLHQsMCl9LHUuZW50cmllcz1mdW5jdGlvbihlKXty
ZXR1cm4gdChuKFpvLm1hcCxlLDApLDApfSx1LmtleT1mdW5jdGlvbihuKXtyZXR1cm4gaS5wdXNo
KG4pLHV9LHUuc29ydEtleXM9ZnVuY3Rpb24obil7cmV0dXJuIGFbaS5sZW5ndGgtMV09bix1fSx1
LnNvcnRWYWx1ZXM9ZnVuY3Rpb24obil7cmV0dXJuIGU9bix1fSx1LnJvbGx1cD1mdW5jdGlvbihu
KXtyZXR1cm4gcj1uLHV9LHV9LFpvLnNldD1mdW5jdGlvbihuKXt2YXIgdD1uZXcgaDtpZihuKWZv
cih2YXIgZT0wLHI9bi5sZW5ndGg7cj5lOysrZSl0LmFkZChuW2VdKTtyZXR1cm4gdH0saShoLHto
YXM6YSxhZGQ6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXNbaWErbl09ITAsbn0scmVtb3ZlOmZ1bmN0
aW9uKG4pe3JldHVybiBuPWlhK24sbiBpbiB0aGlzJiZkZWxldGUgdGhpc1tuXX0sdmFsdWVzOnMs
c2l6ZTpsLGVtcHR5OmYsZm9yRWFjaDpmdW5jdGlvbihuKXtmb3IodmFyIHQgaW4gdGhpcyl0LmNo
YXJDb2RlQXQoMCk9PT1vYSYmbi5jYWxsKHRoaXMsdC5zdWJzdHJpbmcoMSkpfX0pLFpvLmJlaGF2
aW9yPXt9LFpvLnJlYmluZD1mdW5jdGlvbihuLHQpe2Zvcih2YXIgZSxyPTEsdT1hcmd1bWVudHMu
bGVuZ3RoOysrcjx1OyluW2U9YXJndW1lbnRzW3JdXT1nKG4sdCx0W2VdKTtyZXR1cm4gbn07dmFy
IGFhPVsid2Via2l0IiwibXMiLCJtb3oiLCJNb3oiLCJvIiwiTyJdO1pvLmRpc3BhdGNoPWZ1bmN0
aW9uKCl7Zm9yKHZhciBuPW5ldyBkLHQ9LTEsZT1hcmd1bWVudHMubGVuZ3RoOysrdDxlOyluW2Fy
Z3VtZW50c1t0XV09bShuKTtyZXR1cm4gbn0sZC5wcm90b3R5cGUub249ZnVuY3Rpb24obix0KXt2
YXIgZT1uLmluZGV4T2YoIi4iKSxyPSIiO2lmKGU+PTAmJihyPW4uc3Vic3RyaW5nKGUrMSksbj1u
LnN1YnN0cmluZygwLGUpKSxuKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/dGhpc1tuXS5vbihy
KTp0aGlzW25dLm9uKHIsdCk7aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgpe2lmKG51bGw9PXQpZm9y
KG4gaW4gdGhpcyl0aGlzLmhhc093blByb3BlcnR5KG4pJiZ0aGlzW25dLm9uKHIsbnVsbCk7cmV0
dXJuIHRoaXN9fSxaby5ldmVudD1udWxsLFpvLnJlcXVvdGU9ZnVuY3Rpb24obil7cmV0dXJuIG4u
cmVwbGFjZShjYSwiXFwkJiIpfTt2YXIgY2E9L1tcXFxeXCRcKlwrXD9cfFxbXF1cKFwpXC5ce1x9
XS9nLHNhPXt9Ll9fcHJvdG9fXz9mdW5jdGlvbihuLHQpe24uX19wcm90b19fPXR9OmZ1bmN0aW9u
KG4sdCl7Zm9yKHZhciBlIGluIHQpbltlXT10W2VdfSxsYT1mdW5jdGlvbihuLHQpe3JldHVybiB0
LnF1ZXJ5U2VsZWN0b3Iobil9LGZhPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQucXVlcnlTZWxlY3Rv
ckFsbChuKX0saGE9Qm8ubWF0Y2hlc3x8Qm9bcChCbywibWF0Y2hlc1NlbGVjdG9yIildLGdhPWZ1
bmN0aW9uKG4sdCl7cmV0dXJuIGhhLmNhbGwobix0KX07ImZ1bmN0aW9uIj09dHlwZW9mIFNpenps
ZSYmKGxhPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIFNpenpsZShuLHQpWzBdfHxudWxsfSxmYT1TaXp6
bGUsZ2E9U2l6emxlLm1hdGNoZXNTZWxlY3RvciksWm8uc2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0
dXJuIG1hfTt2YXIgcGE9Wm8uc2VsZWN0aW9uLnByb3RvdHlwZT1bXTtwYS5zZWxlY3Q9ZnVuY3Rp
b24obil7dmFyIHQsZSxyLHUsaT1bXTtuPWIobik7Zm9yKHZhciBvPS0xLGE9dGhpcy5sZW5ndGg7
KytvPGE7KXtpLnB1c2godD1bXSksdC5wYXJlbnROb2RlPShyPXRoaXNbb10pLnBhcmVudE5vZGU7
Zm9yKHZhciBjPS0xLHM9ci5sZW5ndGg7KytjPHM7KSh1PXJbY10pPyh0LnB1c2goZT1uLmNhbGwo
dSx1Ll9fZGF0YV9fLGMsbykpLGUmJiJfX2RhdGFfXyJpbiB1JiYoZS5fX2RhdGFfXz11Ll9fZGF0
YV9fKSk6dC5wdXNoKG51bGwpfXJldHVybiBfKGkpfSxwYS5zZWxlY3RBbGw9ZnVuY3Rpb24obil7
dmFyIHQsZSxyPVtdO249dyhuKTtmb3IodmFyIHU9LTEsaT10aGlzLmxlbmd0aDsrK3U8aTspZm9y
KHZhciBvPXRoaXNbdV0sYT0tMSxjPW8ubGVuZ3RoOysrYTxjOykoZT1vW2FdKSYmKHIucHVzaCh0
PVhvKG4uY2FsbChlLGUuX19kYXRhX18sYSx1KSkpLHQucGFyZW50Tm9kZT1lKTtyZXR1cm4gXyhy
KX07dmFyIHZhPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDoiaHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCIseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0
cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtaby5ucz17cHJlZml4OnZhLHF1YWxpZnk6ZnVu
Y3Rpb24obil7dmFyIHQ9bi5pbmRleE9mKCI6IiksZT1uO3JldHVybiB0Pj0wJiYoZT1uLnN1YnN0
cmluZygwLHQpLG49bi5zdWJzdHJpbmcodCsxKSksdmEuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNl
OnZhW2VdLGxvY2FsOm59Om59fSxwYS5hdHRyPWZ1bmN0aW9uKG4sdCl7aWYoYXJndW1lbnRzLmxl
bmd0aDwyKXtpZigic3RyaW5nIj09dHlwZW9mIG4pe3ZhciBlPXRoaXMubm9kZSgpO3JldHVybiBu
PVpvLm5zLnF1YWxpZnkobiksbi5sb2NhbD9lLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2Nh
bCk6ZS5nZXRBdHRyaWJ1dGUobil9Zm9yKHQgaW4gbil0aGlzLmVhY2goUyh0LG5bdF0pKTtyZXR1
cm4gdGhpc31yZXR1cm4gdGhpcy5lYWNoKFMobix0KSl9LHBhLmNsYXNzZWQ9ZnVuY3Rpb24obix0
KXtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7dmFyIGU9dGhp
cy5ub2RlKCkscj0obj1BKG4pKS5sZW5ndGgsdT0tMTtpZih0PWUuY2xhc3NMaXN0KXtmb3IoOysr
dTxyOylpZighdC5jb250YWlucyhuW3VdKSlyZXR1cm4hMX1lbHNlIGZvcih0PWUuZ2V0QXR0cmli
dXRlKCJjbGFzcyIpOysrdTxyOylpZighRShuW3VdKS50ZXN0KHQpKXJldHVybiExO3JldHVybiEw
fWZvcih0IGluIG4pdGhpcy5lYWNoKEModCxuW3RdKSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMu
ZWFjaChDKG4sdCkpfSxwYS5zdHlsZT1mdW5jdGlvbihuLHQsZSl7dmFyIHI9YXJndW1lbnRzLmxl
bmd0aDtpZigzPnIpe2lmKCJzdHJpbmciIT10eXBlb2Ygbil7Mj5yJiYodD0iIik7Zm9yKGUgaW4g
bil0aGlzLmVhY2goeihlLG5bZV0sdCkpO3JldHVybiB0aGlzfWlmKDI+cilyZXR1cm4gV28uZ2V0
Q29tcHV0ZWRTdHlsZSh0aGlzLm5vZGUoKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKG4pO2U9IiJ9
cmV0dXJuIHRoaXMuZWFjaCh6KG4sdCxlKSl9LHBhLnByb3BlcnR5PWZ1bmN0aW9uKG4sdCl7aWYo
YXJndW1lbnRzLmxlbmd0aDwyKXtpZigic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIHRoaXMubm9k
ZSgpW25dO2Zvcih0IGluIG4pdGhpcy5lYWNoKEwodCxuW3RdKSk7cmV0dXJuIHRoaXN9cmV0dXJu
IHRoaXMuZWFjaChMKG4sdCkpfSxwYS50ZXh0PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoP3RoaXMuZWFjaCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbigpe3ZhciB0PW4u
YXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09dD8iIjp0fTpudWxs
PT1uP2Z1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD0iIn06ZnVuY3Rpb24oKXt0aGlzLnRleHRD
b250ZW50PW59KTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0scGEuaHRtbD1mdW5jdGlvbihuKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVu
Y3Rpb24oKXt2YXIgdD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxs
PT10PyIiOnR9Om51bGw9PW4/ZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD0iIn06ZnVuY3Rpb24o
KXt0aGlzLmlubmVySFRNTD1ufSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxwYS5hcHBlbmQ9ZnVu
Y3Rpb24obil7cmV0dXJuIG49VChuKSx0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlz
LmFwcGVuZENoaWxkKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pfSxwYS5pbnNlcnQ9ZnVuY3Rp
b24obix0KXtyZXR1cm4gbj1UKG4pLHQ9Yih0KSx0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVy
biB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LmFwcGx5KHRoaXMs
YXJndW1lbnRzKXx8bnVsbCl9KX0scGEucmVtb3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbigpe3ZhciBuPXRoaXMucGFyZW50Tm9kZTtuJiZuLnJlbW92ZUNoaWxkKHRoaXMp
fSl9LHBhLmRhdGE9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKG4sZSl7dmFyIHIsdSxpLGE9bi5s
ZW5ndGgsZj1lLmxlbmd0aCxoPU1hdGgubWluKGEsZiksZz1uZXcgQXJyYXkoZikscD1uZXcgQXJy
YXkoZiksdj1uZXcgQXJyYXkoYSk7aWYodCl7dmFyIGQsbT1uZXcgbyx5PW5ldyBvLHg9W107Zm9y
KHI9LTE7KytyPGE7KWQ9dC5jYWxsKHU9bltyXSx1Ll9fZGF0YV9fLHIpLG0uaGFzKGQpP3Zbcl09
dTptLnNldChkLHUpLHgucHVzaChkKTtmb3Iocj0tMTsrK3I8ZjspZD10LmNhbGwoZSxpPWVbcl0s
ciksKHU9bS5nZXQoZCkpPyhnW3JdPXUsdS5fX2RhdGFfXz1pKTp5LmhhcyhkKXx8KHBbcl09cShp
KSkseS5zZXQoZCxpKSxtLnJlbW92ZShkKTtmb3Iocj0tMTsrK3I8YTspbS5oYXMoeFtyXSkmJih2
W3JdPW5bcl0pfWVsc2V7Zm9yKHI9LTE7KytyPGg7KXU9bltyXSxpPWVbcl0sdT8odS5fX2RhdGFf
Xz1pLGdbcl09dSk6cFtyXT1xKGkpO2Zvcig7Zj5yOysrcilwW3JdPXEoZVtyXSk7Zm9yKDthPnI7
KytyKXZbcl09bltyXX1wLnVwZGF0ZT1nLHAucGFyZW50Tm9kZT1nLnBhcmVudE5vZGU9di5wYXJl
bnROb2RlPW4ucGFyZW50Tm9kZSxjLnB1c2gocCkscy5wdXNoKGcpLGwucHVzaCh2KX12YXIgcix1
LGk9LTEsYT10aGlzLmxlbmd0aDtpZighYXJndW1lbnRzLmxlbmd0aCl7Zm9yKG49bmV3IEFycmF5
KGE9KHI9dGhpc1swXSkubGVuZ3RoKTsrK2k8YTspKHU9cltpXSkmJihuW2ldPXUuX19kYXRhX18p
O3JldHVybiBufXZhciBjPVUoW10pLHM9XyhbXSksbD1fKFtdKTtpZigiZnVuY3Rpb24iPT10eXBl
b2Ygbilmb3IoOysraTxhOyllKHI9dGhpc1tpXSxuLmNhbGwocixyLnBhcmVudE5vZGUuX19kYXRh
X18saSkpO2Vsc2UgZm9yKDsrK2k8YTspZShyPXRoaXNbaV0sbik7cmV0dXJuIHMuZW50ZXI9ZnVu
Y3Rpb24oKXtyZXR1cm4gY30scy5leGl0PWZ1bmN0aW9uKCl7cmV0dXJuIGx9LHN9LHBhLmRhdHVt
PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0
YV9fIixuKTp0aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIpfSxwYS5maWx0ZXI9ZnVuY3Rpb24obil7
dmFyIHQsZSxyLHU9W107ImZ1bmN0aW9uIiE9dHlwZW9mIG4mJihuPVIobikpO2Zvcih2YXIgaT0w
LG89dGhpcy5sZW5ndGg7bz5pO2krKyl7dS5wdXNoKHQ9W10pLHQucGFyZW50Tm9kZT0oZT10aGlz
W2ldKS5wYXJlbnROb2RlO2Zvcih2YXIgYT0wLGM9ZS5sZW5ndGg7Yz5hO2ErKykocj1lW2FdKSYm
bi5jYWxsKHIsci5fX2RhdGFfXyxhLGkpJiZ0LnB1c2gocil9cmV0dXJuIF8odSl9LHBhLm9yZGVy
PWZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xLHQ9dGhpcy5sZW5ndGg7KytuPHQ7KWZvcih2YXIgZSxy
PXRoaXNbbl0sdT1yLmxlbmd0aC0xLGk9clt1XTstLXU+PTA7KShlPXJbdV0pJiYoaSYmaSE9PWUu
bmV4dFNpYmxpbmcmJmkucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSxpKSxpPWUpO3JldHVybiB0
aGlzfSxwYS5zb3J0PWZ1bmN0aW9uKG4pe249RC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7Zm9yKHZh
ciB0PS0xLGU9dGhpcy5sZW5ndGg7Kyt0PGU7KXRoaXNbdF0uc29ydChuKTtyZXR1cm4gdGhpcy5v
cmRlcigpfSxwYS5lYWNoPWZ1bmN0aW9uKG4pe3JldHVybiBQKHRoaXMsZnVuY3Rpb24odCxlLHIp
e24uY2FsbCh0LHQuX19kYXRhX18sZSxyKX0pfSxwYS5jYWxsPWZ1bmN0aW9uKG4pe3ZhciB0PVhv
KGFyZ3VtZW50cyk7cmV0dXJuIG4uYXBwbHkodFswXT10aGlzLHQpLHRoaXN9LHBhLmVtcHR5PWZ1
bmN0aW9uKCl7cmV0dXJuIXRoaXMubm9kZSgpfSxwYS5ub2RlPWZ1bmN0aW9uKCl7Zm9yKHZhciBu
PTAsdD10aGlzLmxlbmd0aDt0Pm47bisrKWZvcih2YXIgZT10aGlzW25dLHI9MCx1PWUubGVuZ3Ro
O3U+cjtyKyspe3ZhciBpPWVbcl07aWYoaSlyZXR1cm4gaX1yZXR1cm4gbnVsbH0scGEuc2l6ZT1m
dW5jdGlvbigpe3ZhciBuPTA7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpeysrbn0pLG59O3Zh
ciBkYT1bXTtaby5zZWxlY3Rpb24uZW50ZXI9VSxaby5zZWxlY3Rpb24uZW50ZXIucHJvdG90eXBl
PWRhLGRhLmFwcGVuZD1wYS5hcHBlbmQsZGEuZW1wdHk9cGEuZW1wdHksZGEubm9kZT1wYS5ub2Rl
LGRhLmNhbGw9cGEuY2FsbCxkYS5zaXplPXBhLnNpemUsZGEuc2VsZWN0PWZ1bmN0aW9uKG4pe2Zv
cih2YXIgdCxlLHIsdSxpLG89W10sYT0tMSxjPXRoaXMubGVuZ3RoOysrYTxjOyl7cj0odT10aGlz
W2FdKS51cGRhdGUsby5wdXNoKHQ9W10pLHQucGFyZW50Tm9kZT11LnBhcmVudE5vZGU7Zm9yKHZh
ciBzPS0xLGw9dS5sZW5ndGg7KytzPGw7KShpPXVbc10pPyh0LnB1c2gocltzXT1lPW4uY2FsbCh1
LnBhcmVudE5vZGUsaS5fX2RhdGFfXyxzLGEpKSxlLl9fZGF0YV9fPWkuX19kYXRhX18pOnQucHVz
aChudWxsKX1yZXR1cm4gXyhvKX0sZGEuaW5zZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg8MiYmKHQ9aih0aGlzKSkscGEuaW5zZXJ0LmNhbGwodGhpcyxuLHQpfSxwYS50
cmFuc2l0aW9uPWZ1bmN0aW9uKCl7Zm9yKHZhciBuLHQsZT1Tc3x8KytOcyxyPVtdLHU9a3N8fHt0
aW1lOkRhdGUubm93KCksZWFzZTp4dSxkZWxheTowLGR1cmF0aW9uOjI1MH0saT0tMSxvPXRoaXMu
bGVuZ3RoOysraTxvOyl7ci5wdXNoKG49W10pO2Zvcih2YXIgYT10aGlzW2ldLGM9LTEscz1hLmxl
bmd0aDsrK2M8czspKHQ9YVtjXSkmJlBvKHQsYyxlLHUpLG4ucHVzaCh0KX1yZXR1cm4gcW8ocixl
KX0scGEuaW50ZXJydXB0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChIKX0sWm8uc2VsZWN0
PWZ1bmN0aW9uKG4pe3ZhciB0PVsic3RyaW5nIj09dHlwZW9mIG4/bGEobiwkbyk6bl07cmV0dXJu
IHQucGFyZW50Tm9kZT1CbyxfKFt0XSl9LFpvLnNlbGVjdEFsbD1mdW5jdGlvbihuKXt2YXIgdD1Y
bygic3RyaW5nIj09dHlwZW9mIG4/ZmEobiwkbyk6bik7cmV0dXJuIHQucGFyZW50Tm9kZT1Cbyxf
KFt0XSl9O3ZhciBtYT1aby5zZWxlY3QoQm8pO3BhLm9uPWZ1bmN0aW9uKG4sdCxlKXt2YXIgcj1h
cmd1bWVudHMubGVuZ3RoO2lmKDM+cil7aWYoInN0cmluZyIhPXR5cGVvZiBuKXsyPnImJih0PSEx
KTtmb3IoZSBpbiBuKXRoaXMuZWFjaChGKGUsbltlXSx0KSk7cmV0dXJuIHRoaXN9aWYoMj5yKXJl
dHVybihyPXRoaXMubm9kZSgpWyJfX29uIituXSkmJnIuXztlPSExfXJldHVybiB0aGlzLmVhY2go
RihuLHQsZSkpfTt2YXIgeWE9Wm8ubWFwKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVh
dmU6Im1vdXNlb3V0In0pO3lhLmZvckVhY2goZnVuY3Rpb24obil7Im9uIituIGluICRvJiZ5YS5y
ZW1vdmUobil9KTt2YXIgeGE9Im9uc2VsZWN0c3RhcnQiaW4gJG8/bnVsbDpwKEJvLnN0eWxlLCJ1
c2VyU2VsZWN0IiksTWE9MDtaby5tb3VzZT1mdW5jdGlvbihuKXtyZXR1cm4gWihuLHgoKSl9O3Zh
ciBfYT0vV2ViS2l0Ly50ZXN0KFdvLm5hdmlnYXRvci51c2VyQWdlbnQpPy0xOjA7Wm8udG91Y2hl
cz1mdW5jdGlvbihuLHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PXgoKS50b3VjaGVz
KSx0P1hvKHQpLm1hcChmdW5jdGlvbih0KXt2YXIgZT1aKG4sdCk7cmV0dXJuIGUuaWRlbnRpZmll
cj10LmlkZW50aWZpZXIsZX0pOltdfSxaby5iZWhhdmlvci5kcmFnPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gbigpe3RoaXMub24oIm1vdXNlZG93bi5kcmFnIix1KS5vbigidG91Y2hzdGFydC5kcmFnIixp
KX1mdW5jdGlvbiB0KG4sdCx1LGksbyl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3Zh
ciBuLGUscj10KGgsdik7ciYmKG49clswXS14WzBdLGU9clsxXS14WzFdLHB8PW58ZSx4PXIsZyh7
dHlwZToiZHJhZyIseDpyWzBdK3NbMF0seTpyWzFdK3NbMV0sZHg6bixkeTplfSkpfWZ1bmN0aW9u
IGMoKXt0KGgsdikmJihtLm9uKGkrZCxudWxsKS5vbihvK2QsbnVsbCkseShwJiZaby5ldmVudC50
YXJnZXQ9PT1mKSxnKHt0eXBlOiJkcmFnZW5kIn0pKX12YXIgcyxsPXRoaXMsZj1aby5ldmVudC50
YXJnZXQsaD1sLnBhcmVudE5vZGUsZz1lLm9mKGwsYXJndW1lbnRzKSxwPTAsdj1uKCksZD0iLmRy
YWciKyhudWxsPT12PyIiOiItIit2KSxtPVpvLnNlbGVjdCh1KCkpLm9uKGkrZCxhKS5vbihvK2Qs
YykseT1JKCkseD10KGgsdik7cj8ocz1yLmFwcGx5KGwsYXJndW1lbnRzKSxzPVtzLngteFswXSxz
LnkteFsxXV0pOnM9WzAsMF0sZyh7dHlwZToiZHJhZ3N0YXJ0In0pfX12YXIgZT1NKG4sImRyYWci
LCJkcmFnc3RhcnQiLCJkcmFnZW5kIikscj1udWxsLHU9dCh2LFpvLm1vdXNlLCQsIm1vdXNlbW92
ZSIsIm1vdXNldXAiKSxpPXQoVixaby50b3VjaCxYLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIpO3Jl
dHVybiBuLm9yaWdpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4p
OnJ9LFpvLnJlYmluZChuLGUsIm9uIil9O3ZhciBiYT1NYXRoLlBJLHdhPTIqYmEsU2E9YmEvMixr
YT0xZS02LEVhPWthKmthLEFhPWJhLzE4MCxDYT0xODAvYmEsTmE9TWF0aC5TUVJUMix6YT0yLExh
PTQ7Wm8uaW50ZXJwb2xhdGVab29tPWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZShuKXt2YXIgdD1u
Knk7aWYobSl7dmFyIGU9USh2KSxvPWkvKHphKmgpKihlKm50KE5hKnQrdiktSyh2KSk7cmV0dXJu
W3IrbypzLHUrbypsLGkqZS9RKE5hKnQrdildfXJldHVybltyK24qcyx1K24qbCxpKk1hdGguZXhw
KE5hKnQpXX12YXIgcj1uWzBdLHU9blsxXSxpPW5bMl0sbz10WzBdLGE9dFsxXSxjPXRbMl0scz1v
LXIsbD1hLXUsZj1zKnMrbCpsLGg9TWF0aC5zcXJ0KGYpLGc9KGMqYy1pKmkrTGEqZikvKDIqaSp6
YSpoKSxwPShjKmMtaSppLUxhKmYpLygyKmMqemEqaCksdj1NYXRoLmxvZyhNYXRoLnNxcnQoZypn
KzEpLWcpLGQ9TWF0aC5sb2coTWF0aC5zcXJ0KHAqcCsxKS1wKSxtPWQtdix5PShtfHxNYXRoLmxv
ZyhjL2kpKS9OYTtyZXR1cm4gZS5kdXJhdGlvbj0xZTMqeSxlfSxaby5iZWhhdmlvci56b29tPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtuLm9uKEEscykub24oUmErIi56b29tIixmKS5vbigiZGJs
Y2xpY2suem9vbSIsaCkub24oeixsKX1mdW5jdGlvbiB0KG4pe3JldHVyblsoblswXS1TLngpL1Mu
aywoblsxXS1TLnkpL1Mua119ZnVuY3Rpb24gZShuKXtyZXR1cm5bblswXSpTLmsrUy54LG5bMV0q
Uy5rK1MueV19ZnVuY3Rpb24gcihuKXtTLms9TWF0aC5tYXgoRVswXSxNYXRoLm1pbihFWzFdLG4p
KX1mdW5jdGlvbiB1KG4sdCl7dD1lKHQpLFMueCs9blswXS10WzBdLFMueSs9blsxXS10WzFdfWZ1
bmN0aW9uIGkoKXtfJiZfLmRvbWFpbih4LnJhbmdlKCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybihu
LVMueCkvUy5rfSkubWFwKHguaW52ZXJ0KSksdyYmdy5kb21haW4oYi5yYW5nZSgpLm1hcChmdW5j
dGlvbihuKXtyZXR1cm4obi1TLnkpL1Mua30pLm1hcChiLmludmVydCkpfWZ1bmN0aW9uIG8obil7
bih7dHlwZToiem9vbXN0YXJ0In0pfWZ1bmN0aW9uIGEobil7aSgpLG4oe3R5cGU6Inpvb20iLHNj
YWxlOlMuayx0cmFuc2xhdGU6W1MueCxTLnldfSl9ZnVuY3Rpb24gYyhuKXtuKHt0eXBlOiJ6b29t
ZW5kIn0pfWZ1bmN0aW9uIHMoKXtmdW5jdGlvbiBuKCl7bD0xLHUoWm8ubW91c2UociksaCksYShz
KX1mdW5jdGlvbiBlKCl7Zi5vbihDLG51bGwpLm9uKE4sbnVsbCksZyhsJiZaby5ldmVudC50YXJn
ZXQ9PT1pKSxjKHMpfXZhciByPXRoaXMsaT1aby5ldmVudC50YXJnZXQscz1MLm9mKHIsYXJndW1l
bnRzKSxsPTAsZj1aby5zZWxlY3QoV28pLm9uKEMsbikub24oTixlKSxoPXQoWm8ubW91c2Uocikp
LGc9SSgpO0guY2FsbChyKSxvKHMpfWZ1bmN0aW9uIGwoKXtmdW5jdGlvbiBuKCl7dmFyIG49Wm8u
dG91Y2hlcyhnKTtyZXR1cm4gaD1TLmssbi5mb3JFYWNoKGZ1bmN0aW9uKG4pe24uaWRlbnRpZmll
ciBpbiB2JiYodltuLmlkZW50aWZpZXJdPXQobikpfSksbn1mdW5jdGlvbiBlKCl7dmFyIHQ9Wm8u
ZXZlbnQudGFyZ2V0O1pvLnNlbGVjdCh0KS5vbihNLGkpLm9uKF8sZiksYi5wdXNoKHQpO2Zvcih2
YXIgZT1aby5ldmVudC5jaGFuZ2VkVG91Y2hlcyxvPTAsYz1lLmxlbmd0aDtjPm87KytvKXZbZVtv
XS5pZGVudGlmaWVyXT1udWxsO3ZhciBzPW4oKSxsPURhdGUubm93KCk7aWYoMT09PXMubGVuZ3Ro
KXtpZig1MDA+bC1tKXt2YXIgaD1zWzBdLGc9dltoLmlkZW50aWZpZXJdO3IoMipTLmspLHUoaCxn
KSx5KCksYShwKX1tPWx9ZWxzZSBpZihzLmxlbmd0aD4xKXt2YXIgaD1zWzBdLHg9c1sxXSx3PWhb
MF0teFswXSxrPWhbMV0teFsxXTtkPXcqdytrKmt9fWZ1bmN0aW9uIGkoKXtmb3IodmFyIG4sdCxl
LGksbz1aby50b3VjaGVzKGcpLGM9MCxzPW8ubGVuZ3RoO3M+YzsrK2MsaT1udWxsKWlmKGU9b1tj
XSxpPXZbZS5pZGVudGlmaWVyXSl7aWYodClicmVhaztuPWUsdD1pfWlmKGkpe3ZhciBsPShsPWVb
MF0tblswXSkqbCsobD1lWzFdLW5bMV0pKmwsZj1kJiZNYXRoLnNxcnQobC9kKTtuPVsoblswXStl
WzBdKS8yLChuWzFdK2VbMV0pLzJdLHQ9Wyh0WzBdK2lbMF0pLzIsKHRbMV0raVsxXSkvMl0scihm
KmgpfW09bnVsbCx1KG4sdCksYShwKX1mdW5jdGlvbiBmKCl7aWYoWm8uZXZlbnQudG91Y2hlcy5s
ZW5ndGgpe2Zvcih2YXIgdD1aby5ldmVudC5jaGFuZ2VkVG91Y2hlcyxlPTAscj10Lmxlbmd0aDty
PmU7KytlKWRlbGV0ZSB2W3RbZV0uaWRlbnRpZmllcl07Zm9yKHZhciB1IGluIHYpcmV0dXJuIHZv
aWQgbigpfVpvLnNlbGVjdEFsbChiKS5vbih4LG51bGwpLHcub24oQSxzKS5vbih6LGwpLGsoKSxj
KHApfXZhciBoLGc9dGhpcyxwPUwub2YoZyxhcmd1bWVudHMpLHY9e30sZD0wLHg9Ii56b29tLSIr
Wm8uZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uaWRlbnRpZmllcixNPSJ0b3VjaG1vdmUiK3gsXz0i
dG91Y2hlbmQiK3gsYj1bXSx3PVpvLnNlbGVjdChnKS5vbihBLG51bGwpLm9uKHosZSksaz1JKCk7
SC5jYWxsKGcpLGUoKSxvKHApfWZ1bmN0aW9uIGYoKXt2YXIgbj1MLm9mKHRoaXMsYXJndW1lbnRz
KTtkP2NsZWFyVGltZW91dChkKTooZz10KHA9dnx8Wm8ubW91c2UodGhpcykpLEguY2FsbCh0aGlz
KSxvKG4pKSxkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtkPW51bGwsYyhuKX0sNTApLHkoKSxyKE1h
dGgucG93KDIsLjAwMipUYSgpKSpTLmspLHUocCxnKSxhKG4pfWZ1bmN0aW9uIGgoKXt2YXIgbj1M
Lm9mKHRoaXMsYXJndW1lbnRzKSxlPVpvLm1vdXNlKHRoaXMpLGk9dChlKSxzPU1hdGgubG9nKFMu
aykvTWF0aC5MTjI7byhuKSxyKE1hdGgucG93KDIsWm8uZXZlbnQuc2hpZnRLZXk/TWF0aC5jZWls
KHMpLTE6TWF0aC5mbG9vcihzKSsxKSksdShlLGkpLGEobiksYyhuKX12YXIgZyxwLHYsZCxtLHgs
XyxiLHcsUz17eDowLHk6MCxrOjF9LGs9Wzk2MCw1MDBdLEU9cWEsQT0ibW91c2Vkb3duLnpvb20i
LEM9Im1vdXNlbW92ZS56b29tIixOPSJtb3VzZXVwLnpvb20iLHo9InRvdWNoc3RhcnQuem9vbSIs
TD1NKG4sInpvb21zdGFydCIsInpvb20iLCJ6b29tZW5kIik7cmV0dXJuIG4uZXZlbnQ9ZnVuY3Rp
b24obil7bi5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49TC5vZih0aGlzLGFyZ3VtZW50cyksdD1TO1Nz
P1pvLnNlbGVjdCh0aGlzKS50cmFuc2l0aW9uKCkuZWFjaCgic3RhcnQuem9vbSIsZnVuY3Rpb24o
KXtTPXRoaXMuX19jaGFydF9ffHx7eDowLHk6MCxrOjF9LG8obil9KS50d2Vlbigiem9vbTp6b29t
IixmdW5jdGlvbigpe3ZhciBlPWtbMF0scj1rWzFdLHU9ZS8yLGk9ci8yLG89Wm8uaW50ZXJwb2xh
dGVab29tKFsodS1TLngpL1MuaywoaS1TLnkpL1MuayxlL1Mua10sWyh1LXQueCkvdC5rLChpLXQu
eSkvdC5rLGUvdC5rXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPW8odCksYz1lL3JbMl07dGhp
cy5fX2NoYXJ0X189Uz17eDp1LXJbMF0qYyx5OmktclsxXSpjLGs6Y30sYShuKX19KS5lYWNoKCJl
bmQuem9vbSIsZnVuY3Rpb24oKXtjKG4pfSk6KHRoaXMuX19jaGFydF9fPVMsbyhuKSxhKG4pLGMo
bikpfSl9LG4udHJhbnNsYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhT
PXt4Oit0WzBdLHk6K3RbMV0sazpTLmt9LGkoKSxuKTpbUy54LFMueV19LG4uc2NhbGU9ZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9e3g6Uy54LHk6Uy55LGs6K3R9LGkoKSxu
KTpTLmt9LG4uc2NhbGVFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KEU9bnVsbD09dD9xYTpbK3RbMF0sK3RbMV1dLG4pOkV9LG4uY2VudGVyPWZ1bmN0aW9uKHQpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PXQmJlsrdFswXSwrdFsxXV0sbik6dn0sbi5zaXplPWZ1
bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhrPXQmJlsrdFswXSwrdFsxXV0sbik6
a30sbi54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhfPXQseD10LmNvcHko
KSxTPXt4OjAseTowLGs6MX0sbik6X30sbi55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh3PXQsYj10LmNvcHkoKSxTPXt4OjAseTowLGs6MX0sbik6d30sWm8ucmViaW5kKG4s
TCwib24iKX07dmFyIFRhLHFhPVswLDEvMF0sUmE9Im9ud2hlZWwiaW4gJG8/KFRhPWZ1bmN0aW9u
KCl7cmV0dXJuLVpvLmV2ZW50LmRlbHRhWSooWm8uZXZlbnQuZGVsdGFNb2RlPzEyMDoxKX0sIndo
ZWVsIik6Im9ubW91c2V3aGVlbCJpbiAkbz8oVGE9ZnVuY3Rpb24oKXtyZXR1cm4gWm8uZXZlbnQu
d2hlZWxEZWx0YX0sIm1vdXNld2hlZWwiKTooVGE9ZnVuY3Rpb24oKXtyZXR1cm4tWm8uZXZlbnQu
ZGV0YWlsfSwiTW96TW91c2VQaXhlbFNjcm9sbCIpO1pvLmNvbG9yPWV0LGV0LnByb3RvdHlwZS50
b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpKyIifSxaby5oc2w9cnQ7dmFyIERh
PXJ0LnByb3RvdHlwZT1uZXcgZXQ7RGEuYnJpZ2h0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIG49TWF0
aC5wb3coLjcsYXJndW1lbnRzLmxlbmd0aD9uOjEpLG5ldyBydCh0aGlzLmgsdGhpcy5zLHRoaXMu
bC9uKX0sRGEuZGFya2VyPWZ1bmN0aW9uKG4pe3JldHVybiBuPU1hdGgucG93KC43LGFyZ3VtZW50
cy5sZW5ndGg/bjoxKSxuZXcgcnQodGhpcy5oLHRoaXMucyxuKnRoaXMubCl9LERhLnJnYj1mdW5j
dGlvbigpe3JldHVybiB1dCh0aGlzLmgsdGhpcy5zLHRoaXMubCl9LFpvLmhjbD1pdDt2YXIgUGE9
aXQucHJvdG90eXBlPW5ldyBldDtQYS5icmlnaHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IGl0
KHRoaXMuaCx0aGlzLmMsTWF0aC5taW4oMTAwLHRoaXMubCtVYSooYXJndW1lbnRzLmxlbmd0aD9u
OjEpKSl9LFBhLmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IGl0KHRoaXMuaCx0aGlzLmMs
TWF0aC5tYXgoMCx0aGlzLmwtVWEqKGFyZ3VtZW50cy5sZW5ndGg/bjoxKSkpfSxQYS5yZ2I9ZnVu
Y3Rpb24oKXtyZXR1cm4gb3QodGhpcy5oLHRoaXMuYyx0aGlzLmwpLnJnYigpfSxaby5sYWI9YXQ7
dmFyIFVhPTE4LGphPS45NTA0NyxIYT0xLEZhPTEuMDg4ODMsT2E9YXQucHJvdG90eXBlPW5ldyBl
dDtPYS5icmlnaHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IGF0KE1hdGgubWluKDEwMCx0aGlz
LmwrVWEqKGFyZ3VtZW50cy5sZW5ndGg/bjoxKSksdGhpcy5hLHRoaXMuYil9LE9hLmRhcmtlcj1m
dW5jdGlvbihuKXtyZXR1cm4gbmV3IGF0KE1hdGgubWF4KDAsdGhpcy5sLVVhKihhcmd1bWVudHMu
bGVuZ3RoP246MSkpLHRoaXMuYSx0aGlzLmIpfSxPYS5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gY3Qo
dGhpcy5sLHRoaXMuYSx0aGlzLmIpfSxaby5yZ2I9Z3Q7dmFyIFlhPWd0LnByb3RvdHlwZT1uZXcg
ZXQ7WWEuYnJpZ2h0ZXI9ZnVuY3Rpb24obil7bj1NYXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3Ro
P246MSk7dmFyIHQ9dGhpcy5yLGU9dGhpcy5nLHI9dGhpcy5iLHU9MzA7cmV0dXJuIHR8fGV8fHI/
KHQmJnU+dCYmKHQ9dSksZSYmdT5lJiYoZT11KSxyJiZ1PnImJihyPXUpLG5ldyBndChNYXRoLm1p
bigyNTUsdC9uKSxNYXRoLm1pbigyNTUsZS9uKSxNYXRoLm1pbigyNTUsci9uKSkpOm5ldyBndCh1
LHUsdSl9LFlhLmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4gbj1NYXRoLnBvdyguNyxhcmd1bWVu
dHMubGVuZ3RoP246MSksbmV3IGd0KG4qdGhpcy5yLG4qdGhpcy5nLG4qdGhpcy5iKX0sWWEuaHNs
PWZ1bmN0aW9uKCl7cmV0dXJuIHl0KHRoaXMucix0aGlzLmcsdGhpcy5iKX0sWWEudG9TdHJpbmc9
ZnVuY3Rpb24oKXtyZXR1cm4iIyIrZHQodGhpcy5yKStkdCh0aGlzLmcpK2R0KHRoaXMuYil9O3Zh
ciBJYT1aby5tYXAoe2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1
YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAs
YmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUs
Ymx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRl
dGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFs
OjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNv
bjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29s
ZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3Jl
eToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xp
dmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixk
YXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxk
YXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6
MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazox
NjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1
LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5
MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2
MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdy
YXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQs
aG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5k
aWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0
MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246
MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFu
OjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMy
MyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2
NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVl
Ojg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxp
Z2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGlt
ZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4
ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlk
OjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVk
aXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVv
aXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEy
LG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjks
bmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIx
Mzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQs
b3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgw
LHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlw
OjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUs
cGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlZDoxNjcx
MTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEy
NzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3
LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1
ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3
MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAs
dGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUs
dHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2
Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEw
MTQ1MDc0fSk7SWEuZm9yRWFjaChmdW5jdGlvbihuLHQpe0lhLnNldChuLHB0KHQpKX0pLFpvLmZ1
bmN0b3I9YnQsWm8ueGhyPVN0KHd0KSxaby5kc3Y9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKG4s
ZSxpKXthcmd1bWVudHMubGVuZ3RoPDMmJihpPWUsZT1udWxsKTt2YXIgbz1rdChuLHQsbnVsbD09
ZT9yOnUoZSksaSk7cmV0dXJuIG8ucm93PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoP28ucmVzcG9uc2UobnVsbD09KGU9bik/cjp1KG4pKTplfSxvfWZ1bmN0aW9uIHIobil7cmV0
dXJuIGUucGFyc2Uobi5yZXNwb25zZVRleHQpfWZ1bmN0aW9uIHUobil7cmV0dXJuIGZ1bmN0aW9u
KHQpe3JldHVybiBlLnBhcnNlKHQucmVzcG9uc2VUZXh0LG4pfX1mdW5jdGlvbiBpKHQpe3JldHVy
biB0Lm1hcChvKS5qb2luKG4pfWZ1bmN0aW9uIG8obil7cmV0dXJuIGEudGVzdChuKT8nIicrbi5y
ZXBsYWNlKC9cIi9nLCciIicpKyciJzpufXZhciBhPW5ldyBSZWdFeHAoJ1siJytuKyJcbl0iKSxj
PW4uY2hhckNvZGVBdCgwKTtyZXR1cm4gZS5wYXJzZT1mdW5jdGlvbihuLHQpe3ZhciByO3JldHVy
biBlLnBhcnNlUm93cyhuLGZ1bmN0aW9uKG4sZSl7aWYocilyZXR1cm4gcihuLGUtMSk7dmFyIHU9
bmV3IEZ1bmN0aW9uKCJkIiwicmV0dXJuIHsiK24ubWFwKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIEpT
T04uc3RyaW5naWZ5KG4pKyI6IGRbIit0KyJdIn0pLmpvaW4oIiwiKSsifSIpO3I9dD9mdW5jdGlv
bihuLGUpe3JldHVybiB0KHUobiksZSl9OnV9KX0sZS5wYXJzZVJvd3M9ZnVuY3Rpb24obix0KXtm
dW5jdGlvbiBlKCl7aWYobD49cylyZXR1cm4gbztpZih1KXJldHVybiB1PSExLGk7dmFyIHQ9bDtp
ZigzND09PW4uY2hhckNvZGVBdCh0KSl7Zm9yKHZhciBlPXQ7ZSsrPHM7KWlmKDM0PT09bi5jaGFy
Q29kZUF0KGUpKXtpZigzNCE9PW4uY2hhckNvZGVBdChlKzEpKWJyZWFrOysrZX1sPWUrMjt2YXIg
cj1uLmNoYXJDb2RlQXQoZSsxKTtyZXR1cm4gMTM9PT1yPyh1PSEwLDEwPT09bi5jaGFyQ29kZUF0
KGUrMikmJisrbCk6MTA9PT1yJiYodT0hMCksbi5zdWJzdHJpbmcodCsxLGUpLnJlcGxhY2UoLyIi
L2csJyInKX1mb3IoO3M+bDspe3ZhciByPW4uY2hhckNvZGVBdChsKyspLGE9MTtpZigxMD09PXIp
dT0hMDtlbHNlIGlmKDEzPT09cil1PSEwLDEwPT09bi5jaGFyQ29kZUF0KGwpJiYoKytsLCsrYSk7
ZWxzZSBpZihyIT09Yyljb250aW51ZTtyZXR1cm4gbi5zdWJzdHJpbmcodCxsLWEpfXJldHVybiBu
LnN1YnN0cmluZyh0KX1mb3IodmFyIHIsdSxpPXt9LG89e30sYT1bXSxzPW4ubGVuZ3RoLGw9MCxm
PTA7KHI9ZSgpKSE9PW87KXtmb3IodmFyIGg9W107ciE9PWkmJnIhPT1vOyloLnB1c2gocikscj1l
KCk7KCF0fHwoaD10KGgsZisrKSkpJiZhLnB1c2goaCl9cmV0dXJuIGF9LGUuZm9ybWF0PWZ1bmN0
aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodFswXSkpcmV0dXJuIGUuZm9ybWF0Um93cyh0KTt2YXIg
cj1uZXcgaCx1PVtdO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24obil7Zm9yKHZhciB0IGluIG4p
ci5oYXModCl8fHUucHVzaChyLmFkZCh0KSl9KSxbdS5tYXAobykuam9pbihuKV0uY29uY2F0KHQu
bWFwKGZ1bmN0aW9uKHQpe3JldHVybiB1Lm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbyh0W25dKX0p
LmpvaW4obil9KSkuam9pbigiXG4iKX0sZS5mb3JtYXRSb3dzPWZ1bmN0aW9uKG4pe3JldHVybiBu
Lm1hcChpKS5qb2luKCJcbiIpfSxlfSxaby5jc3Y9Wm8uZHN2KCIsIiwidGV4dC9jc3YiKSxaby50
c3Y9Wm8uZHN2KCIgICAgIiwidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyIpLFpvLnRvdWNoPWZ1
bmN0aW9uKG4sdCxlKXtpZihhcmd1bWVudHMubGVuZ3RoPDMmJihlPXQsdD14KCkuY2hhbmdlZFRv
dWNoZXMpLHQpZm9yKHZhciByLHU9MCxpPXQubGVuZ3RoO2k+dTsrK3UpaWYoKHI9dFt1XSkuaWRl
bnRpZmllcj09PWUpcmV0dXJuIFoobixyKX07dmFyIFphLFZhLFhhLCRhLEJhLFdhPVdvW3AoV28s
InJlcXVlc3RBbmltYXRpb25GcmFtZSIpXXx8ZnVuY3Rpb24obil7c2V0VGltZW91dChuLDE3KX07
Wm8udGltZXI9ZnVuY3Rpb24obix0LGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7Mj5yJiYodD0w
KSwzPnImJihlPURhdGUubm93KCkpO3ZhciB1PWUrdCxpPXtjOm4sdDp1LGY6ITEsbjpudWxsfTtW
YT9WYS5uPWk6WmE9aSxWYT1pLFhhfHwoJGE9Y2xlYXJUaW1lb3V0KCRhKSxYYT0xLFdhKEF0KSl9
LFpvLnRpbWVyLmZsdXNoPWZ1bmN0aW9uKCl7Q3QoKSxOdCgpfSxaby5yb3VuZD1mdW5jdGlvbihu
LHQpe3JldHVybiB0P01hdGgucm91bmQobioodD1NYXRoLnBvdygxMCx0KSkpL3Q6TWF0aC5yb3Vu
ZChuKX07dmFyIEphPVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiXHhiNSIsIm0iLCIiLCJrIiwi
TSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdLm1hcChMdCk7Wm8uZm9ybWF0UHJlZml4PWZ1bmN0
aW9uKG4sdCl7dmFyIGU9MDtyZXR1cm4gbiYmKDA+biYmKG4qPS0xKSx0JiYobj1aby5yb3VuZChu
LHp0KG4sdCkpKSxlPTErTWF0aC5mbG9vcigxZS0xMitNYXRoLmxvZyhuKS9NYXRoLkxOMTApLGU9
TWF0aC5tYXgoLTI0LE1hdGgubWluKDI0LDMqTWF0aC5mbG9vcigoZS0xKS8zKSkpKSxKYVs4K2Uv
M119O3ZhciBHYT0vKD86KFtee10pPyhbPD49Xl0pKT8oWytcLSBdKT8oWyQjXSk/KDApPyhcZCsp
PygsKT8oXC4tP1xkKyk/KFthLXolXSk/L2ksS2E9Wm8ubWFwKHtiOmZ1bmN0aW9uKG4pe3JldHVy
biBuLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKG4pe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2Rl
KG4pfSxvOmZ1bmN0aW9uKG4pe3JldHVybiBuLnRvU3RyaW5nKDgpfSx4OmZ1bmN0aW9uKG4pe3Jl
dHVybiBuLnRvU3RyaW5nKDE2KX0sWDpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZygxNiku
dG9VcHBlckNhc2UoKX0sZzpmdW5jdGlvbihuLHQpe3JldHVybiBuLnRvUHJlY2lzaW9uKHQpfSxl
OmZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4udG9FeHBvbmVudGlhbCh0KX0sZjpmdW5jdGlvbihuLHQp
e3JldHVybiBuLnRvRml4ZWQodCl9LHI6ZnVuY3Rpb24obix0KXtyZXR1cm4obj1aby5yb3VuZChu
LHp0KG4sdCkpKS50b0ZpeGVkKE1hdGgubWF4KDAsTWF0aC5taW4oMjAsenQobiooMSsxZS0xNSks
dCkpKSl9fSksUWE9Wm8udGltZT17fSxuYz1EYXRlO1J0LnByb3RvdHlwZT17Z2V0RGF0ZTpmdW5j
dGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDRGF0ZSgpfSxnZXREYXk6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fLmdldFVUQ0RheSgpfSxnZXRGdWxsWWVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll8uZ2V0VVRDRnVsbFllYXIoKX0sZ2V0SG91cnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdl
dFVUQ0hvdXJzKCl9LGdldE1pbGxpc2Vjb25kczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0
VVRDTWlsbGlzZWNvbmRzKCl9LGdldE1pbnV0ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdl
dFVUQ01pbnV0ZXMoKX0sZ2V0TW9udGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ01v
bnRoKCl9LGdldFNlY29uZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ1NlY29uZHMo
KX0sZ2V0VGltZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VGltZSgpfSxnZXRUaW1lem9u
ZU9mZnNldDpmdW5jdGlvbigpe3JldHVybiAwfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuXy52YWx1ZU9mKCl9LHNldERhdGU6ZnVuY3Rpb24oKXt0Yy5zZXRVVENEYXRlLmFwcGx5KHRo
aXMuXyxhcmd1bWVudHMpfSxzZXREYXk6ZnVuY3Rpb24oKXt0Yy5zZXRVVENEYXkuYXBwbHkodGhp
cy5fLGFyZ3VtZW50cyl9LHNldEZ1bGxZZWFyOmZ1bmN0aW9uKCl7dGMuc2V0VVRDRnVsbFllYXIu
YXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldEhvdXJzOmZ1bmN0aW9uKCl7dGMuc2V0VVRDSG91
cnMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldE1pbGxpc2Vjb25kczpmdW5jdGlvbigpe3Rj
LnNldFVUQ01pbGxpc2Vjb25kcy5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0TWludXRlczpm
dW5jdGlvbigpe3RjLnNldFVUQ01pbnV0ZXMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldE1v
bnRoOmZ1bmN0aW9uKCl7dGMuc2V0VVRDTW9udGguYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNl
dFNlY29uZHM6ZnVuY3Rpb24oKXt0Yy5zZXRVVENTZWNvbmRzLmFwcGx5KHRoaXMuXyxhcmd1bWVu
dHMpfSxzZXRUaW1lOmZ1bmN0aW9uKCl7dGMuc2V0VGltZS5hcHBseSh0aGlzLl8sYXJndW1lbnRz
KX19O3ZhciB0Yz1EYXRlLnByb3RvdHlwZTtRYS55ZWFyPUR0KGZ1bmN0aW9uKG4pe3JldHVybiBu
PVFhLmRheShuKSxuLnNldE1vbnRoKDAsMSksbn0sZnVuY3Rpb24obix0KXtuLnNldEZ1bGxZZWFy
KG4uZ2V0RnVsbFllYXIoKSt0KX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0RnVsbFllYXIoKX0p
LFFhLnllYXJzPVFhLnllYXIucmFuZ2UsUWEueWVhcnMudXRjPVFhLnllYXIudXRjLnJhbmdlLFFh
LmRheT1EdChmdW5jdGlvbihuKXt2YXIgdD1uZXcgbmMoMmUzLDApO3JldHVybiB0LnNldEZ1bGxZ
ZWFyKG4uZ2V0RnVsbFllYXIoKSxuLmdldE1vbnRoKCksbi5nZXREYXRlKCkpLHR9LGZ1bmN0aW9u
KG4sdCl7bi5zZXREYXRlKG4uZ2V0RGF0ZSgpK3QpfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRE
YXRlKCktMX0pLFFhLmRheXM9UWEuZGF5LnJhbmdlLFFhLmRheXMudXRjPVFhLmRheS51dGMucmFu
Z2UsUWEuZGF5T2ZZZWFyPWZ1bmN0aW9uKG4pe3ZhciB0PVFhLnllYXIobik7cmV0dXJuIE1hdGgu
Zmxvb3IoKG4tdC02ZTQqKG4uZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0
KCkpKS84NjRlNSl9LFsic3VuZGF5IiwibW9uZGF5IiwidHVlc2RheSIsIndlZG5lc2RheSIsInRo
dXJzZGF5IiwiZnJpZGF5Iiwic2F0dXJkYXkiXS5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7dD03LXQ7
dmFyIGU9UWFbbl09RHQoZnVuY3Rpb24obil7cmV0dXJuKG49UWEuZGF5KG4pKS5zZXREYXRlKG4u
Z2V0RGF0ZSgpLShuLmdldERheSgpK3QpJTcpLG59LGZ1bmN0aW9uKG4sdCl7bi5zZXREYXRlKG4u
Z2V0RGF0ZSgpKzcqTWF0aC5mbG9vcih0KSl9LGZ1bmN0aW9uKG4pe3ZhciBlPVFhLnllYXIobiku
Z2V0RGF5KCk7cmV0dXJuIE1hdGguZmxvb3IoKFFhLmRheU9mWWVhcihuKSsoZSt0KSU3KS83KS0o
ZSE9PXQpfSk7UWFbbisicyJdPWUucmFuZ2UsUWFbbisicyJdLnV0Yz1lLnV0Yy5yYW5nZSxRYVtu
KyJPZlllYXIiXT1mdW5jdGlvbihuKXt2YXIgZT1RYS55ZWFyKG4pLmdldERheSgpO3JldHVybiBN
YXRoLmZsb29yKChRYS5kYXlPZlllYXIobikrKGUrdCklNykvNyl9fSksUWEud2Vlaz1RYS5zdW5k
YXksUWEud2Vla3M9UWEuc3VuZGF5LnJhbmdlLFFhLndlZWtzLnV0Yz1RYS5zdW5kYXkudXRjLnJh
bmdlLFFhLndlZWtPZlllYXI9UWEuc3VuZGF5T2ZZZWFyO3ZhciBlYz17Ii0iOiIiLF86IiAiLDA6
IjAifSxyYz0vXlxzKlxkKy8sdWM9L14lLztaby5sb2NhbGU9ZnVuY3Rpb24obil7cmV0dXJue251
bWJlckZvcm1hdDpUdChuKSx0aW1lRm9ybWF0OlV0KG4pfX07dmFyIGljPVpvLmxvY2FsZSh7ZGVj
aW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl0sZGF0
ZVRpbWU6IiVhICViICVlICVYICVZIixkYXRlOiIlbS8lZC8lWSIsdGltZToiJUg6JU06JVMiLHBl
cmlvZHM6WyJBTSIsIlBNIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRu
ZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwi
TW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZl
YnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2Vw
dGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkph
biIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIs
Ik5vdiIsIkRlYyJdfSk7Wm8uZm9ybWF0PWljLm51bWJlckZvcm1hdCxaby5nZW89e30sdWUucHJv
dG90eXBlPXtzOjAsdDowLGFkZDpmdW5jdGlvbihuKXtpZShuLHRoaXMudCxvYyksaWUob2Mucyx0
aGlzLnMsdGhpcyksdGhpcy5zP3RoaXMudCs9b2MudDp0aGlzLnM9b2MudH0scmVzZXQ6ZnVuY3Rp
b24oKXt0aGlzLnM9dGhpcy50PTB9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zfX07
dmFyIG9jPW5ldyB1ZTtaby5nZW8uc3RyZWFtPWZ1bmN0aW9uKG4sdCl7biYmYWMuaGFzT3duUHJv
cGVydHkobi50eXBlKT9hY1tuLnR5cGVdKG4sdCk6b2Uobix0KX07dmFyIGFjPXtGZWF0dXJlOmZ1
bmN0aW9uKG4sdCl7b2Uobi5nZW9tZXRyeSx0KX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24o
bix0KXtmb3IodmFyIGU9bi5mZWF0dXJlcyxyPS0xLHU9ZS5sZW5ndGg7KytyPHU7KW9lKGVbcl0u
Z2VvbWV0cnksdCl9fSxjYz17U3BoZXJlOmZ1bmN0aW9uKG4sdCl7dC5zcGhlcmUoKX0sUG9pbnQ6
ZnVuY3Rpb24obix0KXtuPW4uY29vcmRpbmF0ZXMsdC5wb2ludChuWzBdLG5bMV0sblsyXSl9LE11
bHRpUG9pbnQ6ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9bi5jb29yZGluYXRlcyxyPS0xLHU9ZS5s
ZW5ndGg7KytyPHU7KW49ZVtyXSx0LnBvaW50KG5bMF0sblsxXSxuWzJdKX0sTGluZVN0cmluZzpm
dW5jdGlvbihuLHQpe2FlKG4uY29vcmRpbmF0ZXMsdCwwKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0
aW9uKG4sdCl7Zm9yKHZhciBlPW4uY29vcmRpbmF0ZXMscj0tMSx1PWUubGVuZ3RoOysrcjx1Oylh
ZShlW3JdLHQsMCl9LFBvbHlnb246ZnVuY3Rpb24obix0KXtjZShuLmNvb3JkaW5hdGVzLHQpfSxN
dWx0aVBvbHlnb246ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9bi5jb29yZGluYXRlcyxyPS0xLHU9
ZS5sZW5ndGg7KytyPHU7KWNlKGVbcl0sdCl9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbihu
LHQpe2Zvcih2YXIgZT1uLmdlb21ldHJpZXMscj0tMSx1PWUubGVuZ3RoOysrcjx1OylvZShlW3Jd
LHQpfX07Wm8uZ2VvLmFyZWE9ZnVuY3Rpb24obil7cmV0dXJuIHNjPTAsWm8uZ2VvLnN0cmVhbShu
LGZjKSxzY307dmFyIHNjLGxjPW5ldyB1ZSxmYz17c3BoZXJlOmZ1bmN0aW9uKCl7c2MrPTQqYmF9
LHBvaW50OnYsbGluZVN0YXJ0OnYsbGluZUVuZDp2LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2xj
LnJlc2V0KCksZmMubGluZVN0YXJ0PXNlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIG49Mips
YztzYys9MD5uPzQqYmErbjpuLGZjLmxpbmVTdGFydD1mYy5saW5lRW5kPWZjLnBvaW50PXZ9fTta
by5nZW8uYm91bmRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHQpe3gucHVzaChNPVtsPW4saD1u
XSksZj50JiYoZj10KSx0PmcmJihnPXQpfWZ1bmN0aW9uIHQodCxlKXt2YXIgcj1sZShbdCpBYSxl
KkFhXSk7aWYobSl7dmFyIHU9aGUobSxyKSxpPVt1WzFdLC11WzBdLDBdLG89aGUoaSx1KTt2ZShv
KSxvPWRlKG8pO3ZhciBjPXQtcCxzPWM+MD8xOi0xLHY9b1swXSpDYSpzLGQ9dWEoYyk+MTgwO2lm
KGReKHY+cypwJiZzKnQ+dikpe3ZhciB5PW9bMV0qQ2E7eT5nJiYoZz15KX1lbHNlIGlmKHY9KHYr
MzYwKSUzNjAtMTgwLGReKHY+cypwJiZzKnQ+dikpe3ZhciB5PS1vWzFdKkNhO2Y+eSYmKGY9eSl9
ZWxzZSBmPmUmJihmPWUpLGU+ZyYmKGc9ZSk7ZD9wPnQ/YShsLHQpPmEobCxoKSYmKGg9dCk6YSh0
LGgpPmEobCxoKSYmKGw9dCk6aD49bD8obD50JiYobD10KSx0PmgmJihoPXQpKTp0PnA/YShsLHQp
PmEobCxoKSYmKGg9dCk6YSh0LGgpPmEobCxoKSYmKGw9dCl9ZWxzZSBuKHQsZSk7bT1yLHA9dH1m
dW5jdGlvbiBlKCl7Xy5wb2ludD10fWZ1bmN0aW9uIHIoKXtNWzBdPWwsTVsxXT1oLF8ucG9pbnQ9
bixtPW51bGx9ZnVuY3Rpb24gdShuLGUpe2lmKG0pe3ZhciByPW4tcDt5Kz11YShyKT4xODA/ciso
cj4wPzM2MDotMzYwKTpyfWVsc2Ugdj1uLGQ9ZTtmYy5wb2ludChuLGUpLHQobixlKX1mdW5jdGlv
biBpKCl7ZmMubGluZVN0YXJ0KCl9ZnVuY3Rpb24gbygpe3UodixkKSxmYy5saW5lRW5kKCksdWEo
eSk+a2EmJihsPS0oaD0xODApKSxNWzBdPWwsTVsxXT1oLG09bnVsbH1mdW5jdGlvbiBhKG4sdCl7
cmV0dXJuKHQtPW4pPDA/dCszNjA6dH1mdW5jdGlvbiBjKG4sdCl7cmV0dXJuIG5bMF0tdFswXX1m
dW5jdGlvbiBzKG4sdCl7cmV0dXJuIHRbMF08PXRbMV0/dFswXTw9biYmbjw9dFsxXTpuPHRbMF18
fHRbMV08bn12YXIgbCxmLGgsZyxwLHYsZCxtLHkseCxNLF89e3BvaW50Om4sbGluZVN0YXJ0OmUs
bGluZUVuZDpyLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe18ucG9pbnQ9dSxfLmxpbmVTdGFydD1p
LF8ubGluZUVuZD1vLHk9MCxmYy5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigp
e2ZjLnBvbHlnb25FbmQoKSxfLnBvaW50PW4sXy5saW5lU3RhcnQ9ZSxfLmxpbmVFbmQ9ciwwPmxj
PyhsPS0oaD0xODApLGY9LShnPTkwKSk6eT5rYT9nPTkwOi1rYT55JiYoZj0tOTApLE1bMF09bCxN
WzFdPWh9fTtyZXR1cm4gZnVuY3Rpb24obil7Zz1oPS0obD1mPTEvMCkseD1bXSxaby5nZW8uc3Ry
ZWFtKG4sXyk7dmFyIHQ9eC5sZW5ndGg7aWYodCl7eC5zb3J0KGMpO2Zvcih2YXIgZSxyPTEsdT14
WzBdLGk9W3VdO3Q+cjsrK3IpZT14W3JdLHMoZVswXSx1KXx8cyhlWzFdLHUpPyhhKHVbMF0sZVsx
XSk+YSh1WzBdLHVbMV0pJiYodVsxXT1lWzFdKSxhKGVbMF0sdVsxXSk+YSh1WzBdLHVbMV0pJiYo
dVswXT1lWzBdKSk6aS5wdXNoKHU9ZSk7Ci1mb3IodmFyIG8sZSxwPS0xLzAsdD1pLmxlbmd0aC0x
LHI9MCx1PWlbdF07dD49cjt1PWUsKytyKWU9aVtyXSwobz1hKHVbMV0sZVswXSkpPnAmJihwPW8s
bD1lWzBdLGg9dVsxXSl9cmV0dXJuIHg9TT1udWxsLDEvMD09PWx8fDEvMD09PWY/W1swLzAsMC8w
XSxbMC8wLDAvMF1dOltbbCxmXSxbaCxnXV19fSgpLFpvLmdlby5jZW50cm9pZD1mdW5jdGlvbihu
KXtoYz1nYz1wYz12Yz1kYz1tYz15Yz14Yz1NYz1fYz1iYz0wLFpvLmdlby5zdHJlYW0obix3Yyk7
dmFyIHQ9TWMsZT1fYyxyPWJjLHU9dCp0K2UqZStyKnI7cmV0dXJuIEVhPnUmJih0PW1jLGU9eWMs
cj14YyxrYT5nYyYmKHQ9cGMsZT12YyxyPWRjKSx1PXQqdCtlKmUrcipyLEVhPnUpP1swLzAsMC8w
XTpbTWF0aC5hdGFuMihlLHQpKkNhLEcoci9NYXRoLnNxcnQodSkpKkNhXX07dmFyIGhjLGdjLHBj
LHZjLGRjLG1jLHljLHhjLE1jLF9jLGJjLHdjPXtzcGhlcmU6dixwb2ludDp5ZSxsaW5lU3RhcnQ6
TWUsbGluZUVuZDpfZSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt3Yy5saW5lU3RhcnQ9YmV9LHBv
bHlnb25FbmQ6ZnVuY3Rpb24oKXt3Yy5saW5lU3RhcnQ9TWV9fSxTYz1BZSh3ZSxUZSxSZSxbLWJh
LC1iYS8yXSksa2M9MWU5O1pvLmdlby5jbGlwRXh0ZW50PWZ1bmN0aW9uKCl7dmFyIG4sdCxlLHIs
dSxpLG89e3N0cmVhbTpmdW5jdGlvbihuKXtyZXR1cm4gdSYmKHUudmFsaWQ9ITEpLHU9aShuKSx1
LnZhbGlkPSEwLHV9LGV4dGVudDpmdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
aT1VZShuPSthWzBdWzBdLHQ9K2FbMF1bMV0sZT0rYVsxXVswXSxyPSthWzFdWzFdKSx1JiYodS52
YWxpZD0hMSx1PW51bGwpLG8pOltbbix0XSxbZSxyXV19fTtyZXR1cm4gby5leHRlbnQoW1swLDBd
LFs5NjAsNTAwXV0pfSwoWm8uZ2VvLmNvbmljRXF1YWxBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIEhl
KEZlKX0pLnJhdz1GZSxaby5nZW8uYWxiZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIFpvLmdlby5jb25p
Y0VxdWFsQXJlYSgpLnJvdGF0ZShbOTYsMF0pLmNlbnRlcihbLS42LDM4LjddKS5wYXJhbGxlbHMo
WzI5LjUsNDUuNV0pLnNjYWxlKDEwNzApfSxaby5nZW8uYWxiZXJzVXNhPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gbihuKXt2YXIgaT1uWzBdLG89blsxXTtyZXR1cm4gdD1udWxsLGUoaSxvKSx0fHwocihp
LG8pLHQpfHx1KGksbyksdH12YXIgdCxlLHIsdSxpPVpvLmdlby5hbGJlcnMoKSxvPVpvLmdlby5j
b25pY0VxdWFsQXJlYSgpLnJvdGF0ZShbMTU0LDBdKS5jZW50ZXIoWy0yLDU4LjVdKS5wYXJhbGxl
bHMoWzU1LDY1XSksYT1aby5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzE1NywwXSkuY2Vu
dGVyKFstMywxOS45XSkucGFyYWxsZWxzKFs4LDE4XSksYz17cG9pbnQ6ZnVuY3Rpb24obixlKXt0
PVtuLGVdfX07cmV0dXJuIG4uaW52ZXJ0PWZ1bmN0aW9uKG4pe3ZhciB0PWkuc2NhbGUoKSxlPWku
dHJhbnNsYXRlKCkscj0oblswXS1lWzBdKS90LHU9KG5bMV0tZVsxXSkvdDtyZXR1cm4odT49LjEy
JiYuMjM0PnUmJnI+PS0uNDI1JiYtLjIxND5yP286dT49LjE2NiYmLjIzND51JiZyPj0tLjIxNCYm
LS4xMTU+cj9hOmkpLmludmVydChuKX0sbi5zdHJlYW09ZnVuY3Rpb24obil7dmFyIHQ9aS5zdHJl
YW0obiksZT1vLnN0cmVhbShuKSxyPWEuc3RyZWFtKG4pO3JldHVybntwb2ludDpmdW5jdGlvbihu
LHUpe3QucG9pbnQobix1KSxlLnBvaW50KG4sdSksci5wb2ludChuLHUpfSxzcGhlcmU6ZnVuY3Rp
b24oKXt0LnNwaGVyZSgpLGUuc3BoZXJlKCksci5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9u
KCl7dC5saW5lU3RhcnQoKSxlLmxpbmVTdGFydCgpLHIubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVu
Y3Rpb24oKXt0LmxpbmVFbmQoKSxlLmxpbmVFbmQoKSxyLmxpbmVFbmQoKX0scG9seWdvblN0YXJ0
OmZ1bmN0aW9uKCl7dC5wb2x5Z29uU3RhcnQoKSxlLnBvbHlnb25TdGFydCgpLHIucG9seWdvblN0
YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0LnBvbHlnb25FbmQoKSxlLnBvbHlnb25FbmQo
KSxyLnBvbHlnb25FbmQoKX19fSxuLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oaS5wcmVjaXNpb24odCksby5wcmVjaXNpb24odCksYS5wcmVjaXNpb24odCks
bik6aS5wcmVjaXNpb24oKX0sbi5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oaS5zY2FsZSh0KSxvLnNjYWxlKC4zNSp0KSxhLnNjYWxlKHQpLG4udHJhbnNsYXRlKGku
dHJhbnNsYXRlKCkpKTppLnNjYWxlKCl9LG4udHJhbnNsYXRlPWZ1bmN0aW9uKHQpe2lmKCFhcmd1
bWVudHMubGVuZ3RoKXJldHVybiBpLnRyYW5zbGF0ZSgpO3ZhciBzPWkuc2NhbGUoKSxsPSt0WzBd
LGY9K3RbMV07cmV0dXJuIGU9aS50cmFuc2xhdGUodCkuY2xpcEV4dGVudChbW2wtLjQ1NSpzLGYt
LjIzOCpzXSxbbCsuNDU1KnMsZisuMjM4KnNdXSkuc3RyZWFtKGMpLnBvaW50LHI9by50cmFuc2xh
dGUoW2wtLjMwNypzLGYrLjIwMSpzXSkuY2xpcEV4dGVudChbW2wtLjQyNSpzK2thLGYrLjEyKnMr
a2FdLFtsLS4yMTQqcy1rYSxmKy4yMzQqcy1rYV1dKS5zdHJlYW0oYykucG9pbnQsdT1hLnRyYW5z
bGF0ZShbbC0uMjA1KnMsZisuMjEyKnNdKS5jbGlwRXh0ZW50KFtbbC0uMjE0KnMra2EsZisuMTY2
KnMra2FdLFtsLS4xMTUqcy1rYSxmKy4yMzQqcy1rYV1dKS5zdHJlYW0oYykucG9pbnQsbn0sbi5z
Y2FsZSgxMDcwKX07dmFyIEVjLEFjLENjLE5jLHpjLExjLFRjPXtwb2ludDp2LGxpbmVTdGFydDp2
LGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtBYz0wLFRjLmxpbmVTdGFydD1PZX0s
cG9seWdvbkVuZDpmdW5jdGlvbigpe1RjLmxpbmVTdGFydD1UYy5saW5lRW5kPVRjLnBvaW50PXYs
RWMrPXVhKEFjLzIpfX0scWM9e3BvaW50OlllLGxpbmVTdGFydDp2LGxpbmVFbmQ6dixwb2x5Z29u
U3RhcnQ6dixwb2x5Z29uRW5kOnZ9LFJjPXtwb2ludDpWZSxsaW5lU3RhcnQ6WGUsbGluZUVuZDok
ZSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtSYy5saW5lU3RhcnQ9QmV9LHBvbHlnb25FbmQ6ZnVu
Y3Rpb24oKXtSYy5wb2ludD1WZSxSYy5saW5lU3RhcnQ9WGUsUmMubGluZUVuZD0kZX19O1pvLmdl
by5wYXRoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gbiYmKCJmdW5jdGlvbiI9PXR5
cGVvZiBhJiZpLnBvaW50UmFkaXVzKCthLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksbyYmby52YWxp
ZHx8KG89dShpKSksWm8uZ2VvLnN0cmVhbShuLG8pKSxpLnJlc3VsdCgpfWZ1bmN0aW9uIHQoKXty
ZXR1cm4gbz1udWxsLG59dmFyIGUscix1LGksbyxhPTQuNTtyZXR1cm4gbi5hcmVhPWZ1bmN0aW9u
KG4pe3JldHVybiBFYz0wLFpvLmdlby5zdHJlYW0obix1KFRjKSksRWN9LG4uY2VudHJvaWQ9ZnVu
Y3Rpb24obil7cmV0dXJuIHBjPXZjPWRjPW1jPXljPXhjPU1jPV9jPWJjPTAsWm8uZ2VvLnN0cmVh
bShuLHUoUmMpKSxiYz9bTWMvYmMsX2MvYmNdOnhjP1ttYy94Yyx5Yy94Y106ZGM/W3BjL2RjLHZj
L2RjXTpbMC8wLDAvMF19LG4uYm91bmRzPWZ1bmN0aW9uKG4pe3JldHVybiB6Yz1MYz0tKENjPU5j
PTEvMCksWm8uZ2VvLnN0cmVhbShuLHUocWMpKSxbW0NjLE5jXSxbemMsTGNdXX0sbi5wcm9qZWN0
aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PShlPW4pP24uc3RyZWFt
fHxHZShuKTp3dCx0KCkpOmV9LG4uY29udGV4dD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oaT1udWxsPT0ocj1uKT9uZXcgSWU6bmV3IFdlKG4pLCJmdW5jdGlvbiIhPXR5cGVv
ZiBhJiZpLnBvaW50UmFkaXVzKGEpLHQoKSk6cn0sbi5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OihpLnBvaW50
UmFkaXVzKCt0KSwrdCksbik6YX0sbi5wcm9qZWN0aW9uKFpvLmdlby5hbGJlcnNVc2EoKSkuY29u
dGV4dChudWxsKX0sWm8uZ2VvLnRyYW5zZm9ybT1mdW5jdGlvbihuKXtyZXR1cm57c3RyZWFtOmZ1
bmN0aW9uKHQpe3ZhciBlPW5ldyBLZSh0KTtmb3IodmFyIHIgaW4gbillW3JdPW5bcl07cmV0dXJu
IGV9fX0sS2UucHJvdG90eXBlPXtwb2ludDpmdW5jdGlvbihuLHQpe3RoaXMuc3RyZWFtLnBvaW50
KG4sdCl9LHNwaGVyZTpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnNwaGVyZSgpfSxsaW5lU3RhcnQ6
ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3Ro
aXMuc3RyZWFtLmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0u
cG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29u
RW5kKCl9fSxaby5nZW8ucHJvamVjdGlvbj1ucixaby5nZW8ucHJvamVjdGlvbk11dGF0b3I9dHIs
KFpvLmdlby5lcXVpcmVjdGFuZ3VsYXI9ZnVuY3Rpb24oKXtyZXR1cm4gbnIocnIpfSkucmF3PXJy
LmludmVydD1ycixaby5nZW8ucm90YXRpb249ZnVuY3Rpb24obil7ZnVuY3Rpb24gdCh0KXtyZXR1
cm4gdD1uKHRbMF0qQWEsdFsxXSpBYSksdFswXSo9Q2EsdFsxXSo9Q2EsdH1yZXR1cm4gbj1pcihu
WzBdJTM2MCpBYSxuWzFdKkFhLG4ubGVuZ3RoPjI/blsyXSpBYTowKSx0LmludmVydD1mdW5jdGlv
bih0KXtyZXR1cm4gdD1uLmludmVydCh0WzBdKkFhLHRbMV0qQWEpLHRbMF0qPUNhLHRbMV0qPUNh
LHR9LHR9LHVyLmludmVydD1ycixaby5nZW8uY2lyY2xlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigp
e3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkodGhpcyxhcmd1bWVudHMpOnIsdD1p
cigtblswXSpBYSwtblsxXSpBYSwwKS5pbnZlcnQsdT1bXTtyZXR1cm4gZShudWxsLG51bGwsMSx7
cG9pbnQ6ZnVuY3Rpb24obixlKXt1LnB1c2gobj10KG4sZSkpLG5bMF0qPUNhLG5bMV0qPUNhfX0p
LHt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbdV19fXZhciB0LGUscj1bMCwwXSx1PTY7cmV0
dXJuIG4ub3JpZ2luPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbik6
cn0sbi5hbmdsZT1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1zcigodD0r
cikqQWEsdSpBYSksbik6dH0sbi5wcmVjaXNpb249ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGU9c3IodCpBYSwodT0rcikqQWEpLG4pOnV9LG4uYW5nbGUoOTApfSxaby5nZW8u
ZGlzdGFuY2U9ZnVuY3Rpb24obix0KXt2YXIgZSxyPSh0WzBdLW5bMF0pKkFhLHU9blsxXSpBYSxp
PXRbMV0qQWEsbz1NYXRoLnNpbihyKSxhPU1hdGguY29zKHIpLGM9TWF0aC5zaW4odSkscz1NYXRo
LmNvcyh1KSxsPU1hdGguc2luKGkpLGY9TWF0aC5jb3MoaSk7cmV0dXJuIE1hdGguYXRhbjIoTWF0
aC5zcXJ0KChlPWYqbykqZSsoZT1zKmwtYypmKmEpKmUpLGMqbCtzKmYqYSl9LFpvLmdlby5ncmF0
aWN1bGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmlu
ZyIsY29vcmRpbmF0ZXM6dCgpfX1mdW5jdGlvbiB0KCl7cmV0dXJuIFpvLnJhbmdlKE1hdGguY2Vp
bChpL2QpKmQsdSxkKS5tYXAoaCkuY29uY2F0KFpvLnJhbmdlKE1hdGguY2VpbChzL20pKm0sYyxt
KS5tYXAoZykpLmNvbmNhdChaby5yYW5nZShNYXRoLmNlaWwoci9wKSpwLGUscCkuZmlsdGVyKGZ1
bmN0aW9uKG4pe3JldHVybiB1YShuJWQpPmthfSkubWFwKGwpKS5jb25jYXQoWm8ucmFuZ2UoTWF0
aC5jZWlsKGEvdikqdixvLHYpLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gdWEobiVtKT5rYX0p
Lm1hcChmKSl9dmFyIGUscix1LGksbyxhLGMscyxsLGYsaCxnLHA9MTAsdj1wLGQ9OTAsbT0zNjAs
eT0yLjU7cmV0dXJuIG4ubGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLm1hcChmdW5jdGlvbihu
KXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6bn19KX0sbi5vdXRsaW5lPWZ1
bmN0aW9uKCl7cmV0dXJue3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOltoKGkpLmNvbmNhdChn
KGMpLnNsaWNlKDEpLGgodSkucmV2ZXJzZSgpLnNsaWNlKDEpLGcocykucmV2ZXJzZSgpLnNsaWNl
KDEpKV19fSxuLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uLm1h
am9yRXh0ZW50KHQpLm1pbm9yRXh0ZW50KHQpOm4ubWlub3JFeHRlbnQoKX0sbi5tYWpvckV4dGVu
dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdFswXVswXSx1PSt0WzFd
WzBdLHM9K3RbMF1bMV0sYz0rdFsxXVsxXSxpPnUmJih0PWksaT11LHU9dCkscz5jJiYodD1zLHM9
YyxjPXQpLG4ucHJlY2lzaW9uKHkpKTpbW2ksc10sW3UsY11dfSxuLm1pbm9yRXh0ZW50PWZ1bmN0
aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0WzBdWzBdLGU9K3RbMV1bMF0sYT0r
dFswXVsxXSxvPSt0WzFdWzFdLHI+ZSYmKHQ9cixyPWUsZT10KSxhPm8mJih0PWEsYT1vLG89dCks
bi5wcmVjaXNpb24oeSkpOltbcixhXSxbZSxvXV19LG4uc3RlcD1mdW5jdGlvbih0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD9uLm1ham9yU3RlcCh0KS5taW5vclN0ZXAodCk6bi5taW5vclN0ZXAo
KX0sbi5tYWpvclN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3Rb
MF0sbT0rdFsxXSxuKTpbZCxtXX0sbi5taW5vclN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHA9K3RbMF0sdj0rdFsxXSxuKTpbcCx2XX0sbi5wcmVjaXNpb249ZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9K3QsbD1mcihhLG8sOTApLGY9aHIocixl
LHkpLGg9ZnIocyxjLDkwKSxnPWhyKGksdSx5KSxuKTp5fSxuLm1ham9yRXh0ZW50KFtbLTE4MCwt
OTAra2FdLFsxODAsOTAta2FdXSkubWlub3JFeHRlbnQoW1stMTgwLC04MC1rYV0sWzE4MCw4MCtr
YV1dKX0sWm8uZ2VvLmdyZWF0QXJjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3JldHVybnt0eXBl
OiJMaW5lU3RyaW5nIixjb29yZGluYXRlczpbdHx8ci5hcHBseSh0aGlzLGFyZ3VtZW50cyksZXx8
dS5hcHBseSh0aGlzLGFyZ3VtZW50cyldfX12YXIgdCxlLHI9Z3IsdT1wcjtyZXR1cm4gbi5kaXN0
YW5jZT1mdW5jdGlvbigpe3JldHVybiBaby5nZW8uZGlzdGFuY2UodHx8ci5hcHBseSh0aGlzLGFy
Z3VtZW50cyksZXx8dS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxuLnNvdXJjZT1mdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1lLHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/bnVs
bDplLG4pOnJ9LG4udGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1
PXQsZT0iZnVuY3Rpb24iPT10eXBlb2YgdD9udWxsOnQsbik6dX0sbi5wcmVjaXNpb249ZnVuY3Rp
b24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uOjB9LG59LFpvLmdlby5pbnRlcnBvbGF0ZT1m
dW5jdGlvbihuLHQpe3JldHVybiB2cihuWzBdKkFhLG5bMV0qQWEsdFswXSpBYSx0WzFdKkFhKX0s
Wm8uZ2VvLmxlbmd0aD1mdW5jdGlvbihuKXtyZXR1cm4gRGM9MCxaby5nZW8uc3RyZWFtKG4sUGMp
LERjfTt2YXIgRGMsUGM9e3NwaGVyZTp2LHBvaW50OnYsbGluZVN0YXJ0OmRyLGxpbmVFbmQ6dixw
b2x5Z29uU3RhcnQ6dixwb2x5Z29uRW5kOnZ9LFVjPW1yKGZ1bmN0aW9uKG4pe3JldHVybiBNYXRo
LnNxcnQoMi8oMStuKSl9LGZ1bmN0aW9uKG4pe3JldHVybiAyKk1hdGguYXNpbihuLzIpfSk7KFpv
Lmdlby5hemltdXRoYWxFcXVhbEFyZWE9ZnVuY3Rpb24oKXtyZXR1cm4gbnIoVWMpfSkucmF3PVVj
O3ZhciBqYz1tcihmdW5jdGlvbihuKXt2YXIgdD1NYXRoLmFjb3Mobik7cmV0dXJuIHQmJnQvTWF0
aC5zaW4odCl9LHd0KTsoWm8uZ2VvLmF6aW11dGhhbEVxdWlkaXN0YW50PWZ1bmN0aW9uKCl7cmV0
dXJuIG5yKGpjKX0pLnJhdz1qYywoWm8uZ2VvLmNvbmljQ29uZm9ybWFsPWZ1bmN0aW9uKCl7cmV0
dXJuIEhlKHlyKX0pLnJhdz15ciwoWm8uZ2VvLmNvbmljRXF1aWRpc3RhbnQ9ZnVuY3Rpb24oKXty
ZXR1cm4gSGUoeHIpfSkucmF3PXhyO3ZhciBIYz1tcihmdW5jdGlvbihuKXtyZXR1cm4gMS9ufSxN
YXRoLmF0YW4pOyhaby5nZW8uZ25vbW9uaWM9ZnVuY3Rpb24oKXtyZXR1cm4gbnIoSGMpfSkucmF3
PUhjLE1yLmludmVydD1mdW5jdGlvbihuLHQpe3JldHVybltuLDIqTWF0aC5hdGFuKE1hdGguZXhw
KHQpKS1TYV19LChaby5nZW8ubWVyY2F0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gX3IoTXIpfSkucmF3
PU1yO3ZhciBGYz1tcihmdW5jdGlvbigpe3JldHVybiAxfSxNYXRoLmFzaW4pOyhaby5nZW8ub3J0
aG9ncmFwaGljPWZ1bmN0aW9uKCl7cmV0dXJuIG5yKEZjKX0pLnJhdz1GYzt2YXIgT2M9bXIoZnVu
Y3Rpb24obil7cmV0dXJuIDEvKDErbil9LGZ1bmN0aW9uKG4pe3JldHVybiAyKk1hdGguYXRhbihu
KX0pOyhaby5nZW8uc3RlcmVvZ3JhcGhpYz1mdW5jdGlvbigpe3JldHVybiBucihPYyl9KS5yYXc9
T2MsYnIuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuWy10LDIqTWF0aC5hdGFuKE1hdGguZXhw
KG4pKS1TYV19LChaby5nZW8udHJhbnN2ZXJzZU1lcmNhdG9yPWZ1bmN0aW9uKCl7dmFyIG49X3Io
YnIpLHQ9bi5jZW50ZXIsZT1uLnJvdGF0ZTtyZXR1cm4gbi5jZW50ZXI9ZnVuY3Rpb24obil7cmV0
dXJuIG4/dChbLW5bMV0sblswXV0pOihuPXQoKSxbblsxXSwtblswXV0pfSxuLnJvdGF0ZT1mdW5j
dGlvbihuKXtyZXR1cm4gbj9lKFtuWzBdLG5bMV0sbi5sZW5ndGg+Mj9uWzJdKzkwOjkwXSk6KG49
ZSgpLFtuWzBdLG5bMV0sblsyXS05MF0pfSxlKFswLDAsOTBdKX0pLnJhdz1icixaby5nZW9tPXt9
LFpvLmdlb20uaHVsbD1mdW5jdGlvbihuKXtmdW5jdGlvbiB0KG4pe2lmKG4ubGVuZ3RoPDMpcmV0
dXJuW107dmFyIHQsdT1idChlKSxpPWJ0KHIpLG89bi5sZW5ndGgsYT1bXSxjPVtdO2Zvcih0PTA7
bz50O3QrKylhLnB1c2goWyt1LmNhbGwodGhpcyxuW3RdLHQpLCtpLmNhbGwodGhpcyxuW3RdLHQp
LHRdKTtmb3IoYS5zb3J0KEVyKSx0PTA7bz50O3QrKyljLnB1c2goW2FbdF1bMF0sLWFbdF1bMV1d
KTt2YXIgcz1rcihhKSxsPWtyKGMpLGY9bFswXT09PXNbMF0saD1sW2wubGVuZ3RoLTFdPT09c1tz
Lmxlbmd0aC0xXSxnPVtdO2Zvcih0PXMubGVuZ3RoLTE7dD49MDstLXQpZy5wdXNoKG5bYVtzW3Rd
XVsyXV0pO2Zvcih0PStmO3Q8bC5sZW5ndGgtaDsrK3QpZy5wdXNoKG5bYVtsW3RdXVsyXV0pO3Jl
dHVybiBnfXZhciBlPXdyLHI9U3I7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dChuKToodC54PWZ1
bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdCk6ZX0sdC55PWZ1bmN0aW9u
KG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdCk6cn0sdCl9LFpvLmdlb20ucG9seWdv
bj1mdW5jdGlvbihuKXtyZXR1cm4gc2EobixZYyksbn07dmFyIFljPVpvLmdlb20ucG9seWdvbi5w
cm90b3R5cGU9W107WWMuYXJlYT1mdW5jdGlvbigpe2Zvcih2YXIgbix0PS0xLGU9dGhpcy5sZW5n
dGgscj10aGlzW2UtMV0sdT0wOysrdDxlOyluPXIscj10aGlzW3RdLHUrPW5bMV0qclswXS1uWzBd
KnJbMV07cmV0dXJuLjUqdX0sWWMuY2VudHJvaWQ9ZnVuY3Rpb24obil7dmFyIHQsZSxyPS0xLHU9
dGhpcy5sZW5ndGgsaT0wLG89MCxhPXRoaXNbdS0xXTtmb3IoYXJndW1lbnRzLmxlbmd0aHx8KG49
LTEvKDYqdGhpcy5hcmVhKCkpKTsrK3I8dTspdD1hLGE9dGhpc1tyXSxlPXRbMF0qYVsxXS1hWzBd
KnRbMV0saSs9KHRbMF0rYVswXSkqZSxvKz0odFsxXSthWzFdKSplO3JldHVybltpKm4sbypuXX0s
WWMuY2xpcD1mdW5jdGlvbihuKXtmb3IodmFyIHQsZSxyLHUsaSxvLGE9TnIobiksYz0tMSxzPXRo
aXMubGVuZ3RoLU5yKHRoaXMpLGw9dGhpc1tzLTFdOysrYzxzOyl7Zm9yKHQ9bi5zbGljZSgpLG4u
bGVuZ3RoPTAsdT10aGlzW2NdLGk9dFsocj10Lmxlbmd0aC1hKS0xXSxlPS0xOysrZTxyOylvPXRb
ZV0sQXIobyxsLHUpPyhBcihpLGwsdSl8fG4ucHVzaChDcihpLG8sbCx1KSksbi5wdXNoKG8pKTpB
cihpLGwsdSkmJm4ucHVzaChDcihpLG8sbCx1KSksaT1vO2EmJm4ucHVzaChuWzBdKSxsPXV9cmV0
dXJuIG59O3ZhciBJYyxaYyxWYyxYYywkYyxCYz1bXSxXYz1bXTtVci5wcm90b3R5cGUucHJlcGFy
ZT1mdW5jdGlvbigpe2Zvcih2YXIgbix0PXRoaXMuZWRnZXMsZT10Lmxlbmd0aDtlLS07KW49dFtl
XS5lZGdlLG4uYiYmbi5hfHx0LnNwbGljZShlLDEpO3JldHVybiB0LnNvcnQoSHIpLHQubGVuZ3Ro
fSxXci5wcm90b3R5cGU9e3N0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZS5sPT09dGhp
cy5zaXRlP3RoaXMuZWRnZS5hOnRoaXMuZWRnZS5ifSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5lZGdlLmw9PT10aGlzLnNpdGU/dGhpcy5lZGdlLmI6dGhpcy5lZGdlLmF9fSxKci5wcm90b3R5
cGU9e2luc2VydDpmdW5jdGlvbihuLHQpe3ZhciBlLHIsdTtpZihuKXtpZih0LlA9bix0Lk49bi5O
LG4uTiYmKG4uTi5QPXQpLG4uTj10LG4uUil7Zm9yKG49bi5SO24uTDspbj1uLkw7bi5MPXR9ZWxz
ZSBuLlI9dDtlPW59ZWxzZSB0aGlzLl8/KG49bnUodGhpcy5fKSx0LlA9bnVsbCx0Lk49bixuLlA9
bi5MPXQsZT1uKToodC5QPXQuTj1udWxsLHRoaXMuXz10LGU9bnVsbCk7Zm9yKHQuTD10LlI9bnVs
bCx0LlU9ZSx0LkM9ITAsbj10O2UmJmUuQzspcj1lLlUsZT09PXIuTD8odT1yLlIsdSYmdS5DPyhl
LkM9dS5DPSExLHIuQz0hMCxuPXIpOihuPT09ZS5SJiYoS3IodGhpcyxlKSxuPWUsZT1uLlUpLGUu
Qz0hMSxyLkM9ITAsUXIodGhpcyxyKSkpOih1PXIuTCx1JiZ1LkM/KGUuQz11LkM9ITEsci5DPSEw
LG49cik6KG49PT1lLkwmJihRcih0aGlzLGUpLG49ZSxlPW4uVSksZS5DPSExLHIuQz0hMCxLcih0
aGlzLHIpKSksZT1uLlU7dGhpcy5fLkM9ITF9LHJlbW92ZTpmdW5jdGlvbihuKXtuLk4mJihuLk4u
UD1uLlApLG4uUCYmKG4uUC5OPW4uTiksbi5OPW4uUD1udWxsO3ZhciB0LGUscix1PW4uVSxpPW4u
TCxvPW4uUjtpZihlPWk/bz9udShvKTppOm8sdT91Lkw9PT1uP3UuTD1lOnUuUj1lOnRoaXMuXz1l
LGkmJm8/KHI9ZS5DLGUuQz1uLkMsZS5MPWksaS5VPWUsZSE9PW8/KHU9ZS5VLGUuVT1uLlUsbj1l
LlIsdS5MPW4sZS5SPW8sby5VPWUpOihlLlU9dSx1PWUsbj1lLlIpKToocj1uLkMsbj1lKSxuJiYo
bi5VPXUpLCFyKXtpZihuJiZuLkMpcmV0dXJuIG4uQz0hMSx2b2lkIDA7ZG97aWYobj09PXRoaXMu
XylicmVhaztpZihuPT09dS5MKXtpZih0PXUuUix0LkMmJih0LkM9ITEsdS5DPSEwLEtyKHRoaXMs
dSksdD11LlIpLHQuTCYmdC5MLkN8fHQuUiYmdC5SLkMpe3QuUiYmdC5SLkN8fCh0LkwuQz0hMSx0
LkM9ITAsUXIodGhpcyx0KSx0PXUuUiksdC5DPXUuQyx1LkM9dC5SLkM9ITEsS3IodGhpcyx1KSxu
PXRoaXMuXzticmVha319ZWxzZSBpZih0PXUuTCx0LkMmJih0LkM9ITEsdS5DPSEwLFFyKHRoaXMs
dSksdD11LkwpLHQuTCYmdC5MLkN8fHQuUiYmdC5SLkMpe3QuTCYmdC5MLkN8fCh0LlIuQz0hMSx0
LkM9ITAsS3IodGhpcyx0KSx0PXUuTCksdC5DPXUuQyx1LkM9dC5MLkM9ITEsUXIodGhpcyx1KSxu
PXRoaXMuXzticmVha310LkM9ITAsbj11LHU9dS5VfXdoaWxlKCFuLkMpO24mJihuLkM9ITEpfX19
LFpvLmdlb20udm9yb25vaT1mdW5jdGlvbihuKXtmdW5jdGlvbiB0KG4pe3ZhciB0PW5ldyBBcnJh
eShuLmxlbmd0aCkscj1hWzBdWzBdLHU9YVswXVsxXSxpPWFbMV1bMF0sbz1hWzFdWzFdO3JldHVy
biB0dShlKG4pLGEpLmNlbGxzLmZvckVhY2goZnVuY3Rpb24oZSxhKXt2YXIgYz1lLmVkZ2VzLHM9
ZS5zaXRlLGw9dFthXT1jLmxlbmd0aD9jLm1hcChmdW5jdGlvbihuKXt2YXIgdD1uLnN0YXJ0KCk7
cmV0dXJuW3QueCx0LnldfSk6cy54Pj1yJiZzLng8PWkmJnMueT49dSYmcy55PD1vP1tbcixvXSxb
aSxvXSxbaSx1XSxbcix1XV06W107bC5wb2ludD1uW2FdfSksdH1mdW5jdGlvbiBlKG4pe3JldHVy
biBuLm1hcChmdW5jdGlvbihuLHQpe3JldHVybnt4Ok1hdGgucm91bmQoaShuLHQpL2thKSprYSx5
Ok1hdGgucm91bmQobyhuLHQpL2thKSprYSxpOnR9fSl9dmFyIHI9d3IsdT1TcixpPXIsbz11LGE9
SmM7cmV0dXJuIG4/dChuKToodC5saW5rcz1mdW5jdGlvbihuKXtyZXR1cm4gdHUoZShuKSkuZWRn
ZXMuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBuLmwmJm4ucn0pLm1hcChmdW5jdGlvbih0KXty
ZXR1cm57c291cmNlOm5bdC5sLmldLHRhcmdldDpuW3Quci5pXX19KX0sdC50cmlhbmdsZXM9ZnVu
Y3Rpb24obil7dmFyIHQ9W107cmV0dXJuIHR1KGUobikpLmNlbGxzLmZvckVhY2goZnVuY3Rpb24o
ZSxyKXtmb3IodmFyIHUsaSxvPWUuc2l0ZSxhPWUuZWRnZXMuc29ydChIciksYz0tMSxzPWEubGVu
Z3RoLGw9YVtzLTFdLmVkZ2UsZj1sLmw9PT1vP2wucjpsLmw7KytjPHM7KXU9bCxpPWYsbD1hW2Nd
LmVkZ2UsZj1sLmw9PT1vP2wucjpsLmwscjxpLmkmJnI8Zi5pJiZydShvLGksZik8MCYmdC5wdXNo
KFtuW3JdLG5baS5pXSxuW2YuaV1dKX0pLHR9LHQueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oaT1idChyPW4pLHQpOnJ9LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8obz1idCh1PW4pLHQpOnV9LHQuY2xpcEV4dGVudD1mdW5jdGlvbihuKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1udWxsPT1uP0pjOm4sdCk6YT09PUpjP251bGw6YX0sdC5z
aXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QuY2xpcEV4dGVudChuJiZb
WzAsMF0sbl0pOmE9PT1KYz9udWxsOmEmJmFbMV19LHQpfTt2YXIgSmM9W1stMWU2LC0xZTZdLFsx
ZTYsMWU2XV07Wm8uZ2VvbS5kZWxhdW5heT1mdW5jdGlvbihuKXtyZXR1cm4gWm8uZ2VvbS52b3Jv
bm9pKCkudHJpYW5nbGVzKG4pfSxaby5nZW9tLnF1YWR0cmVlPWZ1bmN0aW9uKG4sdCxlLHIsdSl7
ZnVuY3Rpb24gaShuKXtmdW5jdGlvbiBpKG4sdCxlLHIsdSxpLG8sYSl7aWYoIWlzTmFOKGUpJiYh
aXNOYU4ocikpaWYobi5sZWFmKXt2YXIgYz1uLngsbD1uLnk7aWYobnVsbCE9YylpZih1YShjLWUp
K3VhKGwtcik8LjAxKXMobix0LGUscix1LGksbyxhKTtlbHNle3ZhciBmPW4ucG9pbnQ7bi54PW4u
eT1uLnBvaW50PW51bGwscyhuLGYsYyxsLHUsaSxvLGEpLHMobix0LGUscix1LGksbyxhKX1lbHNl
IG4ueD1lLG4ueT1yLG4ucG9pbnQ9dH1lbHNlIHMobix0LGUscix1LGksbyxhKX1mdW5jdGlvbiBz
KG4sdCxlLHIsdSxvLGEsYyl7dmFyIHM9LjUqKHUrYSksbD0uNSoobytjKSxmPWU+PXMsaD1yPj1s
LGc9KGg8PDEpK2Y7bi5sZWFmPSExLG49bi5ub2Rlc1tnXXx8KG4ubm9kZXNbZ109b3UoKSksZj91
PXM6YT1zLGg/bz1sOmM9bCxpKG4sdCxlLHIsdSxvLGEsYyl9dmFyIGwsZixoLGcscCx2LGQsbSx5
LHg9YnQoYSksTT1idChjKTtpZihudWxsIT10KXY9dCxkPWUsbT1yLHk9dTtlbHNlIGlmKG09eT0t
KHY9ZD0xLzApLGY9W10saD1bXSxwPW4ubGVuZ3RoLG8pZm9yKGc9MDtwPmc7KytnKWw9bltnXSxs
Lng8diYmKHY9bC54KSxsLnk8ZCYmKGQ9bC55KSxsLng+bSYmKG09bC54KSxsLnk+eSYmKHk9bC55
KSxmLnB1c2gobC54KSxoLnB1c2gobC55KTtlbHNlIGZvcihnPTA7cD5nOysrZyl7dmFyIF89K3go
bD1uW2ddLGcpLGI9K00obCxnKTt2Pl8mJih2PV8pLGQ+YiYmKGQ9YiksXz5tJiYobT1fKSxiPnkm
Jih5PWIpLGYucHVzaChfKSxoLnB1c2goYil9dmFyIHc9bS12LFM9eS1kO3c+Uz95PWQrdzptPXYr
Uzt2YXIgaz1vdSgpO2lmKGsuYWRkPWZ1bmN0aW9uKG4pe2koayxuLCt4KG4sKytnKSwrTShuLGcp
LHYsZCxtLHkpfSxrLnZpc2l0PWZ1bmN0aW9uKG4pe2F1KG4sayx2LGQsbSx5KX0sZz0tMSxudWxs
PT10KXtmb3IoOysrZzxwOylpKGssbltnXSxmW2ddLGhbZ10sdixkLG0seSk7LS1nfWVsc2Ugbi5m
b3JFYWNoKGsuYWRkKTtyZXR1cm4gZj1oPW49bD1udWxsLGt9dmFyIG8sYT13cixjPVNyO3JldHVy
bihvPWFyZ3VtZW50cy5sZW5ndGgpPyhhPXV1LGM9aXUsMz09PW8mJih1PWUscj10LGU9dD0wKSxp
KG4pKTooaS54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPW4saSk6YX0s
aS55PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPW4saSk6Y30saS5leHRl
bnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PW4/dD1lPXI9dT1u
dWxsOih0PStuWzBdWzBdLGU9K25bMF1bMV0scj0rblsxXVswXSx1PStuWzFdWzFdKSxpKTpudWxs
PT10P251bGw6W1t0LGVdLFtyLHVdXX0saS5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhudWxsPT1uP3Q9ZT1yPXU9bnVsbDoodD1lPTAscj0rblswXSx1PStuWzFdKSxp
KTpudWxsPT10P251bGw6W3ItdCx1LWVdfSxpKX0sWm8uaW50ZXJwb2xhdGVSZ2I9Y3UsWm8uaW50
ZXJwb2xhdGVPYmplY3Q9c3UsWm8uaW50ZXJwb2xhdGVOdW1iZXI9bHUsWm8uaW50ZXJwb2xhdGVT
dHJpbmc9ZnU7dmFyIEdjPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQr
KT8vZyxLYz1uZXcgUmVnRXhwKEdjLnNvdXJjZSwiZyIpO1pvLmludGVycG9sYXRlPWh1LFpvLmlu
dGVycG9sYXRvcnM9W2Z1bmN0aW9uKG4sdCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuKCJzdHJpbmci
PT09ZT9JYS5oYXModCl8fC9eKCN8cmdiXCh8aHNsXCgpLy50ZXN0KHQpP2N1OmZ1OnQgaW5zdGFu
Y2VvZiBldD9jdTpBcnJheS5pc0FycmF5KHQpP2d1OiJvYmplY3QiPT09ZSYmaXNOYU4odCk/c3U6
bHUpKG4sdCl9XSxaby5pbnRlcnBvbGF0ZUFycmF5PWd1O3ZhciBRYz1mdW5jdGlvbigpe3JldHVy
biB3dH0sbnM9Wm8ubWFwKHtsaW5lYXI6UWMscG9seTpNdSxxdWFkOmZ1bmN0aW9uKCl7cmV0dXJu
IG11fSxjdWJpYzpmdW5jdGlvbigpe3JldHVybiB5dX0sc2luOmZ1bmN0aW9uKCl7cmV0dXJuIF91
fSxleHA6ZnVuY3Rpb24oKXtyZXR1cm4gYnV9LGNpcmNsZTpmdW5jdGlvbigpe3JldHVybiB3dX0s
ZWxhc3RpYzpTdSxiYWNrOmt1LGJvdW5jZTpmdW5jdGlvbigpe3JldHVybiBFdX19KSx0cz1aby5t
YXAoeyJpbiI6d3Qsb3V0OnZ1LCJpbi1vdXQiOmR1LCJvdXQtaW4iOmZ1bmN0aW9uKG4pe3JldHVy
biBkdSh2dShuKSl9fSk7Wm8uZWFzZT1mdW5jdGlvbihuKXt2YXIgdD1uLmluZGV4T2YoIi0iKSxl
PXQ+PTA/bi5zdWJzdHJpbmcoMCx0KTpuLHI9dD49MD9uLnN1YnN0cmluZyh0KzEpOiJpbiI7cmV0
dXJuIGU9bnMuZ2V0KGUpfHxRYyxyPXRzLmdldChyKXx8d3QscHUocihlLmFwcGx5KG51bGwsVm8u
Y2FsbChhcmd1bWVudHMsMSkpKSl9LFpvLmludGVycG9sYXRlSGNsPUF1LFpvLmludGVycG9sYXRl
SHNsPUN1LFpvLmludGVycG9sYXRlTGFiPU51LFpvLmludGVycG9sYXRlUm91bmQ9enUsWm8udHJh
bnNmb3JtPWZ1bmN0aW9uKG4pe3ZhciB0PSRvLmNyZWF0ZUVsZW1lbnROUyhaby5ucy5wcmVmaXgu
c3ZnLCJnIik7cmV0dXJuKFpvLnRyYW5zZm9ybT1mdW5jdGlvbihuKXtpZihudWxsIT1uKXt0LnNl
dEF0dHJpYnV0ZSgidHJhbnNmb3JtIixuKTt2YXIgZT10LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNv
bGlkYXRlKCl9cmV0dXJuIG5ldyBMdShlP2UubWF0cml4OmVzKX0pKG4pfSxMdS5wcm90b3R5cGUu
dG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy50cmFuc2xhdGUrIily
b3RhdGUoIit0aGlzLnJvdGF0ZSsiKXNrZXdYKCIrdGhpcy5za2V3KyIpc2NhbGUoIit0aGlzLnNj
YWxlKyIpIn07dmFyIGVzPXthOjEsYjowLGM6MCxkOjEsZTowLGY6MH07Wm8uaW50ZXJwb2xhdGVU
cmFuc2Zvcm09RHUsWm8ubGF5b3V0PXt9LFpvLmxheW91dC5idW5kbGU9ZnVuY3Rpb24oKXtyZXR1
cm4gZnVuY3Rpb24obil7Zm9yKHZhciB0PVtdLGU9LTEscj1uLmxlbmd0aDsrK2U8cjspdC5wdXNo
KGp1KG5bZV0pKTtyZXR1cm4gdH19LFpvLmxheW91dC5jaG9yZD1mdW5jdGlvbigpe2Z1bmN0aW9u
IG4oKXt2YXIgbixzLGYsaCxnLHA9e30sdj1bXSxkPVpvLnJhbmdlKGkpLG09W107Zm9yKGU9W10s
cj1bXSxuPTAsaD0tMTsrK2g8aTspe2ZvcihzPTAsZz0tMTsrK2c8aTspcys9dVtoXVtnXTt2LnB1
c2gocyksbS5wdXNoKFpvLnJhbmdlKGkpKSxuKz1zfWZvcihvJiZkLnNvcnQoZnVuY3Rpb24obix0
KXtyZXR1cm4gbyh2W25dLHZbdF0pfSksYSYmbS5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7bi5zb3J0
KGZ1bmN0aW9uKG4sZSl7cmV0dXJuIGEodVt0XVtuXSx1W3RdW2VdKX0pfSksbj0od2EtbCppKS9u
LHM9MCxoPS0xOysraDxpOyl7Zm9yKGY9cyxnPS0xOysrZzxpOyl7dmFyIHk9ZFtoXSx4PW1beV1b
Z10sTT11W3ldW3hdLF89cyxiPXMrPU0qbjtwW3krIi0iK3hdPXtpbmRleDp5LHN1YmluZGV4Ongs
c3RhcnRBbmdsZTpfLGVuZEFuZ2xlOmIsdmFsdWU6TX19clt5XT17aW5kZXg6eSxzdGFydEFuZ2xl
OmYsZW5kQW5nbGU6cyx2YWx1ZToocy1mKS9ufSxzKz1sfWZvcihoPS0xOysraDxpOylmb3IoZz1o
LTE7KytnPGk7KXt2YXIgdz1wW2grIi0iK2ddLFM9cFtnKyItIitoXTsody52YWx1ZXx8Uy52YWx1
ZSkmJmUucHVzaCh3LnZhbHVlPFMudmFsdWU/e3NvdXJjZTpTLHRhcmdldDp3fTp7c291cmNlOncs
dGFyZ2V0OlN9KX1jJiZ0KCl9ZnVuY3Rpb24gdCgpe2Uuc29ydChmdW5jdGlvbihuLHQpe3JldHVy
biBjKChuLnNvdXJjZS52YWx1ZStuLnRhcmdldC52YWx1ZSkvMiwodC5zb3VyY2UudmFsdWUrdC50
YXJnZXQudmFsdWUpLzIpfSl9dmFyIGUscix1LGksbyxhLGMscz17fSxsPTA7cmV0dXJuIHMubWF0
cml4PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSh1PW4pJiZ1Lmxlbmd0
aCxlPXI9bnVsbCxzKTp1fSxzLnBhZGRpbmc9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGw9bixlPXI9bnVsbCxzKTpsfSxzLnNvcnRHcm91cHM9ZnVuY3Rpb24obil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KG89bixlPXI9bnVsbCxzKTpvfSxzLnNvcnRTdWJncm91cHM9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bixlPW51bGwscyk6YX0scy5zb3J0
Q2hvcmRzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPW4sZSYmdCgpLHMp
OmN9LHMuY2hvcmRzPWZ1bmN0aW9uKCl7cmV0dXJuIGV8fG4oKSxlfSxzLmdyb3Vwcz1mdW5jdGlv
bigpe3JldHVybiByfHxuKCkscn0sc30sWm8ubGF5b3V0LmZvcmNlPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gbihuKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIsdSl7aWYodC5wb2ludCE9PW4pe3ZhciBpPXQu
Y3gtbi54LG89dC5jeS1uLnksYT11LWUsYz1pKmkrbypvO2lmKGM+YSphL2Qpe2lmKHA+Yyl7dmFy
IHM9dC5jaGFyZ2UvYztuLnB4LT1pKnMsbi5weS09bypzfXJldHVybiEwfWlmKHQucG9pbnQmJmMm
JnA+Yyl7dmFyIHM9dC5wb2ludENoYXJnZS9jO24ucHgtPWkqcyxuLnB5LT1vKnN9fXJldHVybiF0
LmNoYXJnZX19ZnVuY3Rpb24gdChuKXtuLnB4PVpvLmV2ZW50Lngsbi5weT1aby5ldmVudC55LGEu
cmVzdW1lKCl9dmFyIGUscix1LGksbyxhPXt9LGM9Wm8uZGlzcGF0Y2goInN0YXJ0IiwidGljayIs
ImVuZCIpLHM9WzEsMV0sbD0uOSxmPXJzLGg9dXMsZz0tMzAscD1pcyx2PS4xLGQ9LjY0LG09W10s
eT1bXTtyZXR1cm4gYS50aWNrPWZ1bmN0aW9uKCl7aWYoKHIqPS45OSk8LjAwNSlyZXR1cm4gYy5l
bmQoe3R5cGU6ImVuZCIsYWxwaGE6cj0wfSksITA7dmFyIHQsZSxhLGYsaCxwLGQseCxNLF89bS5s
ZW5ndGgsYj15Lmxlbmd0aDtmb3IoZT0wO2I+ZTsrK2UpYT15W2VdLGY9YS5zb3VyY2UsaD1hLnRh
cmdldCx4PWgueC1mLngsTT1oLnktZi55LChwPXgqeCtNKk0pJiYocD1yKmlbZV0qKChwPU1hdGgu
c3FydChwKSktdVtlXSkvcCx4Kj1wLE0qPXAsaC54LT14KihkPWYud2VpZ2h0LyhoLndlaWdodCtm
LndlaWdodCkpLGgueS09TSpkLGYueCs9eCooZD0xLWQpLGYueSs9TSpkKTtpZigoZD1yKnYpJiYo
eD1zWzBdLzIsTT1zWzFdLzIsZT0tMSxkKSlmb3IoOysrZTxfOylhPW1bZV0sYS54Kz0oeC1hLngp
KmQsYS55Kz0oTS1hLnkpKmQ7aWYoZylmb3IoVnUodD1aby5nZW9tLnF1YWR0cmVlKG0pLHIsbyks
ZT0tMTsrK2U8XzspKGE9bVtlXSkuZml4ZWR8fHQudmlzaXQobihhKSk7Zm9yKGU9LTE7KytlPF87
KWE9bVtlXSxhLmZpeGVkPyhhLng9YS5weCxhLnk9YS5weSk6KGEueC09KGEucHgtKGEucHg9YS54
KSkqbCxhLnktPShhLnB5LShhLnB5PWEueSkpKmwpO2MudGljayh7dHlwZToidGljayIsYWxwaGE6
cn0pfSxhLm5vZGVzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPW4sYSk6
bX0sYS5saW5rcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT1uLGEpOnl9
LGEuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1uLGEpOnN9LGEu
bGlua0Rpc3RhbmNlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSJmdW5j
dGlvbiI9PXR5cGVvZiBuP246K24sYSk6Zn0sYS5kaXN0YW5jZT1hLmxpbmtEaXN0YW5jZSxhLmxp
bmtTdHJlbmd0aD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0iZnVuY3Rp
b24iPT10eXBlb2Ygbj9uOituLGEpOmh9LGEuZnJpY3Rpb249ZnVuY3Rpb24obil7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGw9K24sYSk6bH0sYS5jaGFyZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGc9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjorbixhKTpnfSxhLmNoYXJn
ZURpc3RhbmNlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPW4qbixhKTpN
YXRoLnNxcnQocCl9LGEuZ3Jhdml0eT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odj0rbixhKTp2fSxhLnRoZXRhPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhkPW4qbixhKTpNYXRoLnNxcnQoZCl9LGEuYWxwaGE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KG49K24scj9yPW4+MD9uOjA6bj4wJiYoYy5zdGFydCh7dHlwZToic3RhcnQi
LGFscGhhOnI9bn0pLFpvLnRpbWVyKGEudGljaykpLGEpOnJ9LGEuc3RhcnQ9ZnVuY3Rpb24oKXtm
dW5jdGlvbiBuKG4scil7aWYoIWUpe2ZvcihlPW5ldyBBcnJheShjKSxhPTA7Yz5hOysrYSllW2Fd
PVtdO2ZvcihhPTA7cz5hOysrYSl7dmFyIHU9eVthXTtlW3Uuc291cmNlLmluZGV4XS5wdXNoKHUu
dGFyZ2V0KSxlW3UudGFyZ2V0LmluZGV4XS5wdXNoKHUuc291cmNlKX19Zm9yKHZhciBpLG89ZVt0
XSxhPS0xLHM9by5sZW5ndGg7KythPHM7KWlmKCFpc05hTihpPW9bYV1bbl0pKXJldHVybiBpO3Jl
dHVybiBNYXRoLnJhbmRvbSgpKnJ9dmFyIHQsZSxyLGM9bS5sZW5ndGgsbD15Lmxlbmd0aCxwPXNb
MF0sdj1zWzFdO2Zvcih0PTA7Yz50OysrdCkocj1tW3RdKS5pbmRleD10LHIud2VpZ2h0PTA7Zm9y
KHQ9MDtsPnQ7Kyt0KXI9eVt0XSwibnVtYmVyIj09dHlwZW9mIHIuc291cmNlJiYoci5zb3VyY2U9
bVtyLnNvdXJjZV0pLCJudW1iZXIiPT10eXBlb2Ygci50YXJnZXQmJihyLnRhcmdldD1tW3IudGFy
Z2V0XSksKytyLnNvdXJjZS53ZWlnaHQsKytyLnRhcmdldC53ZWlnaHQ7Zm9yKHQ9MDtjPnQ7Kyt0
KXI9bVt0XSxpc05hTihyLngpJiYoci54PW4oIngiLHApKSxpc05hTihyLnkpJiYoci55PW4oInki
LHYpKSxpc05hTihyLnB4KSYmKHIucHg9ci54KSxpc05hTihyLnB5KSYmKHIucHk9ci55KTtpZih1
PVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBmKWZvcih0PTA7bD50OysrdCl1W3RdPStmLmNhbGwodGhp
cyx5W3RdLHQpO2Vsc2UgZm9yKHQ9MDtsPnQ7Kyt0KXVbdF09ZjtpZihpPVtdLCJmdW5jdGlvbiI9
PXR5cGVvZiBoKWZvcih0PTA7bD50OysrdClpW3RdPStoLmNhbGwodGhpcyx5W3RdLHQpO2Vsc2Ug
Zm9yKHQ9MDtsPnQ7Kyt0KWlbdF09aDtpZihvPVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBnKWZvcih0
PTA7Yz50OysrdClvW3RdPStnLmNhbGwodGhpcyxtW3RdLHQpO2Vsc2UgZm9yKHQ9MDtjPnQ7Kyt0
KW9bdF09ZztyZXR1cm4gYS5yZXN1bWUoKX0sYS5yZXN1bWU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5h
bHBoYSguMSl9LGEuc3RvcD1mdW5jdGlvbigpe3JldHVybiBhLmFscGhhKDApfSxhLmRyYWc9ZnVu
Y3Rpb24oKXtyZXR1cm4gZXx8KGU9Wm8uYmVoYXZpb3IuZHJhZygpLm9yaWdpbih3dCkub24oImRy
YWdzdGFydC5mb3JjZSIsT3UpLm9uKCJkcmFnLmZvcmNlIix0KS5vbigiZHJhZ2VuZC5mb3JjZSIs
WXUpKSxhcmd1bWVudHMubGVuZ3RoPyh0aGlzLm9uKCJtb3VzZW92ZXIuZm9yY2UiLEl1KS5vbigi
bW91c2VvdXQuZm9yY2UiLFp1KS5jYWxsKGUpLHZvaWQgMCk6ZX0sWm8ucmViaW5kKGEsYywib24i
KX07dmFyIHJzPTIwLHVzPTEsaXM9MS8wO1pvLmxheW91dC5oaWVyYXJjaHk9ZnVuY3Rpb24oKXtm
dW5jdGlvbiBuKHUpe3ZhciBpLG89W3VdLGE9W107Zm9yKHUuZGVwdGg9MDtudWxsIT0oaT1vLnBv
cCgpKTspaWYoYS5wdXNoKGkpLChzPWUuY2FsbChuLGksaS5kZXB0aCkpJiYoYz1zLmxlbmd0aCkp
e2Zvcih2YXIgYyxzLGw7LS1jPj0wOylvLnB1c2gobD1zW2NdKSxsLnBhcmVudD1pLGwuZGVwdGg9
aS5kZXB0aCsxO3ImJihpLnZhbHVlPTApLGkuY2hpbGRyZW49c31lbHNlIHImJihpLnZhbHVlPSty
LmNhbGwobixpLGkuZGVwdGgpfHwwKSxkZWxldGUgaS5jaGlsZHJlbjtyZXR1cm4gQnUodSxmdW5j
dGlvbihuKXt2YXIgZSx1O3QmJihlPW4uY2hpbGRyZW4pJiZlLnNvcnQodCksciYmKHU9bi5wYXJl
bnQpJiYodS52YWx1ZSs9bi52YWx1ZSl9KSxhfXZhciB0PUd1LGU9V3Uscj1KdTtyZXR1cm4gbi5z
b3J0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbik6dH0sbi5jaGls
ZHJlbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4udmFs
dWU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxuLnJldmFs
dWU9ZnVuY3Rpb24odCl7cmV0dXJuIHImJigkdSh0LGZ1bmN0aW9uKG4pe24uY2hpbGRyZW4mJihu
LnZhbHVlPTApfSksQnUodCxmdW5jdGlvbih0KXt2YXIgZTt0LmNoaWxkcmVufHwodC52YWx1ZT0r
ci5jYWxsKG4sdCx0LmRlcHRoKXx8MCksKGU9dC5wYXJlbnQpJiYoZS52YWx1ZSs9dC52YWx1ZSl9
KSksdH0sbn0sWm8ubGF5b3V0LnBhcnRpdGlvbj1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odCxlLHIs
dSl7dmFyIGk9dC5jaGlsZHJlbjtpZih0Lng9ZSx0Lnk9dC5kZXB0aCp1LHQuZHg9cix0LmR5PXUs
aSYmKG89aS5sZW5ndGgpKXt2YXIgbyxhLGMscz0tMTtmb3Iocj10LnZhbHVlP3IvdC52YWx1ZTow
OysrczxvOyluKGE9aVtzXSxlLGM9YS52YWx1ZSpyLHUpLGUrPWN9fWZ1bmN0aW9uIHQobil7dmFy
IGU9bi5jaGlsZHJlbixyPTA7aWYoZSYmKHU9ZS5sZW5ndGgpKWZvcih2YXIgdSxpPS0xOysraTx1
OylyPU1hdGgubWF4KHIsdChlW2ldKSk7cmV0dXJuIDErcn1mdW5jdGlvbiBlKGUsaSl7dmFyIG89
ci5jYWxsKHRoaXMsZSxpKTtyZXR1cm4gbihvWzBdLDAsdVswXSx1WzFdL3Qob1swXSkpLG99dmFy
IHI9Wm8ubGF5b3V0LmhpZXJhcmNoeSgpLHU9WzEsMV07cmV0dXJuIGUuc2l6ZT1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1uLGUpOnV9LFh1KGUscil9LFpvLmxheW91dC5w
aWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGkpe3ZhciBvPWkubWFwKGZ1bmN0aW9uKGUscil7cmV0
dXJuK3QuY2FsbChuLGUscil9KSxhPSsoImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseSh0aGlz
LGFyZ3VtZW50cyk6ciksYz0oKCJmdW5jdGlvbiI9PXR5cGVvZiB1P3UuYXBwbHkodGhpcyxhcmd1
bWVudHMpOnUpLWEpL1pvLnN1bShvKSxzPVpvLnJhbmdlKGkubGVuZ3RoKTtudWxsIT1lJiZzLnNv
cnQoZT09PW9zP2Z1bmN0aW9uKG4sdCl7cmV0dXJuIG9bdF0tb1tuXX06ZnVuY3Rpb24obix0KXty
ZXR1cm4gZShpW25dLGlbdF0pfSk7dmFyIGw9W107cmV0dXJuIHMuZm9yRWFjaChmdW5jdGlvbihu
KXt2YXIgdDtsW25dPXtkYXRhOmlbbl0sdmFsdWU6dD1vW25dLHN0YXJ0QW5nbGU6YSxlbmRBbmds
ZTphKz10KmN9fSksbH12YXIgdD1OdW1iZXIsZT1vcyxyPTAsdT13YTtyZXR1cm4gbi52YWx1ZT1m
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLG4pOnR9LG4uc29ydD1mdW5j
dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4uc3RhcnRBbmdsZT1m
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LG4uZW5kQW5nbGU9
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxuKTp1fSxufTt2YXIgb3M9
e307Wm8ubGF5b3V0LnN0YWNrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihhLGMpe3ZhciBzPWEubWFw
KGZ1bmN0aW9uKGUscil7cmV0dXJuIHQuY2FsbChuLGUscil9KSxsPXMubWFwKGZ1bmN0aW9uKHQp
e3JldHVybiB0Lm1hcChmdW5jdGlvbih0LGUpe3JldHVybltpLmNhbGwobix0LGUpLG8uY2FsbChu
LHQsZSldfSl9KSxmPWUuY2FsbChuLGwsYyk7cz1aby5wZXJtdXRlKHMsZiksbD1aby5wZXJtdXRl
KGwsZik7dmFyIGgsZyxwLHY9ci5jYWxsKG4sbCxjKSxkPXMubGVuZ3RoLG09c1swXS5sZW5ndGg7
Zm9yKGc9MDttPmc7KytnKWZvcih1LmNhbGwobixzWzBdW2ddLHA9dltnXSxsWzBdW2ddWzFdKSxo
PTE7ZD5oOysraCl1LmNhbGwobixzW2hdW2ddLHArPWxbaC0xXVtnXVsxXSxsW2hdW2ddWzFdKTty
ZXR1cm4gYX12YXIgdD13dCxlPWVpLHI9cmksdT10aSxpPVF1LG89bmk7cmV0dXJuIG4udmFsdWVz
PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbik6dH0sbi5vcmRlcj1m
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2Yg
dD90OmFzLmdldCh0KXx8ZWksbik6ZX0sbi5vZmZzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjcy5nZXQodCl8fHJpLG4pOnJ9
LG4ueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LG4pOml9LG4ueT1m
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10LG4pOm99LG4ub3V0PWZ1bmN0
aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsbik6dX0sbn07dmFyIGFzPVpvLm1h
cCh7Imluc2lkZS1vdXQiOmZ1bmN0aW9uKG4pe3ZhciB0LGUscj1uLmxlbmd0aCx1PW4ubWFwKHVp
KSxpPW4ubWFwKGlpKSxvPVpvLnJhbmdlKHIpLnNvcnQoZnVuY3Rpb24obix0KXtyZXR1cm4gdVtu
XS11W3RdfSksYT0wLGM9MCxzPVtdLGw9W107Zm9yKHQ9MDtyPnQ7Kyt0KWU9b1t0XSxjPmE/KGEr
PWlbZV0scy5wdXNoKGUpKTooYys9aVtlXSxsLnB1c2goZSkpO3JldHVybiBsLnJldmVyc2UoKS5j
b25jYXQocyl9LHJldmVyc2U6ZnVuY3Rpb24obil7cmV0dXJuIFpvLnJhbmdlKG4ubGVuZ3RoKS5y
ZXZlcnNlKCl9LCJkZWZhdWx0IjplaX0pLGNzPVpvLm1hcCh7c2lsaG91ZXR0ZTpmdW5jdGlvbihu
KXt2YXIgdCxlLHIsdT1uLmxlbmd0aCxpPW5bMF0ubGVuZ3RoLG89W10sYT0wLGM9W107Zm9yKGU9
MDtpPmU7KytlKXtmb3IodD0wLHI9MDt1PnQ7dCsrKXIrPW5bdF1bZV1bMV07cj5hJiYoYT1yKSxv
LnB1c2gocil9Zm9yKGU9MDtpPmU7KytlKWNbZV09KGEtb1tlXSkvMjtyZXR1cm4gY30sd2lnZ2xl
OmZ1bmN0aW9uKG4pe3ZhciB0LGUscix1LGksbyxhLGMscyxsPW4ubGVuZ3RoLGY9blswXSxoPWYu
bGVuZ3RoLGc9W107Zm9yKGdbMF09Yz1zPTAsZT0xO2g+ZTsrK2Upe2Zvcih0PTAsdT0wO2w+dDsr
K3QpdSs9blt0XVtlXVsxXTtmb3IodD0wLGk9MCxhPWZbZV1bMF0tZltlLTFdWzBdO2w+dDsrK3Qp
e2ZvcihyPTAsbz0oblt0XVtlXVsxXS1uW3RdW2UtMV1bMV0pLygyKmEpO3Q+cjsrK3Ipbys9KG5b
cl1bZV1bMV0tbltyXVtlLTFdWzFdKS9hO2krPW8qblt0XVtlXVsxXX1nW2VdPWMtPXU/aS91KmE6
MCxzPmMmJihzPWMpfWZvcihlPTA7aD5lOysrZSlnW2VdLT1zO3JldHVybiBnfSxleHBhbmQ6ZnVu
Y3Rpb24obil7dmFyIHQsZSxyLHU9bi5sZW5ndGgsaT1uWzBdLmxlbmd0aCxvPTEvdSxhPVtdO2Zv
cihlPTA7aT5lOysrZSl7Zm9yKHQ9MCxyPTA7dT50O3QrKylyKz1uW3RdW2VdWzFdO2lmKHIpZm9y
KHQ9MDt1PnQ7dCsrKW5bdF1bZV1bMV0vPXI7ZWxzZSBmb3IodD0wO3U+dDt0Kyspblt0XVtlXVsx
XT1vfWZvcihlPTA7aT5lOysrZSlhW2VdPTA7cmV0dXJuIGF9LHplcm86cml9KTtaby5sYXlvdXQu
aGlzdG9ncmFtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLGkpe2Zvcih2YXIgbyxhLGM9W10scz1u
Lm1hcChlLHRoaXMpLGw9ci5jYWxsKHRoaXMscyxpKSxmPXUuY2FsbCh0aGlzLGwscyxpKSxpPS0x
LGg9cy5sZW5ndGgsZz1mLmxlbmd0aC0xLHA9dD8xOjEvaDsrK2k8Zzspbz1jW2ldPVtdLG8uZHg9
ZltpKzFdLShvLng9ZltpXSksby55PTA7aWYoZz4wKWZvcihpPS0xOysraTxoOylhPXNbaV0sYT49
bFswXSYmYTw9bFsxXSYmKG89Y1taby5iaXNlY3QoZixhLDEsZyktMV0sby55Kz1wLG8ucHVzaChu
W2ldKSk7cmV0dXJuIGN9dmFyIHQ9ITAsZT1OdW1iZXIscj1zaSx1PWFpO3JldHVybiBuLnZhbHVl
PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsbik6ZX0sbi5yYW5nZT1m
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1idCh0KSxuKTpyfSxuLmJpbnM9
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9Im51bWJlciI9PXR5cGVvZiB0
P2Z1bmN0aW9uKG4pe3JldHVybiBjaShuLHQpfTpidCh0KSxuKTp1fSxuLmZyZXF1ZW5jeT1mdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0hIWUsbik6dH0sbn0sWm8ubGF5b3V0
LnBhY2s9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4saSl7dmFyIG89ZS5jYWxsKHRoaXMsbixpKSxh
PW9bMF0sYz11WzBdLHM9dVsxXSxsPW51bGw9PXQ/TWF0aC5zcXJ0OiJmdW5jdGlvbiI9PXR5cGVv
ZiB0P3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdH07aWYoYS54PWEueT0wLEJ1KGEsZnVuY3Rpb24obil7
bi5yPStsKG4udmFsdWUpfSksQnUoYSxwaSkscil7dmFyIGY9cioodD8xOk1hdGgubWF4KDIqYS5y
L2MsMiphLnIvcykpLzI7QnUoYSxmdW5jdGlvbihuKXtuLnIrPWZ9KSxCdShhLHBpKSxCdShhLGZ1
bmN0aW9uKG4pe24uci09Zn0pfXJldHVybiBtaShhLGMvMixzLzIsdD8xOjEvTWF0aC5tYXgoMiph
LnIvYywyKmEuci9zKSksb312YXIgdCxlPVpvLmxheW91dC5oaWVyYXJjaHkoKS5zb3J0KGxpKSxy
PTAsdT1bMSwxXTtyZXR1cm4gbi5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh1PXQsbik6dX0sbi5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHQ9bnVsbD09ZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTorZSxuKTp0fSxuLnBhZGRpbmc9
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3Qsbik6cn0sWHUobixlKX0s
Wm8ubGF5b3V0LnRyZWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sdSl7dmFyIGw9by5jYWxsKHRo
aXMsbix1KSxmPWxbMF0saD10KGYpO2lmKEJ1KGgsZSksaC5wYXJlbnQubT0taC56LCR1KGgsciks
cykkdShmLGkpO2Vsc2V7dmFyIGc9ZixwPWYsdj1mOyR1KGYsZnVuY3Rpb24obil7bi54PGcueCYm
KGc9biksbi54PnAueCYmKHA9biksbi5kZXB0aD52LmRlcHRoJiYodj1uKX0pO3ZhciBkPWEoZyxw
KS8yLWcueCxtPWNbMF0vKHAueCthKHAsZykvMitkKSx5PWNbMV0vKHYuZGVwdGh8fDEpOyR1KGYs
ZnVuY3Rpb24obil7bi54PShuLngrZCkqbSxuLnk9bi5kZXB0aCp5fSl9cmV0dXJuIGx9ZnVuY3Rp
b24gdChuKXtmb3IodmFyIHQsZT17QTpudWxsLGNoaWxkcmVuOltuXX0scj1bZV07bnVsbCE9KHQ9
ci5wb3AoKSk7KWZvcih2YXIgdSxpPXQuY2hpbGRyZW4sbz0wLGE9aS5sZW5ndGg7YT5vOysrbyly
LnB1c2goKGlbb109dT17XzppW29dLHBhcmVudDp0LGNoaWxkcmVuOih1PWlbb10uY2hpbGRyZW4p
JiZ1LnNsaWNlKCl8fFtdLEE6bnVsbCxhOm51bGwsejowLG06MCxjOjAsczowLHQ6bnVsbCxpOm99
KS5hPXUpO3JldHVybiBlLmNoaWxkcmVuWzBdfWZ1bmN0aW9uIGUobil7dmFyIHQ9bi5jaGlsZHJl
bixlPW4ucGFyZW50LmNoaWxkcmVuLHI9bi5pP2Vbbi5pLTFdOm51bGw7aWYodC5sZW5ndGgpe3dp
KG4pO3ZhciBpPSh0WzBdLnordFt0Lmxlbmd0aC0xXS56KS8yO3I/KG4uej1yLnorYShuLl8sci5f
KSxuLm09bi56LWkpOm4uej1pfWVsc2UgciYmKG4uej1yLnorYShuLl8sci5fKSk7bi5wYXJlbnQu
QT11KG4scixuLnBhcmVudC5BfHxlWzBdKX1mdW5jdGlvbiByKG4pe24uXy54PW4ueituLnBhcmVu
dC5tLG4ubSs9bi5wYXJlbnQubX1mdW5jdGlvbiB1KG4sdCxlKXtpZih0KXtmb3IodmFyIHIsdT1u
LGk9bixvPXQsYz11LnBhcmVudC5jaGlsZHJlblswXSxzPXUubSxsPWkubSxmPW8ubSxoPWMubTtv
PV9pKG8pLHU9TWkodSksbyYmdTspYz1NaShjKSxpPV9pKGkpLGkuYT1uLHI9by56K2YtdS56LXMr
YShvLl8sdS5fKSxyPjAmJihiaShTaShvLG4sZSksbixyKSxzKz1yLGwrPXIpLGYrPW8ubSxzKz11
Lm0saCs9Yy5tLGwrPWkubTtvJiYhX2koaSkmJihpLnQ9byxpLm0rPWYtbCksdSYmIU1pKGMpJiYo
Yy50PXUsYy5tKz1zLWgsZT1uKX1yZXR1cm4gZX1mdW5jdGlvbiBpKG4pe24ueCo9Y1swXSxuLnk9
bi5kZXB0aCpjWzFdfXZhciBvPVpvLmxheW91dC5oaWVyYXJjaHkoKS5zb3J0KG51bGwpLnZhbHVl
KG51bGwpLGE9eGksYz1bMSwxXSxzPW51bGw7cmV0dXJuIG4uc2VwYXJhdGlvbj1mdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10LG4pOmF9LG4uc2l6ZT1mdW5jdGlvbih0KXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxsPT0oYz10KT9pOm51bGwsbik6cz9udWxsOmN9
LG4ubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bnVsbD09
KGM9dCk/bnVsbDppLG4pOnM/YzpudWxsfSxYdShuLG8pfSxaby5sYXlvdXQuY2x1c3Rlcj1mdW5j
dGlvbigpe2Z1bmN0aW9uIG4obixpKXt2YXIgbyxhPXQuY2FsbCh0aGlzLG4saSksYz1hWzBdLHM9
MDtCdShjLGZ1bmN0aW9uKG4pe3ZhciB0PW4uY2hpbGRyZW47dCYmdC5sZW5ndGg/KG4ueD1FaSh0
KSxuLnk9a2kodCkpOihuLng9bz9zKz1lKG4sbyk6MCxuLnk9MCxvPW4pfSk7dmFyIGw9QWkoYyks
Zj1DaShjKSxoPWwueC1lKGwsZikvMixnPWYueCtlKGYsbCkvMjtyZXR1cm4gQnUoYyx1P2Z1bmN0
aW9uKG4pe24ueD0obi54LWMueCkqclswXSxuLnk9KGMueS1uLnkpKnJbMV19OmZ1bmN0aW9uKG4p
e24ueD0obi54LWgpLyhnLWgpKnJbMF0sbi55PSgxLShjLnk/bi55L2MueToxKSkqclsxXX0pLGF9
dmFyIHQ9Wm8ubGF5b3V0LmhpZXJhcmNoeSgpLnNvcnQobnVsbCkudmFsdWUobnVsbCksZT14aSxy
PVsxLDFdLHU9ITE7cmV0dXJuIG4uc2VwYXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oZT10LG4pOmV9LG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odT1udWxsPT0ocj10KSxuKTp1P251bGw6cn0sbi5ub2RlU2l6ZT1mdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1udWxsIT0ocj10KSxuKTp1P3I6bnVsbH0sWHUo
bix0KX0sWm8ubGF5b3V0LnRyZWVtYXA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sdCl7Zm9yKHZh
ciBlLHIsdT0tMSxpPW4ubGVuZ3RoOysrdTxpOylyPShlPW5bdV0pLnZhbHVlKigwPnQ/MDp0KSxl
LmFyZWE9aXNOYU4ocil8fDA+PXI/MDpyfWZ1bmN0aW9uIHQoZSl7dmFyIGk9ZS5jaGlsZHJlbjtp
ZihpJiZpLmxlbmd0aCl7dmFyIG8sYSxjLHM9ZihlKSxsPVtdLGg9aS5zbGljZSgpLHA9MS8wLHY9
InNsaWNlIj09PWc/cy5keDoiZGljZSI9PT1nP3MuZHk6InNsaWNlLWRpY2UiPT09Zz8xJmUuZGVw
dGg/cy5keTpzLmR4Ok1hdGgubWluKHMuZHgscy5keSk7Zm9yKG4oaCxzLmR4KnMuZHkvZS52YWx1
ZSksbC5hcmVhPTA7KGM9aC5sZW5ndGgpPjA7KWwucHVzaChvPWhbYy0xXSksbC5hcmVhKz1vLmFy
ZWEsInNxdWFyaWZ5IiE9PWd8fChhPXIobCx2KSk8PXA/KGgucG9wKCkscD1hKToobC5hcmVhLT1s
LnBvcCgpLmFyZWEsdShsLHYscywhMSksdj1NYXRoLm1pbihzLmR4LHMuZHkpLGwubGVuZ3RoPWwu
YXJlYT0wLHA9MS8wKTtsLmxlbmd0aCYmKHUobCx2LHMsITApLGwubGVuZ3RoPWwuYXJlYT0wKSxp
LmZvckVhY2godCl9fWZ1bmN0aW9uIGUodCl7dmFyIHI9dC5jaGlsZHJlbjtpZihyJiZyLmxlbmd0
aCl7dmFyIGksbz1mKHQpLGE9ci5zbGljZSgpLGM9W107Zm9yKG4oYSxvLmR4Km8uZHkvdC52YWx1
ZSksYy5hcmVhPTA7aT1hLnBvcCgpOyljLnB1c2goaSksYy5hcmVhKz1pLmFyZWEsbnVsbCE9aS56
JiYodShjLGkuej9vLmR4Om8uZHksbywhYS5sZW5ndGgpLGMubGVuZ3RoPWMuYXJlYT0wKTtyLmZv
ckVhY2goZSl9fWZ1bmN0aW9uIHIobix0KXtmb3IodmFyIGUscj1uLmFyZWEsdT0wLGk9MS8wLG89
LTEsYT1uLmxlbmd0aDsrK288YTspKGU9bltvXS5hcmVhKSYmKGk+ZSYmKGk9ZSksZT51JiYodT1l
KSk7cmV0dXJuIHIqPXIsdCo9dCxyP01hdGgubWF4KHQqdSpwL3Isci8odCppKnApKToxLzB9ZnVu
Y3Rpb24gdShuLHQsZSxyKXt2YXIgdSxpPS0xLG89bi5sZW5ndGgsYT1lLngscz1lLnksbD10P2Mo
bi5hcmVhL3QpOjA7aWYodD09ZS5keCl7Zm9yKChyfHxsPmUuZHkpJiYobD1lLmR5KTsrK2k8bzsp
dT1uW2ldLHUueD1hLHUueT1zLHUuZHk9bCxhKz11LmR4PU1hdGgubWluKGUueCtlLmR4LWEsbD9j
KHUuYXJlYS9sKTowKTt1Lno9ITAsdS5keCs9ZS54K2UuZHgtYSxlLnkrPWwsZS5keS09bH1lbHNl
e2Zvcigocnx8bD5lLmR4KSYmKGw9ZS5keCk7KytpPG87KXU9bltpXSx1Lng9YSx1Lnk9cyx1LmR4
PWwscys9dS5keT1NYXRoLm1pbihlLnkrZS5keS1zLGw/Yyh1LmFyZWEvbCk6MCk7dS56PSExLHUu
ZHkrPWUueStlLmR5LXMsZS54Kz1sLGUuZHgtPWx9fWZ1bmN0aW9uIGkocil7dmFyIHU9b3x8YShy
KSxpPXVbMF07cmV0dXJuIGkueD0wLGkueT0wLGkuZHg9c1swXSxpLmR5PXNbMV0sbyYmYS5yZXZh
bHVlKGkpLG4oW2ldLGkuZHgqaS5keS9pLnZhbHVlKSwobz9lOnQpKGkpLGgmJihvPXUpLHV9dmFy
IG8sYT1aby5sYXlvdXQuaGllcmFyY2h5KCksYz1NYXRoLnJvdW5kLHM9WzEsMV0sbD1udWxsLGY9
TmksaD0hMSxnPSJzcXVhcmlmeSIscD0uNSooMStNYXRoLnNxcnQoNSkpO3JldHVybiBpLnNpemU9
ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bixpKTpzfSxpLnBhZGRpbmc9
ZnVuY3Rpb24obil7ZnVuY3Rpb24gdCh0KXt2YXIgZT1uLmNhbGwoaSx0LHQuZGVwdGgpO3JldHVy
biBudWxsPT1lP05pKHQpOnppKHQsIm51bWJlciI9PXR5cGVvZiBlP1tlLGUsZSxlXTplKX1mdW5j
dGlvbiBlKHQpe3JldHVybiB6aSh0LG4pfWlmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBsO3Zh
ciByO3JldHVybiBmPW51bGw9PShsPW4pP05pOiJmdW5jdGlvbiI9PShyPXR5cGVvZiBuKT90OiJu
dW1iZXIiPT09cj8obj1bbixuLG4sbl0sZSk6ZSxpfSxpLnJvdW5kPWZ1bmN0aW9uKG4pe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhjPW4/TWF0aC5yb3VuZDpOdW1iZXIsaSk6YyE9TnVtYmVyfSxp
LnN0aWNreT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1uLG89bnVsbCxp
KTpofSxpLnJhdGlvPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPW4saSk6
cH0saS5tb2RlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPW4rIiIsaSk6
Z30sWHUoaSxhKX0sWm8ucmFuZG9tPXtub3JtYWw6ZnVuY3Rpb24obix0KXt2YXIgZT1hcmd1bWVu
dHMubGVuZ3RoO3JldHVybiAyPmUmJih0PTEpLDE+ZSYmKG49MCksZnVuY3Rpb24oKXt2YXIgZSxy
LHU7ZG8gZT0yKk1hdGgucmFuZG9tKCktMSxyPTIqTWF0aC5yYW5kb20oKS0xLHU9ZSplK3Iqcjt3
aGlsZSghdXx8dT4xKTtyZXR1cm4gbit0KmUqTWF0aC5zcXJ0KC0yKk1hdGgubG9nKHUpL3UpfX0s
bG9nTm9ybWFsOmZ1bmN0aW9uKCl7dmFyIG49Wm8ucmFuZG9tLm5vcm1hbC5hcHBseShabyxhcmd1
bWVudHMpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBNYXRoLmV4cChuKCkpfX0sYmF0ZXM6ZnVu
Y3Rpb24obil7dmFyIHQ9Wm8ucmFuZG9tLmlyd2luSGFsbChuKTtyZXR1cm4gZnVuY3Rpb24oKXty
ZXR1cm4gdCgpL259fSxpcndpbkhhbGw6ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9y
KHZhciB0PTAsZT0wO24+ZTtlKyspdCs9TWF0aC5yYW5kb20oKTtyZXR1cm4gdH19fSxaby5zY2Fs
ZT17fTt2YXIgc3M9e2Zsb29yOnd0LGNlaWw6d3R9O1pvLnNjYWxlLmxpbmVhcj1mdW5jdGlvbigp
e3JldHVybiBVaShbMCwxXSxbMCwxXSxodSwhMSl9O3ZhciBscz17czoxLGc6MSxwOjEscjoxLGU6
MX07Wm8uc2NhbGUubG9nPWZ1bmN0aW9uKCl7cmV0dXJuIFZpKFpvLnNjYWxlLmxpbmVhcigpLmRv
bWFpbihbMCwxXSksMTAsITAsWzEsMTBdKX07dmFyIGZzPVpvLmZvcm1hdCgiLjBlIiksaHM9e2Zs
b29yOmZ1bmN0aW9uKG4pe3JldHVybi1NYXRoLmNlaWwoLW4pfSxjZWlsOmZ1bmN0aW9uKG4pe3Jl
dHVybi1NYXRoLmZsb29yKC1uKX19O1pvLnNjYWxlLnBvdz1mdW5jdGlvbigpe3JldHVybiBYaSha
by5zY2FsZS5saW5lYXIoKSwxLFswLDFdKX0sWm8uc2NhbGUuc3FydD1mdW5jdGlvbigpe3JldHVy
biBaby5zY2FsZS5wb3coKS5leHBvbmVudCguNSl9LFpvLnNjYWxlLm9yZGluYWw9ZnVuY3Rpb24o
KXtyZXR1cm4gQmkoW10se3Q6InJhbmdlIixhOltbXV19KX0sWm8uc2NhbGUuY2F0ZWdvcnkxMD1m
dW5jdGlvbigpe3JldHVybiBaby5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoZ3MpfSxaby5zY2FsZS5j
YXRlZ29yeTIwPWZ1bmN0aW9uKCl7cmV0dXJuIFpvLnNjYWxlLm9yZGluYWwoKS5yYW5nZShwcyl9
LFpvLnNjYWxlLmNhdGVnb3J5MjBiPWZ1bmN0aW9uKCl7cmV0dXJuIFpvLnNjYWxlLm9yZGluYWwo
KS5yYW5nZSh2cyl9LFpvLnNjYWxlLmNhdGVnb3J5MjBjPWZ1bmN0aW9uKCl7cmV0dXJuIFpvLnNj
YWxlLm9yZGluYWwoKS5yYW5nZShkcyl9O3ZhciBncz1bMjA2MjI2MCwxNjc0NDIwNiwyOTI0NTg4
LDE0MDM0NzI4LDk3MjU4ODUsOTE5NzEzMSwxNDkwNzMzMCw4MzU1NzExLDEyMzY5MTg2LDE1NTYx
NzVdLm1hcCh2dCkscHM9WzIwNjIyNjAsMTE0NTQ0NDAsMTY3NDQyMDYsMTY3NTk2NzIsMjkyNDU4
OCwxMDAxODY5OCwxNDAzNDcyOCwxNjc1MDc0Miw5NzI1ODg1LDEyOTU1ODYxLDkxOTcxMzEsMTI4
ODUxNDAsMTQ5MDczMzAsMTYyMzQxOTQsODM1NTcxMSwxMzA5MjgwNywxMjM2OTE4NiwxNDQwODU4
OSwxNTU2MTc1LDEwNDEwNzI1XS5tYXAodnQpLHZzPVszNzUwNzc3LDUzOTU2MTksNzA0MDcxOSwx
MDI2NDI4Niw2NTE5MDk3LDkyMTY1OTQsMTE5MTUxMTUsMTM1NTY2MzYsOTIwMjk5MywxMjQyNjgw
OSwxNTE4NjUxNCwxNTE5MDkzMiw4NjY2MTY5LDExMzU2NDkwLDE0MDQ5NjQzLDE1MTc3MzcyLDgw
Nzc2ODMsMTA4MzQzMjQsMTM1Mjg1MDksMTQ1ODk2NTRdLm1hcCh2dCksZHM9WzMyNDQ3MzMsNzA1
NzExMCwxMDQwNjYyNSwxMzAzMjQzMSwxNTA5NTA1MywxNjYxNjc2NCwxNjYyNTI1OSwxNjYzNDAx
OCwzMjUzMDc2LDc2NTI0NzAsMTA2MDcwMDMsMTMxMDE1MDQsNzY5NTI4MSwxMDM5NDMxMiwxMjM2
OTM3MiwxNDM0Mjg5MSw2NTEzNTA3LDk4Njg5NTAsMTI0MzQ4NzcsMTQyNzcwODFdLm1hcCh2dCk7
Wm8uc2NhbGUucXVhbnRpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gV2koW10sW10pfSxaby5zY2FsZS5x
dWFudGl6ZT1mdW5jdGlvbigpe3JldHVybiBKaSgwLDEsWzAsMV0pfSxaby5zY2FsZS50aHJlc2hv
bGQ9ZnVuY3Rpb24oKXtyZXR1cm4gR2koWy41XSxbMCwxXSl9LFpvLnNjYWxlLmlkZW50aXR5PWZ1
bmN0aW9uKCl7cmV0dXJuIEtpKFswLDFdKX0sWm8uc3ZnPXt9LFpvLnN2Zy5hcmM9ZnVuY3Rpb24o
KXtmdW5jdGlvbiBuKCl7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksaT1lLmFwcGx5KHRo
aXMsYXJndW1lbnRzKSxvPXIuYXBwbHkodGhpcyxhcmd1bWVudHMpK21zLGE9dS5hcHBseSh0aGlz
LGFyZ3VtZW50cykrbXMsYz0obz5hJiYoYz1vLG89YSxhPWMpLGEtbykscz1iYT5jPyIwIjoiMSIs
bD1NYXRoLmNvcyhvKSxmPU1hdGguc2luKG8pLGg9TWF0aC5jb3MoYSksZz1NYXRoLnNpbihhKTsK
LXJldHVybiBjPj15cz9uPyJNMCwiK2krIkEiK2krIiwiK2krIiAwIDEsMSAwLCIrLWkrIkEiK2kr
IiwiK2krIiAwIDEsMSAwLCIraSsiTTAsIituKyJBIituKyIsIituKyIgMCAxLDAgMCwiKy1uKyJB
IituKyIsIituKyIgMCAxLDAgMCwiK24rIloiOiJNMCwiK2krIkEiK2krIiwiK2krIiAwIDEsMSAw
LCIrLWkrIkEiK2krIiwiK2krIiAwIDEsMSAwLCIraSsiWiI6bj8iTSIraSpsKyIsIitpKmYrIkEi
K2krIiwiK2krIiAwICIrcysiLDEgIitpKmgrIiwiK2kqZysiTCIrbipoKyIsIituKmcrIkEiK24r
IiwiK24rIiAwICIrcysiLDAgIituKmwrIiwiK24qZisiWiI6Ik0iK2kqbCsiLCIraSpmKyJBIitp
KyIsIitpKyIgMCAiK3MrIiwxICIraSpoKyIsIitpKmcrIkwwLDAiKyJaIn12YXIgdD1RaSxlPW5v
LHI9dG8sdT1lbztyZXR1cm4gbi5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odD1idChlKSxuKTp0fSxuLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhlPWJ0KHQpLG4pOmV9LG4uc3RhcnRBbmdsZT1mdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1idCh0KSxuKTpyfSxuLmVuZEFuZ2xlPWZ1bmN0
aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWJ0KHQpLG4pOnV9LG4uY2VudHJvaWQ9
ZnVuY3Rpb24oKXt2YXIgbj0odC5hcHBseSh0aGlzLGFyZ3VtZW50cykrZS5hcHBseSh0aGlzLGFy
Z3VtZW50cykpLzIsaT0oci5hcHBseSh0aGlzLGFyZ3VtZW50cykrdS5hcHBseSh0aGlzLGFyZ3Vt
ZW50cykpLzIrbXM7cmV0dXJuW01hdGguY29zKGkpKm4sTWF0aC5zaW4oaSkqbl19LG59O3ZhciBt
cz0tU2EseXM9d2Eta2E7Wm8uc3ZnLmxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gcm8od3QpfTt2YXIg
eHM9Wm8ubWFwKHtsaW5lYXI6dW8sImxpbmVhci1jbG9zZWQiOmlvLHN0ZXA6b28sInN0ZXAtYmVm
b3JlIjphbywic3RlcC1hZnRlciI6Y28sYmFzaXM6cG8sImJhc2lzLW9wZW4iOnZvLCJiYXNpcy1j
bG9zZWQiOm1vLGJ1bmRsZTp5byxjYXJkaW5hbDpmbywiY2FyZGluYWwtb3BlbiI6c28sImNhcmRp
bmFsLWNsb3NlZCI6bG8sbW9ub3RvbmU6U299KTt4cy5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7dC5r
ZXk9bix0LmNsb3NlZD0vLWNsb3NlZCQvLnRlc3Qobil9KTt2YXIgTXM9WzAsMi8zLDEvMywwXSxf
cz1bMCwxLzMsMi8zLDBdLGJzPVswLDEvNiwyLzMsMS82XTtaby5zdmcubGluZS5yYWRpYWw9ZnVu
Y3Rpb24oKXt2YXIgbj1ybyhrbyk7cmV0dXJuIG4ucmFkaXVzPW4ueCxkZWxldGUgbi54LG4uYW5n
bGU9bi55LGRlbGV0ZSBuLnksbn0sYW8ucmV2ZXJzZT1jbyxjby5yZXZlcnNlPWFvLFpvLnN2Zy5h
cmVhPWZ1bmN0aW9uKCl7cmV0dXJuIEVvKHd0KX0sWm8uc3ZnLmFyZWEucmFkaWFsPWZ1bmN0aW9u
KCl7dmFyIG49RW8oa28pO3JldHVybiBuLnJhZGl1cz1uLngsZGVsZXRlIG4ueCxuLmlubmVyUmFk
aXVzPW4ueDAsZGVsZXRlIG4ueDAsbi5vdXRlclJhZGl1cz1uLngxLGRlbGV0ZSBuLngxLG4uYW5n
bGU9bi55LGRlbGV0ZSBuLnksbi5zdGFydEFuZ2xlPW4ueTAsZGVsZXRlIG4ueTAsbi5lbmRBbmds
ZT1uLnkxLGRlbGV0ZSBuLnkxLG59LFpvLnN2Zy5jaG9yZD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4o
bixhKXt2YXIgYz10KHRoaXMsaSxuLGEpLHM9dCh0aGlzLG8sbixhKTtyZXR1cm4iTSIrYy5wMCty
KGMucixjLnAxLGMuYTEtYy5hMCkrKGUoYyxzKT91KGMucixjLnAxLGMucixjLnAwKTp1KGMucixj
LnAxLHMucixzLnAwKStyKHMucixzLnAxLHMuYTEtcy5hMCkrdShzLnIscy5wMSxjLnIsYy5wMCkp
KyJaIn1mdW5jdGlvbiB0KG4sdCxlLHIpe3ZhciB1PXQuY2FsbChuLGUsciksaT1hLmNhbGwobix1
LHIpLG89Yy5jYWxsKG4sdSxyKSttcyxsPXMuY2FsbChuLHUscikrbXM7cmV0dXJue3I6aSxhMDpv
LGExOmwscDA6W2kqTWF0aC5jb3MobyksaSpNYXRoLnNpbihvKV0scDE6W2kqTWF0aC5jb3MobCks
aSpNYXRoLnNpbihsKV19fWZ1bmN0aW9uIGUobix0KXtyZXR1cm4gbi5hMD09dC5hMCYmbi5hMT09
dC5hMX1mdW5jdGlvbiByKG4sdCxlKXtyZXR1cm4iQSIrbisiLCIrbisiIDAgIisgKyhlPmJhKSsi
LDEgIit0fWZ1bmN0aW9uIHUobix0LGUscil7cmV0dXJuIlEgMCwwICIrcn12YXIgaT1ncixvPXBy
LGE9QW8sYz10byxzPWVvO3JldHVybiBuLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYT1idCh0KSxuKTphfSxuLnNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oaT1idCh0KSxuKTppfSxuLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8obz1idCh0KSxuKTpvfSxuLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9YnQodCksbik6Y30sbi5lbmRBbmdsZT1mdW5jdGlv
bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1idCh0KSxuKTpzfSxufSxaby5zdmcuZGlh
Z29uYWw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sdSl7dmFyIGk9dC5jYWxsKHRoaXMsbix1KSxv
PWUuY2FsbCh0aGlzLG4sdSksYT0oaS55K28ueSkvMixjPVtpLHt4OmkueCx5OmF9LHt4Om8ueCx5
OmF9LG9dO3JldHVybiBjPWMubWFwKHIpLCJNIitjWzBdKyJDIitjWzFdKyIgIitjWzJdKyIgIitj
WzNdfXZhciB0PWdyLGU9cHIscj1DbztyZXR1cm4gbi5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHQ9YnQoZSksbik6dH0sbi50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9YnQodCksbik6ZX0sbi5wcm9qZWN0aW9uPWZ1bmN0aW9u
KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbik6cn0sbn0sWm8uc3ZnLmRpYWdvbmFs
LnJhZGlhbD1mdW5jdGlvbigpe3ZhciBuPVpvLnN2Zy5kaWFnb25hbCgpLHQ9Q28sZT1uLnByb2pl
Y3Rpb247cmV0dXJuIG4ucHJvamVjdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD9lKE5vKHQ9bikpOnR9LG59LFpvLnN2Zy5zeW1ib2w9ZnVuY3Rpb24oKXtmdW5jdGlvbiBu
KG4scil7cmV0dXJuKHdzLmdldCh0LmNhbGwodGhpcyxuLHIpKXx8VG8pKGUuY2FsbCh0aGlzLG4s
cikpfXZhciB0PUxvLGU9em87cmV0dXJuIG4udHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odD1idChlKSxuKTp0fSxuLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGU9YnQodCksbik6ZX0sbn07dmFyIHdzPVpvLm1hcCh7Y2lyY2xlOlRvLGNy
b3NzOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChuLzUpLzI7cmV0dXJuIk0iKy0zKnQrIiwi
Ky10KyJIIistdCsiViIrLTMqdCsiSCIrdCsiViIrLXQrIkgiKzMqdCsiViIrdCsiSCIrdCsiViIr
Myp0KyJIIistdCsiViIrdCsiSCIrLTMqdCsiWiJ9LGRpYW1vbmQ6ZnVuY3Rpb24obil7dmFyIHQ9
TWF0aC5zcXJ0KG4vKDIqQXMpKSxlPXQqQXM7cmV0dXJuIk0wLCIrLXQrIkwiK2UrIiwwIisiIDAs
Iit0KyIgIistZSsiLDAiKyJaIn0sc3F1YXJlOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChu
KS8yO3JldHVybiJNIistdCsiLCIrLXQrIkwiK3QrIiwiKy10KyIgIit0KyIsIit0KyIgIistdCsi
LCIrdCsiWiJ9LCJ0cmlhbmdsZS1kb3duIjpmdW5jdGlvbihuKXt2YXIgdD1NYXRoLnNxcnQobi9F
cyksZT10KkVzLzI7cmV0dXJuIk0wLCIrZSsiTCIrdCsiLCIrLWUrIiAiKy10KyIsIistZSsiWiJ9
LCJ0cmlhbmdsZS11cCI6ZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5zcXJ0KG4vRXMpLGU9dCpFcy8y
O3JldHVybiJNMCwiKy1lKyJMIit0KyIsIitlKyIgIistdCsiLCIrZSsiWiJ9fSk7Wm8uc3ZnLnN5
bWJvbFR5cGVzPXdzLmtleXMoKTt2YXIgU3Msa3MsRXM9TWF0aC5zcXJ0KDMpLEFzPU1hdGgudGFu
KDMwKkFhKSxDcz1bXSxOcz0wO0NzLmNhbGw9cGEuY2FsbCxDcy5lbXB0eT1wYS5lbXB0eSxDcy5u
b2RlPXBhLm5vZGUsQ3Muc2l6ZT1wYS5zaXplLFpvLnRyYW5zaXRpb249ZnVuY3Rpb24obil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/U3M/bi50cmFuc2l0aW9uKCk6bjptYS50cmFuc2l0aW9uKCl9
LFpvLnRyYW5zaXRpb24ucHJvdG90eXBlPUNzLENzLnNlbGVjdD1mdW5jdGlvbihuKXt2YXIgdCxl
LHIsdT10aGlzLmlkLGk9W107bj1iKG4pO2Zvcih2YXIgbz0tMSxhPXRoaXMubGVuZ3RoOysrbzxh
Oyl7aS5wdXNoKHQ9W10pO2Zvcih2YXIgYz10aGlzW29dLHM9LTEsbD1jLmxlbmd0aDsrK3M8bDsp
KHI9Y1tzXSkmJihlPW4uY2FsbChyLHIuX19kYXRhX18scyxvKSk/KCJfX2RhdGFfXyJpbiByJiYo
ZS5fX2RhdGFfXz1yLl9fZGF0YV9fKSxQbyhlLHMsdSxyLl9fdHJhbnNpdGlvbl9fW3VdKSx0LnB1
c2goZSkpOnQucHVzaChudWxsKX1yZXR1cm4gcW8oaSx1KX0sQ3Muc2VsZWN0QWxsPWZ1bmN0aW9u
KG4pe3ZhciB0LGUscix1LGksbz10aGlzLmlkLGE9W107bj13KG4pO2Zvcih2YXIgYz0tMSxzPXRo
aXMubGVuZ3RoOysrYzxzOylmb3IodmFyIGw9dGhpc1tjXSxmPS0xLGg9bC5sZW5ndGg7KytmPGg7
KWlmKHI9bFtmXSl7aT1yLl9fdHJhbnNpdGlvbl9fW29dLGU9bi5jYWxsKHIsci5fX2RhdGFfXyxm
LGMpLGEucHVzaCh0PVtdKTtmb3IodmFyIGc9LTEscD1lLmxlbmd0aDsrK2c8cDspKHU9ZVtnXSkm
JlBvKHUsZyxvLGkpLHQucHVzaCh1KX1yZXR1cm4gcW8oYSxvKX0sQ3MuZmlsdGVyPWZ1bmN0aW9u
KG4pe3ZhciB0LGUscix1PVtdOyJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj1SKG4pKTtmb3IodmFy
IGk9MCxvPXRoaXMubGVuZ3RoO28+aTtpKyspe3UucHVzaCh0PVtdKTtmb3IodmFyIGU9dGhpc1tp
XSxhPTAsYz1lLmxlbmd0aDtjPmE7YSsrKShyPWVbYV0pJiZuLmNhbGwocixyLl9fZGF0YV9fLGEs
aSkmJnQucHVzaChyKX1yZXR1cm4gcW8odSx0aGlzLmlkKX0sQ3MudHdlZW49ZnVuY3Rpb24obix0
KXt2YXIgZT10aGlzLmlkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/dGhpcy5ub2RlKCkuX190
cmFuc2l0aW9uX19bZV0udHdlZW4uZ2V0KG4pOlAodGhpcyxudWxsPT10P2Z1bmN0aW9uKHQpe3Qu
X190cmFuc2l0aW9uX19bZV0udHdlZW4ucmVtb3ZlKG4pfTpmdW5jdGlvbihyKXtyLl9fdHJhbnNp
dGlvbl9fW2VdLnR3ZWVuLnNldChuLHQpfSl9LENzLmF0dHI9ZnVuY3Rpb24obix0KXtmdW5jdGlv
biBlKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoYSl9ZnVuY3Rpb24gcigpe3RoaXMucmVtb3ZlQXR0
cmlidXRlTlMoYS5zcGFjZSxhLmxvY2FsKX1mdW5jdGlvbiB1KG4pe3JldHVybiBudWxsPT1uP2U6
KG4rPSIiLGZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLmdldEF0dHJpYnV0ZShhKTtyZXR1cm4gZSE9
PW4mJih0PW8oZSxuKSxmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZShhLHQobikpfSl9KX1m
dW5jdGlvbiBpKG4pe3JldHVybiBudWxsPT1uP3I6KG4rPSIiLGZ1bmN0aW9uKCl7dmFyIHQsZT10
aGlzLmdldEF0dHJpYnV0ZU5TKGEuc3BhY2UsYS5sb2NhbCk7cmV0dXJuIGUhPT1uJiYodD1vKGUs
biksZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGVOUyhhLnNwYWNlLGEubG9jYWwsdChuKSl9
KX0pfWlmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHQgaW4gbil0aGlzLmF0dHIodCxuW3RdKTty
ZXR1cm4gdGhpc312YXIgbz0idHJhbnNmb3JtIj09bj9EdTpodSxhPVpvLm5zLnF1YWxpZnkobik7
cmV0dXJuIFJvKHRoaXMsImF0dHIuIituLHQsYS5sb2NhbD9pOnUpfSxDcy5hdHRyVHdlZW49ZnVu
Y3Rpb24obix0KXtmdW5jdGlvbiBlKG4sZSl7dmFyIHI9dC5jYWxsKHRoaXMsbixlLHRoaXMuZ2V0
QXR0cmlidXRlKHUpKTtyZXR1cm4gciYmZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodSxy
KG4pKX19ZnVuY3Rpb24gcihuLGUpe3ZhciByPXQuY2FsbCh0aGlzLG4sZSx0aGlzLmdldEF0dHJp
YnV0ZU5TKHUuc3BhY2UsdS5sb2NhbCkpO3JldHVybiByJiZmdW5jdGlvbihuKXt0aGlzLnNldEF0
dHJpYnV0ZU5TKHUuc3BhY2UsdS5sb2NhbCxyKG4pKX19dmFyIHU9Wm8ubnMucXVhbGlmeShuKTty
ZXR1cm4gdGhpcy50d2VlbigiYXR0ci4iK24sdS5sb2NhbD9yOmUpfSxDcy5zdHlsZT1mdW5jdGlv
bihuLHQsZSl7ZnVuY3Rpb24gcigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobil9ZnVuY3Rp
b24gdSh0KXtyZXR1cm4gbnVsbD09dD9yOih0Kz0iIixmdW5jdGlvbigpe3ZhciByLHU9V28uZ2V0
Q29tcHV0ZWRTdHlsZSh0aGlzLG51bGwpLmdldFByb3BlcnR5VmFsdWUobik7cmV0dXJuIHUhPT10
JiYocj1odSh1LHQpLGZ1bmN0aW9uKHQpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobixyKHQpLGUp
fSl9KX12YXIgaT1hcmd1bWVudHMubGVuZ3RoO2lmKDM+aSl7aWYoInN0cmluZyIhPXR5cGVvZiBu
KXsyPmkmJih0PSIiKTtmb3IoZSBpbiBuKXRoaXMuc3R5bGUoZSxuW2VdLHQpO3JldHVybiB0aGlz
fWU9IiJ9cmV0dXJuIFJvKHRoaXMsInN0eWxlLiIrbix0LHUpfSxDcy5zdHlsZVR3ZWVuPWZ1bmN0
aW9uKG4sdCxlKXtmdW5jdGlvbiByKHIsdSl7dmFyIGk9dC5jYWxsKHRoaXMscix1LFdvLmdldENv
bXB1dGVkU3R5bGUodGhpcyxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKG4pKTtyZXR1cm4gaSYmZnVu
Y3Rpb24odCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLGkodCksZSl9fXJldHVybiBhcmd1bWVu
dHMubGVuZ3RoPDMmJihlPSIiKSx0aGlzLnR3ZWVuKCJzdHlsZS4iK24scil9LENzLnRleHQ9ZnVu
Y3Rpb24obil7cmV0dXJuIFJvKHRoaXMsInRleHQiLG4sRG8pfSxDcy5yZW1vdmU9ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5lYWNoKCJlbmQudHJhbnNpdGlvbiIsZnVuY3Rpb24oKXt2YXIgbjt0aGlz
Ll9fdHJhbnNpdGlvbl9fLmNvdW50PDImJihuPXRoaXMucGFyZW50Tm9kZSkmJm4ucmVtb3ZlQ2hp
bGQodGhpcyl9KX0sQ3MuZWFzZT1mdW5jdGlvbihuKXt2YXIgdD10aGlzLmlkO3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPDE/dGhpcy5ub2RlKCkuX190cmFuc2l0aW9uX19bdF0uZWFzZTooImZ1bmN0
aW9uIiE9dHlwZW9mIG4mJihuPVpvLmVhc2UuYXBwbHkoWm8sYXJndW1lbnRzKSksUCh0aGlzLGZ1
bmN0aW9uKGUpe2UuX190cmFuc2l0aW9uX19bdF0uZWFzZT1ufSkpfSxDcy5kZWxheT1mdW5jdGlv
bihuKXt2YXIgdD10aGlzLmlkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/dGhpcy5ub2RlKCku
X190cmFuc2l0aW9uX19bdF0uZGVsYXk6UCh0aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0
aW9uKGUscix1KXtlLl9fdHJhbnNpdGlvbl9fW3RdLmRlbGF5PStuLmNhbGwoZSxlLl9fZGF0YV9f
LHIsdSl9OihuPStuLGZ1bmN0aW9uKGUpe2UuX190cmFuc2l0aW9uX19bdF0uZGVsYXk9bn0pKX0s
Q3MuZHVyYXRpb249ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5pZDtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aDwxP3RoaXMubm9kZSgpLl9fdHJhbnNpdGlvbl9fW3RdLmR1cmF0aW9uOlAodGhpcywiZnVu
Y3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbihlLHIsdSl7ZS5fX3RyYW5zaXRpb25fX1t0XS5kdXJh
dGlvbj1NYXRoLm1heCgxLG4uY2FsbChlLGUuX19kYXRhX18scix1KSl9OihuPU1hdGgubWF4KDEs
biksZnVuY3Rpb24oZSl7ZS5fX3RyYW5zaXRpb25fX1t0XS5kdXJhdGlvbj1ufSkpfSxDcy5lYWNo
PWZ1bmN0aW9uKG4sdCl7dmFyIGU9dGhpcy5pZDtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBy
PWtzLHU9U3M7U3M9ZSxQKHRoaXMsZnVuY3Rpb24odCxyLHUpe2tzPXQuX190cmFuc2l0aW9uX19b
ZV0sbi5jYWxsKHQsdC5fX2RhdGFfXyxyLHUpfSksa3M9cixTcz11fWVsc2UgUCh0aGlzLGZ1bmN0
aW9uKHIpe3ZhciB1PXIuX190cmFuc2l0aW9uX19bZV07KHUuZXZlbnR8fCh1LmV2ZW50PVpvLmRp
c3BhdGNoKCJzdGFydCIsImVuZCIpKSkub24obix0KX0pO3JldHVybiB0aGlzfSxDcy50cmFuc2l0
aW9uPWZ1bmN0aW9uKCl7Zm9yKHZhciBuLHQsZSxyLHU9dGhpcy5pZCxpPSsrTnMsbz1bXSxhPTAs
Yz10aGlzLmxlbmd0aDtjPmE7YSsrKXtvLnB1c2gobj1bXSk7Zm9yKHZhciB0PXRoaXNbYV0scz0w
LGw9dC5sZW5ndGg7bD5zO3MrKykoZT10W3NdKSYmKHI9T2JqZWN0LmNyZWF0ZShlLl9fdHJhbnNp
dGlvbl9fW3VdKSxyLmRlbGF5Kz1yLmR1cmF0aW9uLFBvKGUscyxpLHIpKSxuLnB1c2goZSl9cmV0
dXJuIHFvKG8saSl9LFpvLnN2Zy5heGlzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtuLmVhY2go
ZnVuY3Rpb24oKXt2YXIgbixzPVpvLnNlbGVjdCh0aGlzKSxsPXRoaXMuX19jaGFydF9ffHxlLGY9
dGhpcy5fX2NoYXJ0X189ZS5jb3B5KCksaD1udWxsPT1jP2YudGlja3M/Zi50aWNrcy5hcHBseShm
LGEpOmYuZG9tYWluKCk6YyxnPW51bGw9PXQ/Zi50aWNrRm9ybWF0P2YudGlja0Zvcm1hdC5hcHBs
eShmLGEpOnd0OnQscD1zLnNlbGVjdEFsbCgiLnRpY2siKS5kYXRhKGgsZiksdj1wLmVudGVyKCku
aW5zZXJ0KCJnIiwiLmRvbWFpbiIpLmF0dHIoImNsYXNzIiwidGljayIpLnN0eWxlKCJvcGFjaXR5
IixrYSksZD1aby50cmFuc2l0aW9uKHAuZXhpdCgpKS5zdHlsZSgib3BhY2l0eSIsa2EpLnJlbW92
ZSgpLG09Wm8udHJhbnNpdGlvbihwLm9yZGVyKCkpLnN0eWxlKCJvcGFjaXR5IiwxKSx5PVRpKGYp
LHg9cy5zZWxlY3RBbGwoIi5kb21haW4iKS5kYXRhKFswXSksTT0oeC5lbnRlcigpLmFwcGVuZCgi
cGF0aCIpLmF0dHIoImNsYXNzIiwiZG9tYWluIiksWm8udHJhbnNpdGlvbih4KSk7di5hcHBlbmQo
ImxpbmUiKSx2LmFwcGVuZCgidGV4dCIpO3ZhciBfPXYuc2VsZWN0KCJsaW5lIiksYj1tLnNlbGVj
dCgibGluZSIpLHc9cC5zZWxlY3QoInRleHQiKS50ZXh0KGcpLFM9di5zZWxlY3QoInRleHQiKSxr
PW0uc2VsZWN0KCJ0ZXh0Iik7c3dpdGNoKHIpe2Nhc2UiYm90dG9tIjpuPVVvLF8uYXR0cigieTIi
LHUpLFMuYXR0cigieSIsTWF0aC5tYXgodSwwKStvKSxiLmF0dHIoIngyIiwwKS5hdHRyKCJ5MiIs
dSksay5hdHRyKCJ4IiwwKS5hdHRyKCJ5IixNYXRoLm1heCh1LDApK28pLHcuYXR0cigiZHkiLCIu
NzFlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLE0uYXR0cigiZCIsIk0iK3lbMF0r
IiwiK2krIlYwSCIreVsxXSsiViIraSk7YnJlYWs7Y2FzZSJ0b3AiOm49VW8sXy5hdHRyKCJ5MiIs
LXUpLFMuYXR0cigieSIsLShNYXRoLm1heCh1LDApK28pKSxiLmF0dHIoIngyIiwwKS5hdHRyKCJ5
MiIsLXUpLGsuYXR0cigieCIsMCkuYXR0cigieSIsLShNYXRoLm1heCh1LDApK28pKSx3LmF0dHIo
ImR5IiwiMGVtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksTS5hdHRyKCJkIiwiTSIr
eVswXSsiLCIrLWkrIlYwSCIreVsxXSsiViIrLWkpO2JyZWFrO2Nhc2UibGVmdCI6bj1qbyxfLmF0
dHIoIngyIiwtdSksUy5hdHRyKCJ4IiwtKE1hdGgubWF4KHUsMCkrbykpLGIuYXR0cigieDIiLC11
KS5hdHRyKCJ5MiIsMCksay5hdHRyKCJ4IiwtKE1hdGgubWF4KHUsMCkrbykpLmF0dHIoInkiLDAp
LHcuYXR0cigiZHkiLCIuMzJlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsImVuZCIpLE0uYXR0cigi
ZCIsIk0iKy1pKyIsIit5WzBdKyJIMFYiK3lbMV0rIkgiKy1pKTticmVhaztjYXNlInJpZ2h0Ijpu
PWpvLF8uYXR0cigieDIiLHUpLFMuYXR0cigieCIsTWF0aC5tYXgodSwwKStvKSxiLmF0dHIoIngy
Iix1KS5hdHRyKCJ5MiIsMCksay5hdHRyKCJ4IixNYXRoLm1heCh1LDApK28pLmF0dHIoInkiLDAp
LHcuYXR0cigiZHkiLCIuMzJlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsInN0YXJ0IiksTS5hdHRy
KCJkIiwiTSIraSsiLCIreVswXSsiSDBWIit5WzFdKyJIIitpKX1pZihmLnJhbmdlQmFuZCl7dmFy
IEU9ZixBPUUucmFuZ2VCYW5kKCkvMjtsPWY9ZnVuY3Rpb24obil7cmV0dXJuIEUobikrQX19ZWxz
ZSBsLnJhbmdlQmFuZD9sPWY6ZC5jYWxsKG4sZik7di5jYWxsKG4sbCksbS5jYWxsKG4sZil9KX12
YXIgdCxlPVpvLnNjYWxlLmxpbmVhcigpLHI9enMsdT02LGk9NixvPTMsYT1bMTBdLGM9bnVsbDty
ZXR1cm4gbi5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4p
OmV9LG4ub3JpZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQgaW4g
THM/dCsiIjp6cyxuKTpyfSxuLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGE9YXJndW1lbnRzLG4pOmF9LG4udGlja1ZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oYz10LG4pOmN9LG4udGlja0Zvcm1hdD1mdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odD1lLG4pOnR9LG4udGlja1NpemU9ZnVuY3Rpb24odCl7dmFyIGU9
YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gZT8odT0rdCxpPSthcmd1bWVudHNbZS0xXSxuKTp1fSxu
LmlubmVyVGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9K3Qs
bik6dX0sbi5vdXRlclRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhpPSt0LG4pOml9LG4udGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KG89K3Qsbik6b30sbi50aWNrU3ViZGl2aWRlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGgmJm59LG59O3ZhciB6cz0iYm90dG9tIixMcz17dG9wOjEscmlnaHQ6MSxib3R0
b206MSxsZWZ0OjF9O1pvLnN2Zy5icnVzaD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oaSl7aS5lYWNo
KGZ1bmN0aW9uKCl7dmFyIGk9Wm8uc2VsZWN0KHRoaXMpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIs
ImFsbCIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDAp
Iikub24oIm1vdXNlZG93bi5icnVzaCIsdSkub24oInRvdWNoc3RhcnQuYnJ1c2giLHUpLG89aS5z
ZWxlY3RBbGwoIi5iYWNrZ3JvdW5kIikuZGF0YShbMF0pO28uZW50ZXIoKS5hcHBlbmQoInJlY3Qi
KS5hdHRyKCJjbGFzcyIsImJhY2tncm91bmQiKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIp
LnN0eWxlKCJjdXJzb3IiLCJjcm9zc2hhaXIiKSxpLnNlbGVjdEFsbCgiLmV4dGVudCIpLmRhdGEo
WzBdKS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwiZXh0ZW50Iikuc3R5bGUo
ImN1cnNvciIsIm1vdmUiKTt2YXIgYT1pLnNlbGVjdEFsbCgiLnJlc2l6ZSIpLmRhdGEocCx3dCk7
YS5leGl0KCkucmVtb3ZlKCksYS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIixmdW5j
dGlvbihuKXtyZXR1cm4icmVzaXplICIrbn0pLnN0eWxlKCJjdXJzb3IiLGZ1bmN0aW9uKG4pe3Jl
dHVybiBUc1tuXX0pLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLGZ1bmN0aW9uKG4pe3JldHVybi9b
ZXddJC8udGVzdChuKT8tMzpudWxsfSkuYXR0cigieSIsZnVuY3Rpb24obil7cmV0dXJuL15bbnNd
Ly50ZXN0KG4pPy0zOm51bGx9KS5hdHRyKCJ3aWR0aCIsNikuYXR0cigiaGVpZ2h0Iiw2KS5zdHls
ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpLGEuc3R5bGUoImRpc3BsYXkiLG4uZW1wdHkoKT8ibm9u
ZSI6bnVsbCk7dmFyIGwsZj1aby50cmFuc2l0aW9uKGkpLGg9Wm8udHJhbnNpdGlvbihvKTtjJiYo
bD1UaShjKSxoLmF0dHIoIngiLGxbMF0pLmF0dHIoIndpZHRoIixsWzFdLWxbMF0pLGUoZikpLHMm
JihsPVRpKHMpLGguYXR0cigieSIsbFswXSkuYXR0cigiaGVpZ2h0IixsWzFdLWxbMF0pLHIoZikp
LHQoZil9KX1mdW5jdGlvbiB0KG4pe24uc2VsZWN0QWxsKCIucmVzaXplIikuYXR0cigidHJhbnNm
b3JtIixmdW5jdGlvbihuKXtyZXR1cm4idHJhbnNsYXRlKCIrbFsrL2UkLy50ZXN0KG4pXSsiLCIr
ZlsrL15zLy50ZXN0KG4pXSsiKSJ9KX1mdW5jdGlvbiBlKG4pe24uc2VsZWN0KCIuZXh0ZW50Iiku
YXR0cigieCIsbFswXSksbi5zZWxlY3RBbGwoIi5leHRlbnQsLm4+cmVjdCwucz5yZWN0IikuYXR0
cigid2lkdGgiLGxbMV0tbFswXSl9ZnVuY3Rpb24gcihuKXtuLnNlbGVjdCgiLmV4dGVudCIpLmF0
dHIoInkiLGZbMF0pLG4uc2VsZWN0QWxsKCIuZXh0ZW50LC5lPnJlY3QsLnc+cmVjdCIpLmF0dHIo
ImhlaWdodCIsZlsxXS1mWzBdKX1mdW5jdGlvbiB1KCl7ZnVuY3Rpb24gdSgpezMyPT1aby5ldmVu
dC5rZXlDb2RlJiYoQ3x8KHg9bnVsbCx6WzBdLT1sWzFdLHpbMV0tPWZbMV0sQz0yKSx5KCkpfWZ1
bmN0aW9uIHAoKXszMj09Wm8uZXZlbnQua2V5Q29kZSYmMj09QyYmKHpbMF0rPWxbMV0selsxXSs9
ZlsxXSxDPTAseSgpKX1mdW5jdGlvbiB2KCl7dmFyIG49Wm8ubW91c2UoXyksdT0hMTtNJiYoblsw
XSs9TVswXSxuWzFdKz1NWzFdKSxDfHwoWm8uZXZlbnQuYWx0S2V5Pyh4fHwoeD1bKGxbMF0rbFsx
XSkvMiwoZlswXStmWzFdKS8yXSkselswXT1sWysoblswXTx4WzBdKV0selsxXT1mWysoblsxXTx4
WzFdKV0pOng9bnVsbCksRSYmZChuLGMsMCkmJihlKFMpLHU9ITApLEEmJmQobixzLDEpJiYocihT
KSx1PSEwKSx1JiYodChTKSx3KHt0eXBlOiJicnVzaCIsbW9kZTpDPyJtb3ZlIjoicmVzaXplIn0p
KX1mdW5jdGlvbiBkKG4sdCxlKXt2YXIgcix1LGE9VGkodCksYz1hWzBdLHM9YVsxXSxwPXpbZV0s
dj1lP2Y6bCxkPXZbMV0tdlswXTtyZXR1cm4gQyYmKGMtPXAscy09ZCtwKSxyPShlP2c6aCk/TWF0
aC5tYXgoYyxNYXRoLm1pbihzLG5bZV0pKTpuW2VdLEM/dT0ocis9cCkrZDooeCYmKHA9TWF0aC5t
YXgoYyxNYXRoLm1pbihzLDIqeFtlXS1yKSkpLHI+cD8odT1yLHI9cCk6dT1wKSx2WzBdIT1yfHx2
WzFdIT11PyhlP289bnVsbDppPW51bGwsdlswXT1yLHZbMV09dSwhMCk6dm9pZCAwfWZ1bmN0aW9u
IG0oKXt2KCksUy5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKS5zZWxlY3RBbGwoIi5yZXNp
emUiKS5zdHlsZSgiZGlzcGxheSIsbi5lbXB0eSgpPyJub25lIjpudWxsKSxaby5zZWxlY3QoImJv
ZHkiKS5zdHlsZSgiY3Vyc29yIixudWxsKSxMLm9uKCJtb3VzZW1vdmUuYnJ1c2giLG51bGwpLm9u
KCJtb3VzZXVwLmJydXNoIixudWxsKS5vbigidG91Y2htb3ZlLmJydXNoIixudWxsKS5vbigidG91
Y2hlbmQuYnJ1c2giLG51bGwpLm9uKCJrZXlkb3duLmJydXNoIixudWxsKS5vbigia2V5dXAuYnJ1
c2giLG51bGwpLE4oKSx3KHt0eXBlOiJicnVzaGVuZCJ9KX12YXIgeCxNLF89dGhpcyxiPVpvLnNl
bGVjdChaby5ldmVudC50YXJnZXQpLHc9YS5vZihfLGFyZ3VtZW50cyksUz1aby5zZWxlY3QoXyks
az1iLmRhdHVtKCksRT0hL14obnxzKSQvLnRlc3QoaykmJmMsQT0hL14oZXx3KSQvLnRlc3Qoaykm
JnMsQz1iLmNsYXNzZWQoImV4dGVudCIpLE49SSgpLHo9Wm8ubW91c2UoXyksTD1aby5zZWxlY3Qo
V28pLm9uKCJrZXlkb3duLmJydXNoIix1KS5vbigia2V5dXAuYnJ1c2giLHApO2lmKFpvLmV2ZW50
LmNoYW5nZWRUb3VjaGVzP0wub24oInRvdWNobW92ZS5icnVzaCIsdikub24oInRvdWNoZW5kLmJy
dXNoIixtKTpMLm9uKCJtb3VzZW1vdmUuYnJ1c2giLHYpLm9uKCJtb3VzZXVwLmJydXNoIixtKSxT
LmludGVycnVwdCgpLnNlbGVjdEFsbCgiKiIpLmludGVycnVwdCgpLEMpelswXT1sWzBdLXpbMF0s
elsxXT1mWzBdLXpbMV07ZWxzZSBpZihrKXt2YXIgVD0rL3ckLy50ZXN0KGspLHE9Ky9ebi8udGVz
dChrKTtNPVtsWzEtVF0telswXSxmWzEtcV0telsxXV0selswXT1sW1RdLHpbMV09ZltxXX1lbHNl
IFpvLmV2ZW50LmFsdEtleSYmKHg9ei5zbGljZSgpKTtTLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIs
Im5vbmUiKS5zZWxlY3RBbGwoIi5yZXNpemUiKS5zdHlsZSgiZGlzcGxheSIsbnVsbCksWm8uc2Vs
ZWN0KCJib2R5Iikuc3R5bGUoImN1cnNvciIsYi5zdHlsZSgiY3Vyc29yIikpLHcoe3R5cGU6ImJy
dXNoc3RhcnQifSksdigpfXZhciBpLG8sYT1NKG4sImJydXNoc3RhcnQiLCJicnVzaCIsImJydXNo
ZW5kIiksYz1udWxsLHM9bnVsbCxsPVswLDBdLGY9WzAsMF0saD0hMCxnPSEwLHA9cXNbMF07cmV0
dXJuIG4uZXZlbnQ9ZnVuY3Rpb24obil7bi5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49YS5vZih0aGlz
LGFyZ3VtZW50cyksdD17eDpsLHk6ZixpOmksajpvfSxlPXRoaXMuX19jaGFydF9ffHx0O3RoaXMu
X19jaGFydF9fPXQsU3M/Wm8uc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24oKS5lYWNoKCJzdGFydC5i
cnVzaCIsZnVuY3Rpb24oKXtpPWUuaSxvPWUuaixsPWUueCxmPWUueSxuKHt0eXBlOiJicnVzaHN0
YXJ0In0pfSkudHdlZW4oImJydXNoOmJydXNoIixmdW5jdGlvbigpe3ZhciBlPWd1KGwsdC54KSxy
PWd1KGYsdC55KTtyZXR1cm4gaT1vPW51bGwsZnVuY3Rpb24odSl7bD10Lng9ZSh1KSxmPXQueT1y
KHUpLG4oe3R5cGU6ImJydXNoIixtb2RlOiJyZXNpemUifSl9fSkuZWFjaCgiZW5kLmJydXNoIixm
dW5jdGlvbigpe2k9dC5pLG89dC5qLG4oe3R5cGU6ImJydXNoIixtb2RlOiJyZXNpemUifSksbih7
dHlwZToiYnJ1c2hlbmQifSl9KToobih7dHlwZToiYnJ1c2hzdGFydCJ9KSxuKHt0eXBlOiJicnVz
aCIsbW9kZToicmVzaXplIn0pLG4oe3R5cGU6ImJydXNoZW5kIn0pKX0pfSxuLng9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dCxwPXFzWyFjPDwxfCFzXSxuKTpjfSxuLnk9
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9dCxwPXFzWyFjPDwxfCFzXSxu
KTpzfSxuLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjJiZzPyho
PSEhdFswXSxnPSEhdFsxXSk6Yz9oPSEhdDpzJiYoZz0hIXQpLG4pOmMmJnM/W2gsZ106Yz9oOnM/
ZzpudWxsfSxuLmV4dGVudD1mdW5jdGlvbih0KXt2YXIgZSxyLHUsYSxoO3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhjJiYoZT10WzBdLHI9dFsxXSxzJiYoZT1lWzBdLHI9clswXSksaT1bZSxyXSxj
LmludmVydCYmKGU9YyhlKSxyPWMocikpLGU+ciYmKGg9ZSxlPXIscj1oKSwoZSE9bFswXXx8ciE9
bFsxXSkmJihsPVtlLHJdKSkscyYmKHU9dFswXSxhPXRbMV0sYyYmKHU9dVsxXSxhPWFbMV0pLG89
W3UsYV0scy5pbnZlcnQmJih1PXModSksYT1zKGEpKSx1PmEmJihoPXUsdT1hLGE9aCksKHUhPWZb
MF18fGEhPWZbMV0pJiYoZj1bdSxhXSkpLG4pOihjJiYoaT8oZT1pWzBdLHI9aVsxXSk6KGU9bFsw
XSxyPWxbMV0sYy5pbnZlcnQmJihlPWMuaW52ZXJ0KGUpLHI9Yy5pbnZlcnQocikpLGU+ciYmKGg9
ZSxlPXIscj1oKSkpLHMmJihvPyh1PW9bMF0sYT1vWzFdKToodT1mWzBdLGE9ZlsxXSxzLmludmVy
dCYmKHU9cy5pbnZlcnQodSksYT1zLmludmVydChhKSksdT5hJiYoaD11LHU9YSxhPWgpKSksYyYm
cz9bW2UsdV0sW3IsYV1dOmM/W2Uscl06cyYmW3UsYV0pfSxuLmNsZWFyPWZ1bmN0aW9uKCl7cmV0
dXJuIG4uZW1wdHkoKXx8KGw9WzAsMF0sZj1bMCwwXSxpPW89bnVsbCksbn0sbi5lbXB0eT1mdW5j
dGlvbigpe3JldHVybiEhYyYmbFswXT09bFsxXXx8ISFzJiZmWzBdPT1mWzFdfSxaby5yZWJpbmQo
bixhLCJvbiIpfTt2YXIgVHM9e246Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNp
emUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJu
d3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0scXM9W1sibiIsImUiLCJzIiwidyIsIm53Iiwi
bmUiLCJzZSIsInN3Il0sWyJlIiwidyJdLFsibiIsInMiXSxbXV0sUnM9UWEuZm9ybWF0PWljLnRp
bWVGb3JtYXQsRHM9UnMudXRjLFBzPURzKCIlWS0lbS0lZFQlSDolTTolUy4lTFoiKTtScy5pc289
RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcmJituZXcgRGF0ZSgiMjAwMC0wMS0wMVQwMDowMDow
MC4wMDBaIik/SG86UHMsSG8ucGFyc2U9ZnVuY3Rpb24obil7dmFyIHQ9bmV3IERhdGUobik7cmV0
dXJuIGlzTmFOKHQpP251bGw6dH0sSG8udG9TdHJpbmc9UHMudG9TdHJpbmcsUWEuc2Vjb25kPUR0
KGZ1bmN0aW9uKG4pe3JldHVybiBuZXcgbmMoMWUzKk1hdGguZmxvb3Iobi8xZTMpKX0sZnVuY3Rp
b24obix0KXtuLnNldFRpbWUobi5nZXRUaW1lKCkrMWUzKk1hdGguZmxvb3IodCkpfSxmdW5jdGlv
bihuKXtyZXR1cm4gbi5nZXRTZWNvbmRzKCl9KSxRYS5zZWNvbmRzPVFhLnNlY29uZC5yYW5nZSxR
YS5zZWNvbmRzLnV0Yz1RYS5zZWNvbmQudXRjLnJhbmdlLFFhLm1pbnV0ZT1EdChmdW5jdGlvbihu
KXtyZXR1cm4gbmV3IG5jKDZlNCpNYXRoLmZsb29yKG4vNmU0KSl9LGZ1bmN0aW9uKG4sdCl7bi5z
ZXRUaW1lKG4uZ2V0VGltZSgpKzZlNCpNYXRoLmZsb29yKHQpKX0sZnVuY3Rpb24obil7cmV0dXJu
IG4uZ2V0TWludXRlcygpfSksUWEubWludXRlcz1RYS5taW51dGUucmFuZ2UsUWEubWludXRlcy51
dGM9UWEubWludXRlLnV0Yy5yYW5nZSxRYS5ob3VyPUR0KGZ1bmN0aW9uKG4pe3ZhciB0PW4uZ2V0
VGltZXpvbmVPZmZzZXQoKS82MDtyZXR1cm4gbmV3IG5jKDM2ZTUqKE1hdGguZmxvb3Iobi8zNmU1
LXQpK3QpKX0sZnVuY3Rpb24obix0KXtuLnNldFRpbWUobi5nZXRUaW1lKCkrMzZlNSpNYXRoLmZs
b29yKHQpKX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0SG91cnMoKX0pLFFhLmhvdXJzPVFhLmhv
dXIucmFuZ2UsUWEuaG91cnMudXRjPVFhLmhvdXIudXRjLnJhbmdlLFFhLm1vbnRoPUR0KGZ1bmN0
aW9uKG4pe3JldHVybiBuPVFhLmRheShuKSxuLnNldERhdGUoMSksbn0sZnVuY3Rpb24obix0KXtu
LnNldE1vbnRoKG4uZ2V0TW9udGgoKSt0KX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0TW9udGgo
KX0pLFFhLm1vbnRocz1RYS5tb250aC5yYW5nZSxRYS5tb250aHMudXRjPVFhLm1vbnRoLnV0Yy5y
YW5nZTt2YXIgVXM9WzFlMyw1ZTMsMTVlMywzZTQsNmU0LDNlNSw5ZTUsMThlNSwzNmU1LDEwOGU1
LDIxNmU1LDQzMmU1LDg2NGU1LDE3MjhlNSw2MDQ4ZTUsMjU5MmU2LDc3NzZlNiwzMTUzNmU2XSxq
cz1bW1FhLnNlY29uZCwxXSxbUWEuc2Vjb25kLDVdLFtRYS5zZWNvbmQsMTVdLFtRYS5zZWNvbmQs
MzBdLFtRYS5taW51dGUsMV0sW1FhLm1pbnV0ZSw1XSxbUWEubWludXRlLDE1XSxbUWEubWludXRl
LDMwXSxbUWEuaG91ciwxXSxbUWEuaG91ciwzXSxbUWEuaG91ciw2XSxbUWEuaG91ciwxMl0sW1Fh
LmRheSwxXSxbUWEuZGF5LDJdLFtRYS53ZWVrLDFdLFtRYS5tb250aCwxXSxbUWEubW9udGgsM10s
W1FhLnllYXIsMV1dLEhzPVJzLm11bHRpKFtbIi4lTCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0
TWlsbGlzZWNvbmRzKCl9XSxbIjolUyIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0U2Vjb25kcygp
fV0sWyIlSTolTSIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0TWludXRlcygpfV0sWyIlSSAlcCIs
ZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0SG91cnMoKX1dLFsiJWEgJWQiLGZ1bmN0aW9uKG4pe3Jl
dHVybiBuLmdldERheSgpJiYxIT1uLmdldERhdGUoKX1dLFsiJWIgJWQiLGZ1bmN0aW9uKG4pe3Jl
dHVybiAxIT1uLmdldERhdGUoKX1dLFsiJUIiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldE1vbnRo
KCl9XSxbIiVZIix3ZV1dKSxGcz17cmFuZ2U6ZnVuY3Rpb24obix0LGUpe3JldHVybiBaby5yYW5n
ZShNYXRoLmNlaWwobi9lKSplLCt0LGUpLm1hcChPbyl9LGZsb29yOnd0LGNlaWw6d3R9O2pzLnll
YXI9UWEueWVhcixRYS5zY2FsZT1mdW5jdGlvbigpe3JldHVybiBGbyhaby5zY2FsZS5saW5lYXIo
KSxqcyxIcyl9O3ZhciBPcz1qcy5tYXAoZnVuY3Rpb24obil7cmV0dXJuW25bMF0udXRjLG5bMV1d
fSksWXM9RHMubXVsdGkoW1siLiVMIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENNaWxsaXNl
Y29uZHMoKX1dLFsiOiVTIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENTZWNvbmRzKCl9XSxb
IiVJOiVNIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENNaW51dGVzKCl9XSxbIiVJICVwIixm
dW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENIb3VycygpfV0sWyIlYSAlZCIsZnVuY3Rpb24obil7
cmV0dXJuIG4uZ2V0VVRDRGF5KCkmJjEhPW4uZ2V0VVRDRGF0ZSgpfV0sWyIlYiAlZCIsZnVuY3Rp
b24obil7cmV0dXJuIDEhPW4uZ2V0VVRDRGF0ZSgpfV0sWyIlQiIsZnVuY3Rpb24obil7cmV0dXJu
IG4uZ2V0VVRDTW9udGgoKX1dLFsiJVkiLHdlXV0pO09zLnllYXI9UWEueWVhci51dGMsUWEuc2Nh
bGUudXRjPWZ1bmN0aW9uKCl7cmV0dXJuIEZvKFpvLnNjYWxlLmxpbmVhcigpLE9zLFlzKX0sWm8u
dGV4dD1TdChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZXNwb25zZVRleHR9KSxaby5qc29uPWZ1bmN0
aW9uKG4sdCl7cmV0dXJuIGt0KG4sImFwcGxpY2F0aW9uL2pzb24iLFlvLHQpfSxaby5odG1sPWZ1
bmN0aW9uKG4sdCl7cmV0dXJuIGt0KG4sInRleHQvaHRtbCIsSW8sdCl9LFpvLnhtbD1TdChmdW5j
dGlvbihuKXtyZXR1cm4gbi5yZXNwb25zZVhNTH0pLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUm
JmRlZmluZS5hbWQ/ZGVmaW5lKFpvKToib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4
cG9ydHMmJihtb2R1bGUuZXhwb3J0cz1abyksdGhpcy5kMz1ab30oKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVu
bmVyL3Jlc291cmNlcy9ncmFwaC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5u
ZXIvcmVzb3VyY2VzL2dyYXBoLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjFm
NWY1Li4wMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVz
b3VyY2VzL2dyYXBoLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLWZ1bmN0aW9u
IGdyYXBoKHNlbGVjdG9yLCBtYXJnaW5zLCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZz
ZXQpCi17Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9y
KTsKLSAgICBlbGVtZW50LmlubmVySFRNTCA9ICcnOwotCi0gICAgdmFyIHNpemUgPSBQb2ludC5l
bGVtZW50Q2xpZW50U2l6ZShlbGVtZW50KS5zdWJ0cmFjdChtYXJnaW5zLnNpemUpOwotCi0gICAg
dmFyIHggPSBkMy5zY2FsZS5saW5lYXIoKQotICAgICAgICAgICAgLnJhbmdlKFswLCBzaXplLndp
ZHRoXSkKLSAgICAgICAgICAgIC5kb21haW4oZDMuZXh0ZW50KHNhbXBsZXMsIGZ1bmN0aW9uKGQp
IHsgcmV0dXJuIGQudGltZU9mZnNldDsgfSkpOyAgICAgICAgICAgIAotCi0gICAgdmFyIHlMZWZ0
ID0gZDMuc2NhbGUubGluZWFyKCkKLSAgICAgICAgICAgIC5yYW5nZShbc2l6ZS5oZWlnaHQsIDBd
KQotICAgICAgICAgICAgLmRvbWFpbihbMCwgZDMubWF4KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsg
cmV0dXJuIGQudmFsdWVzWzBdOyB9KV0pOwotCi0gICAgdmFyIHlSaWdodCA9IGQzLnNjYWxlLmxp
bmVhcigpCi0gICAgICAgICAgICAucmFuZ2UoW3NpemUuaGVpZ2h0LCAwXSkKLSAgICAgICAgICAg
IC5kb21haW4oWzAsIGQzLm1heChzYW1wbGVzLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnZhbHVl
c1sxXTsgfSldKTsKLQotICAgIHZhciB4QXhpcyA9IGQzLnN2Zy5heGlzKCkKLSAgICAgICAgICAg
IC5zY2FsZSh4KQotICAgICAgICAgICAgLm9yaWVudCgiYm90dG9tIik7Ci0KLSAgICB2YXIgeUF4
aXNMZWZ0ID0gZDMuc3ZnLmF4aXMoKQotICAgICAgICAgICAgLnNjYWxlKHlMZWZ0KQotICAgICAg
ICAgICAgLm9yaWVudCgibGVmdCIpOwotCi0gICAgdmFyIHlBeGlzUmlnaHQgPSBkMy5zdmcuYXhp
cygpCi0gICAgICAgICAgICAuc2NhbGUoeVJpZ2h0KQotICAgICAgICAgICAgLm9yaWVudCgicmln
aHQiKTsKLQotICAgIHZhciBsaW5lTGVmdCA9IGQzLnN2Zy5saW5lKCkKLSAgICAgICAgICAgIC54
KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHgoZC50aW1lT2Zmc2V0KTsgfSkKLSAgICAgICAgICAgIC55
KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHlMZWZ0KGQudmFsdWVzWzBdKTsgfSk7Ci0KLSAgICB2YXIg
bGluZVJpZ2h0ID0gZDMuc3ZnLmxpbmUoKQotICAgICAgICAgICAgLngoZnVuY3Rpb24oZCkgeyBy
ZXR1cm4geChkLnRpbWVPZmZzZXQpOyB9KQotICAgICAgICAgICAgLnkoZnVuY3Rpb24oZCkgeyBy
ZXR1cm4geVJpZ2h0KGQudmFsdWVzWzFdKTsgfSk7Ci0KLSAgICBzYW1wbGVzLmZvckVhY2goZnVu
Y3Rpb24oZCkgewotICAgICAgICBkLnRpbWVPZmZzZXQgPSArZC50aW1lT2Zmc2V0OwotICAgICAg
ICBkLnZhbHVlc1swXSA9ICtkLnZhbHVlc1swXTsKLSAgICAgICAgZC52YWx1ZXNbMV0gPSArZC52
YWx1ZXNbMV07ICAgICAgICAKLSAgICB9KTsgICAgCi0KLSAgICB2YXIgc2FtcGxlZFNhbXBsZXMg
PSBzYW1wbGVzLmZpbHRlcihmdW5jdGlvbihkKSB7Ci0gICAgICAgIHJldHVybiBkLnRpbWVPZmZz
ZXQgPj0gc2FtcGxpbmdUaW1lT2Zmc2V0OwotICAgIH0pOwotICAgIAotICAgIHZhciBtZWFuTGVm
dCA9IGQzLm1lYW4oc2FtcGxlZFNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsKLSAgICAgICAgcmV0dXJu
ICtkLnZhbHVlc1swXTsKLSAgICB9KTsKLQotICAgIHZhciBtZWFuUmlnaHQgPSBkMy5tZWFuKHNh
bXBsZWRTYW1wbGVzLCBmdW5jdGlvbihkKSB7Ci0gICAgICAgIHJldHVybiArZC52YWx1ZXNbMV07
Ci0gICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgdmFyIHN2ZyA9IGQz
LnNlbGVjdChzZWxlY3RvcikuYXBwZW5kKCJzdmciKQotICAgICAgICAuYXR0cigid2lkdGgiLCBz
aXplLndpZHRoICsgbWFyZ2lucy5sZWZ0ICsgbWFyZ2lucy5yaWdodCkKLSAgICAgICAgLmF0dHIo
ImhlaWdodCIsIHNpemUuaGVpZ2h0ICsgbWFyZ2lucy50b3AgKyBtYXJnaW5zLmJvdHRvbSkKLSAg
ICAgICAgLmFwcGVuZCgiZyIpCi0gICAgICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5z
bGF0ZSgiICsgbWFyZ2lucy5sZWZ0ICsgIiwiICsgbWFyZ2lucy50b3AgKyAiKSIpOwotCi0gICAg
Ly8geC1heGlzCi0gICAgc3ZnLmFwcGVuZCgiZyIpCi0gICAgICAgIC5hdHRyKCJjbGFzcyIsICJ4
IGF4aXMiKQotICAgICAgICAuYXR0cigiZmlsbCIsICJyZ2IoMjM1LCAyMzUsIDIzNSkiKQotICAg
ICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgwLCIgKyBzaXplLmhlaWdodCArICIp
IikKLSAgICAgICAgLmNhbGwoeEF4aXMpCi0gICAgICAgIC5hcHBlbmQoInRleHQiKQotICAgICAg
ICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKLSAgICAgICAgICAgIC5hdHRyKCJ4Iiwgc2l6
ZS53aWR0aCkKLSAgICAgICAgICAgIC5hdHRyKCJ5IiwgLTYpCi0gICAgICAgICAgICAuYXR0cigi
ZmlsbCIsICJyZ2IoMjM1LCAyMzUsIDIzNSkiKQotICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFu
Y2hvciIsICJlbmQiKQotICAgICAgICAgICAgLnRleHQoInRpbWUiKTsKLSAgICAgICAgICAgICAg
ICAgCi0gICAgLy8geUxlZnQtYXhpcwotICAgIHN2Zy5hcHBlbmQoImciKQotICAgICAgICAuYXR0
cigiY2xhc3MiLCAieSBheGlzIikKLSAgICAgICAgLmF0dHIoImZpbGwiLCAiIzdBREQ0OSIpCi0g
ICAgICAgIC5jYWxsKHlBeGlzTGVmdCkKLSAgICAgICAgLmFwcGVuZCgidGV4dCIpCi0gICAgICAg
ICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQotICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9y
bSIsICJyb3RhdGUoLTkwKSIpCi0gICAgICAgICAgICAuYXR0cigieSIsIDYpCi0gICAgICAgICAg
ICAuYXR0cigiZmlsbCIsICIjN0FERDQ5IikKLSAgICAgICAgICAgIC5hdHRyKCJkeSIsICIuNzFl
bSIpCi0gICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCi0gICAgICAgICAg
ICAudGV4dChheGVzWzBdKTsKLQotICAgIC8vIHlSaWdodC1heGlzCi0gICAgc3ZnLmFwcGVuZCgi
ZyIpCi0gICAgICAgIC5hdHRyKCJjbGFzcyIsICJ5IGF4aXMiKQotICAgICAgICAuYXR0cigiZmls
bCIsICIjRkE0OTI1IikKLSAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiAr
IHNpemUud2lkdGggKyAiLCAwKSIpCi0gICAgICAgIC5jYWxsKHlBeGlzUmlnaHQpCi0gICAgICAg
IC5hcHBlbmQoInRleHQiKQotICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKLSAg
ICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAicm90YXRlKC05MCkiKQotICAgICAgICAgICAg
LmF0dHIoInkiLCA2KQotICAgICAgICAgICAgLmF0dHIoImZpbGwiLCAiI0ZBNDkyNSIpCi0gICAg
ICAgICAgICAuYXR0cigiZHkiLCAiLjcxZW0iKQotICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFu
Y2hvciIsICJlbmQiKQotICAgICAgICAgICAgLnRleHQoYXhlc1sxXSk7Ci0KLSAgICAvLyBsZWZ0
LW1lYW4KLSAgICBzdmcuYXBwZW5kKCJzdmc6bGluZSIpCi0gICAgICAgIC5hdHRyKCJ4MSIsIHgo
MCkpCi0gICAgICAgIC5hdHRyKCJ4MiIsIHNpemUud2lkdGgpCi0gICAgICAgIC5hdHRyKCJ5MSIs
IHlMZWZ0KG1lYW5MZWZ0KSkKLSAgICAgICAgLmF0dHIoInkyIiwgeUxlZnQobWVhbkxlZnQpKQot
ICAgICAgICAuYXR0cigiY2xhc3MiLCAibGVmdC1tZWFuIik7Ci0KLSAgICAvLyByaWdodC1tZWFu
Ci0gICAgc3ZnLmFwcGVuZCgic3ZnOmxpbmUiKQotICAgICAgICAuYXR0cigieDEiLCB4KDApKQot
ICAgICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKQotICAgICAgICAuYXR0cigieTEiLCB5Umln
aHQobWVhblJpZ2h0KSkKLSAgICAgICAgLmF0dHIoInkyIiwgeVJpZ2h0KG1lYW5SaWdodCkpCi0g
ICAgICAgIC5hdHRyKCJjbGFzcyIsICJyaWdodC1tZWFuIik7ICAgICAgICAKLQotICAgIC8vIHNh
bXBsaW5nVGltZU9mZnNldAotICAgIHN2Zy5hcHBlbmQoImxpbmUiKQotICAgICAgICAuYXR0cigi
eDEiLCB4KHNhbXBsaW5nVGltZU9mZnNldCkpCi0gICAgICAgIC5hdHRyKCJ4MiIsIHgoc2FtcGxp
bmdUaW1lT2Zmc2V0KSkKLSAgICAgICAgLmF0dHIoInkxIiwgeUxlZnQoMCkpCi0gICAgICAgIC5h
dHRyKCJ5MiIsIHlMZWZ0KHlBeGlzTGVmdC5zY2FsZSgpLmRvbWFpbigpWzFdKSkKLSAgICAgICAg
LmF0dHIoImNsYXNzIiwgInNhbXBsZS10aW1lIik7Ci0KLSAgICAvLyBsZWZ0LXNhbXBsZXMKLSAg
ICBzdmcuYXBwZW5kKCJwYXRoIikKLSAgICAgICAgLmRhdHVtKHNhbXBsZXMpCi0gICAgICAgIC5h
dHRyKCJjbGFzcyIsICJsZWZ0LXNhbXBsZXMiKQotICAgICAgICAuYXR0cigiZCIsIGxpbmVMZWZ0
KTsKLSAgICAgICAgCi0gICAgLy8gcmlnaHQtc2FtcGxlcwotICAgIHN2Zy5hcHBlbmQoInBhdGgi
KQotICAgICAgICAuZGF0dW0oc2FtcGxlcykKLSAgICAgICAgLmF0dHIoImNsYXNzIiwgInJpZ2h0
LXNhbXBsZXMiKQotICAgICAgICAuYXR0cigiZCIsIGxpbmVSaWdodCk7Ci19CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTg3Zjg5Li4wMDAwMDAwCi0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzCisrKyAvZGV2
L251bGwKQEAgLTEsMjU2ICswLDAgQEAKLXZhciBIZWFkZXJzID0gWwotICAgIHsKLSAgICAgICAg
dGV4dDogU3RyaW5ncy50ZXh0LnRlc3ROYW1lLAotICAgICAgICB3aWR0aDogMjcsCi0gICAgICAg
IGNoaWxkcmVuOiBbXQotICAgIH0sCi0gICAgewotICAgICAgICB0ZXh0OiBTdHJpbmdzLnRleHQu
c2NvcmUsCi0gICAgICAgIHdpZHRoOiA3LAotICAgICAgICBjaGlsZHJlbjogW10KLSAgICB9LAot
ICAgIHsKLSAgICAgICAgdGV4dDogU3RyaW5ncy50ZXh0LmV4cGVyaW1lbnRzLmNvbXBsZXhpdHks
Ci0gICAgICAgIHdpZHRoOiAyNywKLSAgICAgICAgY2hpbGRyZW46Ci0gICAgICAgIFsKLSAgICAg
ICAgICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1lYXN1cmVtZW50cy5hdmVyYWdlLCB3aWR0aDog
NywgY2hpbGRyZW46IFtdIH0sCi0gICAgICAgICAgICB7IHRleHQ6IFN0cmluZ3MudGV4dC5tZWFz
dXJlbWVudHMuY29uY2Vybiwgd2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAotICAgICAgICAgICAg
eyB0ZXh0OiBTdHJpbmdzLnRleHQubWVhc3VyZW1lbnRzLnN0ZGV2LCB3aWR0aDogNywgY2hpbGRy
ZW46IFtdIH0sCi0gICAgICAgICAgICB7IHRleHQ6IFN0cmluZ3MudGV4dC5tZWFzdXJlbWVudHMu
cGVyY2VudCwgd2lkdGg6IDYsIGNoaWxkcmVuOiBbXSB9LAotICAgICAgICBdCi0gICAgfSwKLSAg
ICB7Ci0gICAgICAgIHRleHQ6IFN0cmluZ3MudGV4dC5leHBlcmltZW50cy5mcmFtZVJhdGUsCi0g
ICAgICAgIHdpZHRoOiAyNCwKLSAgICAgICAgY2hpbGRyZW46Ci0gICAgICAgIFsKLSAgICAgICAg
ICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1lYXN1cmVtZW50cy5hdmVyYWdlLCB3aWR0aDogNiwg
Y2hpbGRyZW46IFtdIH0sCi0gICAgICAgICAgICB7IHRleHQ6IFN0cmluZ3MudGV4dC5tZWFzdXJl
bWVudHMuY29uY2Vybiwgd2lkdGg6IDYsIGNoaWxkcmVuOiBbXSB9LAotICAgICAgICAgICAgeyB0
ZXh0OiBTdHJpbmdzLnRleHQubWVhc3VyZW1lbnRzLnN0ZGV2LCB3aWR0aDogNiwgY2hpbGRyZW46
IFtdIH0sCi0gICAgICAgICAgICB7IHRleHQ6IFN0cmluZ3MudGV4dC5tZWFzdXJlbWVudHMucGVy
Y2VudCwgd2lkdGg6IDYsIGNoaWxkcmVuOiBbXSB9LAotICAgICAgICBdCi0gICAgfSwKLSAgICB7
Ci0gICAgICAgIHRleHQ6IFN0cmluZ3MudGV4dC5zYW1wbGVzLAotICAgICAgICB3aWR0aDogMTUs
Ci0gICAgICAgIGNoaWxkcmVuOgotICAgICAgICBbCi0gICAgICAgICAgICB7IHRleHQ6IFN0cmlu
Z3MudGV4dC5yZXN1bHRzLmdyYXBoLCB3aWR0aDogOCwgY2hpbGRyZW46IFtdIH0sCi0gICAgICAg
ICAgICB7IHRleHQ6IFN0cmluZ3MudGV4dC5yZXN1bHRzLmpzb24sIHdpZHRoOiA3LCBjaGlsZHJl
bjogW10gfSwKLSAgICAgICAgXQotICAgIH0KLV07Ci0KLXZhciBTdWl0ZSA9IGZ1bmN0aW9uKG5h
bWUsIHRlc3RzKSB7Ci0gICAgdGhpcy5uYW1lID0gbmFtZTsKLSAgICB0aGlzLnRlc3RzID0gdGVz
dHM7Ci19OwotU3VpdGUucHJvdG90eXBlLnByZXBhcmUgPSBmdW5jdGlvbihydW5uZXIsIGNvbnRl
bnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkKLXsKLSAgICByZXR1cm4gcnVubmVyLndhaXRGb3JF
bGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7Ci0gICAgICAgIHJldHVy
biBlbGVtZW50OwotICAgIH0pOwotfTsKLVN1aXRlLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbihj
b250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCi17
Ci0gICAgcmV0dXJuIGNvbnRlbnRXaW5kb3cucnVuQmVuY2htYXJrKHRoaXMsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Ci19OwotCi12YXIgU3VpdGVzID0gW107Ci0K
LVN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiSFRNTCBzdWl0ZSIsCi0gICAgWwotICAgICAgICB7IAot
ICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMu
aHRtbD9wYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCi0g
ICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGNpcmNsZXMiCi0gICAgICAgIH0sCi0gICAg
ICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3Nz
LXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVj
dCZjbGlwPXN0YXIiLAotICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBjbGlwcGVkIHJl
Y3RzIgotICAgICAgICB9LAotICAgICAgICB7IAotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRp
Y2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKLSAgICAgICAgICAgIG5h
bWU6ICJDU1MgYm91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKLSAgICAgICAgfSwKLSAgICAgICAg
ewotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFn
ZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jl
c291cmNlcy95aW4teWFuZy5zdmciLAotICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBT
VkcgaW1hZ2VzIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAm
cGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCi0g
ICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIFBORyBpbWFnZXMiCi0gICAgICAgIH0sCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInRleHQvbGF5ZXJpbmctdGV4dC5odG1sIiwKLSAg
ICAgICAgICAgIG5hbWU6ICJDU1MgbGF5ZXJpbmcgdGV4dCIKLSAgICAgICAgfSwKLSAgICBdCi0p
KTsKLQotU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJDYW52YXMgc3VpdGUiLAotICAgIFsKLSAgICAg
ICAgeyAKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52
YXMtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1j
aXJjbGUiLAotICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBjaXJjbGVzIgotICAg
ICAgICB9LAotICAgICAgICB7IAotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVp
Z2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKLSAgICAgICAgICAgIG5hbWU6ICJjYW52YXMg
Ym91bmNpbmcgY2xpcHBlZCByZWN0cyIKLSAgICAgICAgfSwKLSAgICAgICAgeyAKLSAgICAgICAg
ICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/
cGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFk
aWVudCIsCi0gICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNs
ZXMiCi0gICAgICAgIH0sCi0gICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1w
YXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFy
dGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCi0gICAg
ICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFNWRyBpbWFnZXMiCi0gICAgICAgIH0sCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
YW52YXMtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFn
ZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKLSAgICAgICAgICAgIG5hbWU6ICJjYW52
YXMgYm91bmNpbmcgUE5HIGltYWdlcyIKLSAgICAgICAgfSwKLSAgICBdCi0pKTsKLQotU3VpdGVz
LnB1c2gobmV3IFN1aXRlKCJTVkcgc3VpdGUiLAotICAgIFsKLSAgICAgICAgewotICAgICAgICAg
ICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9wYXJ0
aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCi0gICAgICAgICAg
ICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGNpcmNsZXMiLAotICAgICAgICB9LAotICAgICAgICB7Ci0g
ICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5o
dG1sP3BhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0
YXIiLAotICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIiwKLSAg
ICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0
PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKLSAgICAgICAgICAgIG5hbWU6ICJTVkcg
Ym91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbD9w
YXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95
aW4teWFuZy5zdmciLAotICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBTVkcgaW1hZ2Vz
IgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVI
ZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCi0gICAgICAgICAg
ICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFBORyBpbWFnZXMiCi0gICAgICAgIH0sCi0gICAgXQotKSk7
Ci0KLVN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiQmFzaWMgY2FudmFzIHBhdGggc3VpdGUiLAotICAg
IFsKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0
aHMuaHRtbD9wYXRoVHlwZT1saW5lJmxpbmVDYXA9YnV0dCIsCi0gICAgICAgICAgICBuYW1lOiAi
Q2FudmFzIGxpbmUgc2VnbWVudHMsIGJ1dHQgY2FwcyIKLSAgICAgICAgfSwKLSAgICAgICAgewot
ICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlw
ZT1saW5lJmxpbmVDYXA9cm91bmQiLAotICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHNl
Z21lbnRzLCByb3VuZCBjYXBzIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1
cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWxpbmUmbGluZUNh
cD1zcXVhcmUiLAotICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHNlZ21lbnRzLCBzcXVh
cmUgY2FwcyIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2ltcGxl
L3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1saW5lUGF0aCZsaW5lSm9pbj1iZXZl
bCIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGxpbmUgcGF0aCwgYmV2ZWwgam9pbiIKLSAg
ICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52
YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1saW5lUGF0aCZsaW5lSm9pbj1yb3VuZCIsCi0gICAgICAg
ICAgICBuYW1lOiAiQ2FudmFzIGxpbmUgcGF0aCwgcm91bmQgam9pbiIKLSAgICAgICAgfSwKLSAg
ICAgICAgewotICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRt
bD9wYXRoVHlwZT1saW5lUGF0aCZsaW5lSm9pbj1taXRlciIsCi0gICAgICAgICAgICBuYW1lOiAi
Q2FudmFzIGxpbmUgcGF0aCwgbWl0ZXIgam9pbiIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAg
ICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1s
aW5lUGF0aCZsaW5lRGFzaD0xIiwKLSAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgbGluZSBwYXRo
IHdpdGggZGFzaCBwYXR0ZXJuIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1
cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPXF1YWRyYXRpYyIs
Ci0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIHF1YWRyYXRpYyBzZWdtZW50cyIKLSAgICAgICAg
fSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0
aHMuaHRtbD9wYXRoVHlwZT1xdWFkcmF0aWNQYXRoIiwKLSAgICAgICAgICAgIG5hbWU6ICJDYW52
YXMgcXVhZHJhdGljIHBhdGgiCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVy
bDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9YmV6aWVyIiwKLSAg
ICAgICAgICAgIG5hbWU6ICJDYW52YXMgYmV6aWVyIHNlZ21lbnRzIgotICAgICAgICB9LAotICAg
ICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1s
P3BhdGhUeXBlPWJlemllclBhdGgiLAotICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBiZXppZXIg
cGF0aCIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2ltcGxlL3Np
bXBsZS1jYW52YXMtcGF0aHMuaHRtbD8mcGF0aFR5cGU9YXJjVG8iLAotICAgICAgICAgICAgbmFt
ZTogIkNhbnZhcyBhcmNUbyBzZWdtZW50cyIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAg
ICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1hcmMi
LAotICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBhcmMgc2VnbWVudHMiCi0gICAgICAgIH0sCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0
bWw/cGF0aFR5cGU9cmVjdCIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIHJlY3RzIgotICAg
ICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZh
cy1wYXRocy5odG1sP3BhdGhUeXBlPWxpbmVGaWxsIiwKLSAgICAgICAgICAgIG5hbWU6ICJDYW52
YXMgbGluZSBwYXRoLCBmaWxsIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1
cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPXF1YWRyYXRpY0Zp
bGwiLAotICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBxdWFkcmF0aWMgcGF0aCwgZmlsbCIKLSAg
ICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52
YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1iZXppZXJGaWxsIiwKLSAgICAgICAgICAgIG5hbWU6ICJD
YW52YXMgYmV6aWVyIHBhdGgsIGZpbGwiCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/JnBhdGhUeXBlPWFyY1Rv
RmlsbCIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGFyY1RvIHNlZ21lbnRzLCBmaWxsIgot
ICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNh
bnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWFyY0ZpbGwiLAotICAgICAgICAgICAgbmFtZTogIkNh
bnZhcyBhcmMgc2VnbWVudHMsIGZpbGwiCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9cmVjdEZp
bGwiLAotICAgICAgICAgICAgbmFtZTogIkNhbnZhcyByZWN0cywgZmlsbCIKLSAgICAgICAgfQot
ICAgIF0KLSkpOwotCi1TdWl0ZXMucHVzaChuZXcgU3VpdGUoIkNvbXBsZXggZXhhbXBsZXMiLAot
ICAgIFsKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAiZXhhbXBsZXMvY2FudmFzLWVsZWN0
cm9ucy5odG1sIiwKLSAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgZWxlY3Ryb25zIgotICAgICAg
ICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJleGFtcGxlcy9jYW52YXMtc3RhcnMu
aHRtbCIsCi0gICAgICAgICAgICBuYW1lOiAiY2FudmFzIHN0YXJzIgotICAgICAgICB9LAotICAg
IF0KLSkpOwotCi1TdWl0ZXMucHVzaChuZXcgU3VpdGUoIk1pc2NlbGxhbmVvdXMgVGVzdHMiLAot
ICAgIFsKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAibWlzYy9jb21wb3NpdGluZy10cmFu
c2Zvcm1zLmh0bWw/cGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZmaWx0ZXJzPXll
cyZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKLSAgICAgICAgICAgIG5hbWU6
ICJDb21wb3NpdGVkIFRyYW5zZm9ybXMiCi0gICAgICAgIH0sCi0gICAgXQotKSk7Ci0KLWZ1bmN0
aW9uIHN1aXRlRnJvbU5hbWUobmFtZSkKLXsKLSAgICByZXR1cm4gU3VpdGVzLmZpbmQoZnVuY3Rp
b24oc3VpdGUpIHsgcmV0dXJuIHN1aXRlLm5hbWUgPT0gbmFtZTsgfSk7Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RGcm9tTmFtZShzdWl0ZSwgbmFtZSkKLXsKLSAgICByZXR1cm4gc3VpdGUudGVzdHMuZmlu
ZChmdW5jdGlvbih0ZXN0KSB7IHJldHVybiB0ZXN0Lm5hbWUgPT0gbmFtZTsgfSk7Ci19CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGZhOTdiZjIuLmVkYWM0NTIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTUtMTItMTggIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAg
IFNwbGl0IGJlbmNobWFyayBpbnRvIHR3byBkaWZmZXJlbnQgcGFnZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgYmVuY2htYXJrIHJlc291cmNl
cyBvdXQgaW50byByZXNvdXJjZXMvZGVidWctcnVubmVyLCBhbmQgdXBkYXRlIFVSTHMuCisKKyAg
ICAgICAgKiBBbmltb21ldGVyL2RldmVsb3Blci5odG1sOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwuCisgICAgICAgICogQW5p
bW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzOiBSZW5hbWVkIGZy
b20gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRl
ci5jc3MuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1v
bWV0ZXIuanM6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVy
L3Jlc291cmNlcy9hbmltb21ldGVyLmpzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2Vz
L2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcy4K
KyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvZDMubWluLmpzOiBS
ZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMv
ZDMubWluLmpzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9n
cmFwaC5qczogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIv
cmVzb3VyY2VzL2dyYXBoLmpzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVn
LXJ1bm5lci90ZXN0cy5qczogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzLgorCiAyMDE1LTEyLTExICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIEFuaW1vbWV0ZXIgb24gaU9TCi0tIAoy
LjUuNCAoQXBwbGUgR2l0LTYxKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267860</attachid>
            <date>2015-12-23 15:28:08 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>2. Split tests.js into two</desc>
            <filename>0002-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>6750</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSAwMGIyNTIwZTRkNDc0MzZmZTE1ZjkyODRmMWY5YjE0NTJmMzM3NDlhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBGcmks
IDE4IERlYyAyMDE1IDIzOjA1OjU1IC0wODAwClN1YmplY3Q6IFtQQVRDSCAwMi8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpT
cGxpdCB0ZXN0cy5qcyBpbnRvIHR3by4gQWRkIGEgbmV3IHN1aXRlIHRvIHJ1bm5lci90ZXN0cy5q
cy4KCiogQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbDogVXBkYXRlIHRoZSBzY3JpcHQgb3JkZXIu
IFNjcmlwdHMgZnJvbQpkZWJ1Zy1ydW5uZXIvIHdpbGwgYWx3YXlzIGJ1aWxkIG9uIHRob3NlIGZy
b20gcnVubmVyLywgYW5kIGhhdmUgdGhlCnNhbWUgbmFtZS4KKiBBbmltb21ldGVyL3Jlc291cmNl
cy9kZWJ1Zy1ydW5uZXIvdGVzdHMuanM6IE1vdmUgImNvbXBsZXggZXhhbXBsZXMiCnN1aXRlIGlu
dG8gIm1pc2NlbGxhbmVvdXMgdGVzdHMiLgooU3VpdGUpOiBEZWxldGVkLgooU3VpdGUucHJvdG90
eXBlLnByZXBhcmUpOiBEZWxldGVkLgooU3VpdGUucHJvdG90eXBlLnJ1bik6IERlbGV0ZWQuCihz
dWl0ZUZyb21OYW1lKTogRGVsZXRlZC4KKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVz
dHMuanM6IEFkZGVkLiBUYWtlIGRlZmluaXRpb25zIGFuZApmdW5jdGlvbnMgbmVlZGVkIGJ5IHRo
ZSB0ZXN0IGhhcm5lc3MuIExlYXZlIHRoZSB0ZXN0IHN1aXRlcyBiZWhpbmQuCihTdWl0ZSk6IE1v
dmVkIGZyb20gZGVidWcgc2NyaXB0LgooU3VpdGUucHJvdG90eXBlLnByZXBhcmUpOiBEaXR0by4K
KFN1aXRlLnByb3RvdHlwZS5ydW4pOiBEaXR0by4KKHN1aXRlRnJvbU5hbWUpOiBEaXR0by4KKHRl
c3RGcm9tTmFtZSk6IERpdHRvLgotLS0KIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZl
bG9wZXIuaHRtbCAgICAgICAgIHwgIDUgKystCiAuLi4vQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVi
dWctcnVubmVyL3Rlc3RzLmpzICAgICB8IDQzICsrKystLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9B
bmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMgICAgICAgICAgIHwgMzEgKysrKysr
KysrKysrKysrKwogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAyNiArKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMo
KyksIDM3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzCgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL2RldmVsb3Blci5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL2RldmVsb3Blci5odG1sCmluZGV4IGY0NWY0ODQuLmIzMWYyNzAgMTAwNjQ0Ci0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWwKQEAgLTYsOSArNiwxMiBAQAog
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy9ydW5uZXIvdGVzdHMuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZGVidWctcnVubmVyL3Rlc3RzLmpzIj48L3NjcmlwdD4KKwogICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1v
bWV0ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVidWctcnVu
bmVyL2QzLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWJ1
Zy1ydW5uZXIvZ3JhcGguanMiPjwvc2NyaXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvdGVzdHMuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5q
cwppbmRleCBlOTg3Zjg5Li44ZTZlMTJkIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qcworKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qcwpAQCAtNDIs
MjIgKzQyLDggQEAgdmFyIEhlYWRlcnMgPSBbCiAgICAgfQogXTsKIAotdmFyIFN1aXRlID0gZnVu
Y3Rpb24obmFtZSwgdGVzdHMpIHsKLSAgICB0aGlzLm5hbWUgPSBuYW1lOwotICAgIHRoaXMudGVz
dHMgPSB0ZXN0czsKLX07Ci1TdWl0ZS5wcm90b3R5cGUucHJlcGFyZSA9IGZ1bmN0aW9uKHJ1bm5l
ciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KQotewotICAgIHJldHVybiBydW5uZXIu
d2FpdEZvckVsZW1lbnQoIiNzdGFnZSIpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKLSAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfSk7Ci19OwotU3VpdGUucHJvdG90eXBlLnJ1biA9IGZ1
bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikKLXsKLSAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKLX07Ci0KLXZhciBTdWl0ZXMg
PSBbXTsKKy8vLy8vLy8vLy8vCisvLyBTdWl0ZXMKIAogU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJI
VE1MIHN1aXRlIiwKICAgICBbCkBAIC0yMjMsOSArMjA5LDEzIEBAIFN1aXRlcy5wdXNoKG5ldyBT
dWl0ZSgiQmFzaWMgY2FudmFzIHBhdGggc3VpdGUiLAogICAgIF0KICkpOwogCi1TdWl0ZXMucHVz
aChuZXcgU3VpdGUoIkNvbXBsZXggZXhhbXBsZXMiLAorU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJN
aXNjZWxsYW5lb3VzIFRlc3RzIiwKICAgICBbCiAgICAgICAgIHsKKyAgICAgICAgICAgIHVybDog
Im1pc2MvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5odG1sP3BhcnRpY2xlV2lkdGg9NTAmcGFydGlj
bGVIZWlnaHQ9NTAmZmlsdGVycz15ZXMmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2
ZyIsCisgICAgICAgICAgICBuYW1lOiAiQ29tcG9zaXRlZCBUcmFuc2Zvcm1zIgorICAgICAgICB9
LAorICAgICAgICB7CiAgICAgICAgICAgICB1cmw6ICJleGFtcGxlcy9jYW52YXMtZWxlY3Ryb25z
Lmh0bWwiLAogICAgICAgICAgICAgbmFtZTogImNhbnZhcyBlbGVjdHJvbnMiCiAgICAgICAgIH0s
CkBAIC0yMzUsMjIgKzIyNSwzIEBAIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiQ29tcGxleCBleGFt
cGxlcyIsCiAgICAgICAgIH0sCiAgICAgXQogKSk7Ci0KLVN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgi
TWlzY2VsbGFuZW91cyBUZXN0cyIsCi0gICAgWwotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6
ICJtaXNjL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRp
Y2xlSGVpZ2h0PTUwJmZpbHRlcnM9eWVzJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5z
dmciLAotICAgICAgICAgICAgbmFtZTogIkNvbXBvc2l0ZWQgVHJhbnNmb3JtcyIKLSAgICAgICAg
fSwKLSAgICBdCi0pKTsKLQotZnVuY3Rpb24gc3VpdGVGcm9tTmFtZShuYW1lKQotewotICAgIHJl
dHVybiBTdWl0ZXMuZmluZChmdW5jdGlvbihzdWl0ZSkgeyByZXR1cm4gc3VpdGUubmFtZSA9PSBu
YW1lOyB9KTsKLX0KLQotZnVuY3Rpb24gdGVzdEZyb21OYW1lKHN1aXRlLCBuYW1lKQotewotICAg
IHJldHVybiBzdWl0ZS50ZXN0cy5maW5kKGZ1bmN0aW9uKHRlc3QpIHsgcmV0dXJuIHRlc3QubmFt
ZSA9PSBuYW1lOyB9KTsKLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYTBhYWM5NAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzCkBAIC0wLDAgKzEsMzEgQEAKK3ZhciBTdWl0
ZSA9IGZ1bmN0aW9uKG5hbWUsIHRlc3RzKSB7CisgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICB0
aGlzLnRlc3RzID0gdGVzdHM7Cit9OworU3VpdGUucHJvdG90eXBlLnByZXBhcmUgPSBmdW5jdGlv
bihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkKK3sKKyAgICByZXR1cm4g
cnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7
CisgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0pOworfTsKK1N1aXRlLnByb3RvdHlwZS5y
dW4gPSBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJuIGNvbnRlbnRXaW5kb3cucnVuQmVuY2htYXJrKHRo
aXMsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9OworCit2YXIg
U3VpdGVzID0gW107CisKK1N1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiQW5pbW9tZXRlciIsCisgICAg
WworICAgIF0KKykpOworCitmdW5jdGlvbiBzdWl0ZUZyb21OYW1lKG5hbWUpCit7CisgICAgcmV0
dXJuIFN1aXRlcy5maW5kKGZ1bmN0aW9uKHN1aXRlKSB7IHJldHVybiBzdWl0ZS5uYW1lID09IG5h
bWU7IH0pOworfQorCitmdW5jdGlvbiB0ZXN0RnJvbU5hbWUoc3VpdGUsIG5hbWUpCit7CisgICAg
cmV0dXJuIHN1aXRlLnRlc3RzLmZpbmQoZnVuY3Rpb24odGVzdCkgeyByZXR1cm4gdGVzdC5uYW1l
ID09IG5hbWU7IH0pOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cg
Yi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCBlZGFjNDUyLi40Y2U2ZTJiIDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwpAQCAtNSw2ICs1LDMyIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCiAKKyAgICAgICAgU3BsaXQgdGVzdHMuanMgaW50byB0d28uIEFkZCBhIG5ldyBz
dWl0ZSB0byBydW5uZXIvdGVzdHMuanMuCisKKyAgICAgICAgKiBBbmltb21ldGVyL2RldmVsb3Bl
ci5odG1sOiBVcGRhdGUgdGhlIHNjcmlwdCBvcmRlci4gU2NyaXB0cyBmcm9tCisgICAgICAgIGRl
YnVnLXJ1bm5lci8gd2lsbCBhbHdheXMgYnVpbGQgb24gdGhvc2UgZnJvbSBydW5uZXIvLCBhbmQg
aGF2ZSB0aGUKKyAgICAgICAgc2FtZSBuYW1lLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qczogTW92ZSAiY29tcGxleCBleGFtcGxlcyIKKyAgICAg
ICAgc3VpdGUgaW50byAibWlzY2VsbGFuZW91cyB0ZXN0cyIuCisgICAgICAgIChTdWl0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChTdWl0ZS5wcm90b3R5cGUucHJlcGFyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChTdWl0ZS5wcm90b3R5cGUucnVuKTogRGVsZXRlZC4KKyAgICAgICAgKHN1aXRlRnJvbU5h
bWUpOiBEZWxldGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci90ZXN0
cy5qczogQWRkZWQuIFRha2UgZGVmaW5pdGlvbnMgYW5kCisgICAgICAgIGZ1bmN0aW9ucyBuZWVk
ZWQgYnkgdGhlIHRlc3QgaGFybmVzcy4gTGVhdmUgdGhlIHRlc3Qgc3VpdGVzIGJlaGluZC4KKyAg
ICAgICAgKFN1aXRlKTogTW92ZWQgZnJvbSBkZWJ1ZyBzY3JpcHQuCisgICAgICAgIChTdWl0ZS5w
cm90b3R5cGUucHJlcGFyZSk6IERpdHRvLgorICAgICAgICAoU3VpdGUucHJvdG90eXBlLnJ1bik6
IERpdHRvLgorICAgICAgICAoc3VpdGVGcm9tTmFtZSk6IERpdHRvLgorICAgICAgICAodGVzdEZy
b21OYW1lKTogRGl0dG8uCisKKzIwMTUtMTItMTggIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29t
PgorCisgICAgICAgIFNwbGl0IGJlbmNobWFyayBpbnRvIHR3byBkaWZmZXJlbnQgcGFnZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIE1vdmUgYmVuY2ht
YXJrIHJlc291cmNlcyBvdXQgaW50byByZXNvdXJjZXMvZGVidWctcnVubmVyLCBhbmQgdXBkYXRl
IFVSTHMuCiAKICAgICAgICAgKiBBbmltb21ldGVyL2RldmVsb3Blci5odG1sOiBSZW5hbWVkIGZy
b20gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwuCi0t
IAoyLjUuNCAoQXBwbGUgR2l0LTYxKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267861</attachid>
            <date>2015-12-23 15:28:38 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>3. Get rid of utilities.js</desc>
            <filename>0003-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>17336</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBlMmY4NGJlZjRkZWFiYThlZjAxYjcwNjk1MjUyZmEzMDg5NmY4NjlhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBGcmks
IDE4IERlYyAyMDE1IDIzOjA4OjI1IC0wODAwClN1YmplY3Q6IFtQQVRDSCAwMy8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpH
ZXQgcmlkIG9mIHV0aWxpdGllcy5qcy4gTW92ZSBpdCBhbGwgaW50byBleHRlbnNpb25zLmpzLgoK
KiBBbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgoqIEFuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL3V0aWxpdGllcy5qczogUmVtb3ZlZC4KCiogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sOiBSZW1vdmUgc2NyaXB0
IGxpbmsuCiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2Fu
dmFzLXNoYXBlcy5odG1sOiBEaXR0by4KKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw6IERpdHRvLgoqIEFuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbDogRGl0dG8uCiogQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1s
OiBEaXR0by4KKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1z
dmctc2hhcGVzLmh0bWw6IERpdHRvLgoqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFz
LWVsZWN0cm9ucy5odG1sOiBEaXR0by4KKiBBbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZh
cy1zdGFycy5odG1sOiBEaXR0by4KKiBBbmltb21ldGVyL3Rlc3RzL21pc2MvY29tcG9zaXRpbmct
dHJhbnNmb3Jtcy5odG1sOiBEaXR0by4KKiBBbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9zaW1wbGUt
Y2FudmFzLXBhdGhzLmh0bWw6IERpdHRvLgoqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVt
cGxhdGUtY2FudmFzLmh0bWw6IERpdHRvLgoqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVt
cGxhdGUtY3NzLmh0bWw6IERpdHRvLgoqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxh
dGUtc3ZnLmh0bWw6IERpdHRvLgoqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0
Lmh0bWw6IERpdHRvLgotLS0KIC4uLi9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpz
ICAgICAgICAgICAgIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKwogLi4uL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwgfCAgMSAtCiAuLi4vYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbCB8ICAxIC0KIC4uLi9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sICAgIHwgIDEgLQogLi4uL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWwgICAgfCAgMSAtCiAuLi4vYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbCAgICB8ICAxIC0KIC4uLi9i
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sICAgIHwgIDEgLQogLi4u
L3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbCAgICAgICAgICAgfCAgMSAtCiAu
Li4vQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbCAgICB8ICAxIC0K
IC4uLi90ZXN0cy9taXNjL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuaHRtbCAgICAgICAgIHwgIDEg
LQogLi4uL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5qcyAgICAgICAgfCA0
MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vdGVzdHMvc2ltcGxlL3NpbXBsZS1jYW52YXMt
cGF0aHMuaHRtbCAgICAgICAgICB8ICAxIC0KIC4uLi9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRl
L3RlbXBsYXRlLWNhbnZhcy5odG1sIHwgIDEgLQogLi4uL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxh
dGUvdGVtcGxhdGUtY3NzLmh0bWwgICAgfCAgMSAtCiAuLi4vQW5pbW9tZXRlci90ZXN0cy90ZW1w
bGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbCAgICB8ICAxIC0KIC4uLi9Bbmltb21ldGVyL3Rlc3RzL3Rl
eHQvbGF5ZXJpbmctdGV4dC5odG1sICAgICAgIHwgIDEgLQogUGVyZm9ybWFuY2VUZXN0cy9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNyArKysrKysrKysrKysrKwogMTcgZmls
ZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9k
ZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGls
aXRpZXMuanMKCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2V4dGVuc2lvbnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2Vz
L2V4dGVuc2lvbnMuanMKaW5kZXggNTY2ZGM4ZC4uNmNmZDRhZSAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcwpAQCAtNDcxLDMg
KzQ3MSw0NiBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICB9CiB9CiAKK3dpbmRvdy5V
dGlsaXRpZXMgPQoreworICAgIF9wYXJzZTogZnVuY3Rpb24oc3RyLCBzZXApCisgICAgeworICAg
ICAgICB2YXIgb3V0cHV0ID0ge307CisgICAgICAgIHN0ci5zcGxpdChzZXApLmZvckVhY2goZnVu
Y3Rpb24ocGFydCkgeworICAgICAgICAgICAgdmFyIGl0ZW0gPSBwYXJ0LnNwbGl0KCI9Iik7Cisg
ICAgICAgICAgICB2YXIgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoaXRlbVsxXSk7CisgICAg
ICAgICAgICBpZiAodmFsdWVbMF0gPT0gIiciICkKKyAgICAgICAgICAgICAgICBvdXRwdXRbaXRl
bVswXV0gPSB2YWx1ZS5zdWJzdHIoMSwgdmFsdWUubGVuZ3RoIC0gMik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgb3V0cHV0W2l0ZW1bMF1dID0gdmFsdWU7CisgICAgICAgICAg
fSk7CisgICAgICAgIHJldHVybiBvdXRwdXQ7CisgICAgfSwKKworICAgIHBhcnNlUGFyYW1ldGVy
czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlKHdpbmRvdy5s
b2NhdGlvbi5zZWFyY2guc3Vic3RyKDEpLCAiJiIpOworICAgIH0sCisKKyAgICBwYXJzZUFyZ3Vt
ZW50czogZnVuY3Rpb24oc3RyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlKHN0
ciwgIiAiKTsKKyAgICB9LAorCisgICAgZXh0ZW5kT2JqZWN0OiBmdW5jdGlvbihvYmoxLCBvYmoy
KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gb2JqMikKKyAgICAgICAgICAg
IG9iajFbYXR0cm5hbWVdID0gb2JqMlthdHRybmFtZV07CisgICAgICAgIHJldHVybiBvYmoxOwor
ICAgIH0sCisKKyAgICBjb3B5T2JqZWN0OiBmdW5jdGlvbihvYmopCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5leHRlbmRPYmplY3Qoe30sIG9iaik7CisgICAgfSwKKworICAgIG1lcmdlT2Jq
ZWN0czogZnVuY3Rpb24ob2JqMSwgb2JqMikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmV4
dGVuZE9iamVjdCh0aGlzLmNvcHlPYmplY3Qob2JqMSksIG9iajIpOworICAgIH0KK30KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwK
aW5kZXggNDViYWY0ZC4uYWQ4MDZkYiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0
bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwKQEAgLTEzLDcgKzEzLDYgQEAKICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAogICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKICAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5n
LWNhbnZhcy1zaGFwZXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sCmluZGV4IDcyNTU4
NzMuLmQxZDdjMDYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLXNoYXBlcy5odG1sCkBAIC03LDcgKzcsNiBAQAogICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3N0YWdlLmpzIj48L3NjcmlwdD4gIAogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNp
bmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5o
dG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWwKaW5kZXggZGZiNWJhNi4uOTYxYmNmYyAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWwKQEAg
LTEyLDcgKzEyLDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9u
cy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9z
Y3JpcHQ+ICAgIAogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAK
ICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5o
dG1sCmluZGV4IDBjZmM2ZmEuLjRlYWIxYzIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5o
dG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sCkBAIC0yMyw3ICsyMyw2IEBACiAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKICAgICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCiAgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1z
dmctaW1hZ2VzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbAppbmRleCA1YThjZTQzLi41MmRj
MTU1IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFn
ZXMuaHRtbApAQCAtNyw3ICs3LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
ZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9t
YXRoLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+ICAgIAogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9z
Y3JpcHQ+ICAKICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5q
cyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbCBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3Zn
LXNoYXBlcy5odG1sCmluZGV4IDU1YjhlZGIuLmQ1NzliNzEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3Zn
LXNoYXBlcy5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sCkBAIC03LDcgKzcsNiBAQAog
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCiAgICAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAogICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ry
b25zLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2Fu
dmFzLWVsZWN0cm9ucy5odG1sCmluZGV4IGNjODc4OTEuLjA5MDk3MzIgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25z
Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2Nh
bnZhcy1lbGVjdHJvbnMuaHRtbApAQCAtNyw3ICs3LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
dGFnZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYW52YXMtZWxl
Y3Ryb25zLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbAppbmRleCAzODI3NDhh
Li41MmFkOGY4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
ZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sCkBAIC03LDcgKzcsNiBAQAogICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCiAgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2NhbnZhcy1zdGFycy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jb21wb3NpdGluZy10cmFu
c2Zvcm1zLmh0bWwKaW5kZXggZDBmZmY1Mi4uZGViZjU4MiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5odG1s
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL2NvbXBvc2l0aW5n
LXRyYW5zZm9ybXMuaHRtbApAQCAtMTQsNyArMTQsNiBAQAogICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0
YWdlLmpzIj48L3NjcmlwdD4gIAogICAgIDxzY3JpcHQgc3JjPSIuLi9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVz
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmM3NjQ5Li4wMDAwMDAwCi0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotd2luZG93LlV0aWxpdGllcyA9Ci17Ci0g
ICAgX3BhcnNlOiBmdW5jdGlvbihzdHIsIHNlcCkKLSAgICB7Ci0gICAgICAgIHZhciBvdXRwdXQg
PSB7fTsKLSAgICAgICAgc3RyLnNwbGl0KHNlcCkuZm9yRWFjaChmdW5jdGlvbihwYXJ0KSB7Ci0g
ICAgICAgICAgICB2YXIgaXRlbSA9IHBhcnQuc3BsaXQoIj0iKTsKLSAgICAgICAgICAgIHZhciB2
YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChpdGVtWzFdKTsKLSAgICAgICAgICAgIGlmICh2YWx1
ZVswXSA9PSAiJyIgKQotICAgICAgICAgICAgICAgIG91dHB1dFtpdGVtWzBdXSA9IHZhbHVlLnN1
YnN0cigxLCB2YWx1ZS5sZW5ndGggLSAyKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBvdXRwdXRbaXRlbVswXV0gPSB2YWx1ZTsgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
fSk7Ci0gICAgICAgIHJldHVybiBvdXRwdXQ7Ci0gICAgfSwKLSAgICAKLSAgICBwYXJzZVBhcmFt
ZXRlcnM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9wYXJzZSh3aW5k
b3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKSwgIiYiKTsKLSAgICB9LAotICAgIAotICAgIHBh
cnNlQXJndW1lbnRzOiBmdW5jdGlvbihzdHIpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
cGFyc2Uoc3RyLCAiICIpOwotICAgIH0sCi0gICAgCi0gICAgZXh0ZW5kT2JqZWN0OiBmdW5jdGlv
bihvYmoxLCBvYmoyKQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gb2JqMikK
LSAgICAgICAgICAgIG9iajFbYXR0cm5hbWVdID0gb2JqMlthdHRybmFtZV07Ci0gICAgICAgIHJl
dHVybiBvYmoxOwotICAgIH0sCi0gICAgCi0gICAgY29weU9iamVjdDogZnVuY3Rpb24ob2JqKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kT2JqZWN0KHt9LCBvYmopOwotICAgIH0s
Ci0gICAgCi0gICAgbWVyZ2VPYmplY3RzOiBmdW5jdGlvbihvYmoxLCBvYmoyKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kT2JqZWN0KHRoaXMuY29weU9iamVjdChvYmoxKSwgb2Jq
Mik7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3NpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbAppbmRleCA2NGQ3
MTA5Li4wZDU5N2ZiIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvc2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbApAQCAtNyw3
ICs3LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNhbnZh
cy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBs
YXRlLWNhbnZhcy5odG1sCmluZGV4IDZjZTVkYWIuLmMxN2Q3ZjkgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRt
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxh
dGUtY2FudmFzLmh0bWwKQEAgLTcsNyArNyw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91
dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L21haW4uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2Uu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFz
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbAppbmRleCAyYWE4MGRiLi4xYjli
MGZiIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxh
dGUvdGVtcGxhdGUtY3NzLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sCkBAIC03LDcgKzcsNiBAQAogICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCiAgICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3RlbXBsYXRlLWNzcy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwKaW5kZXgg
YjljOGZjZS4uYTgxZjgwOCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbApAQCAtNyw3ICs3LDYg
QEAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAog
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1s
CmluZGV4IGQ1MWYzMDMuLjMyZGEyYWMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWwKQEAgLTI0LDcgKzI0
LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAg
IAogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKICAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0Y2U2ZTJiLi43MTFhMTkzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0No
YW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDMzIEBA
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgR2V0IHJp
ZCBvZiB1dGlsaXRpZXMuanMuIE1vdmUgaXQgYWxsIGludG8gZXh0ZW5zaW9ucy5qcy4KKworICAg
ICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanM6CisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzOiBSZW1vdmVkLgorCisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWlt
YWdlcy5odG1sOiBSZW1vdmUgc2NyaXB0IGxpbmsuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sOiBEaXR0by4K
KyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
c3MtaW1hZ2VzLmh0bWw6IERpdHRvLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbDogRGl0dG8uCisgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5o
dG1sOiBEaXR0by4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw6IERpdHRvLgorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sOiBEaXR0by4KKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL21pc2MvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5odG1sOiBE
aXR0by4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9zaW1wbGUtY2FudmFzLXBh
dGhzLmh0bWw6IERpdHRvLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVt
cGxhdGUtY2FudmFzLmh0bWw6IERpdHRvLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVt
cGxhdGUvdGVtcGxhdGUtY3NzLmh0bWw6IERpdHRvLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWw6IERpdHRvLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWw6IERpdHRvLgorCisyMDE1LTEyLTE4ICBK
b24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBiZW5jaG1hcmsgaW50
byB0d28gZGlmZmVyZW50IHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTI0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKwogICAgICAgICBTcGxpdCB0ZXN0cy5qcyBpbnRvIHR3by4gQWRkIGEgbmV3IHN1aXRlIHRv
IHJ1bm5lci90ZXN0cy5qcy4KIAogICAgICAgICAqIEFuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWw6
IFVwZGF0ZSB0aGUgc2NyaXB0IG9yZGVyLiBTY3JpcHRzIGZyb20KLS0gCjIuNS40IChBcHBsZSBH
aXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267862</attachid>
            <date>2015-12-23 15:29:09 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>4. Add newer version of harness</desc>
            <filename>0004-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>32012</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBhMzhiZTM4NDQ3NThlYmY2NGZiOWUyNTA1Y2ZiOTEzZjE2YjBhYzk3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTYXQs
IDE5IERlYyAyMDE1IDAwOjIzOjA4IC0wODAwClN1YmplY3Q6IFtQQVRDSCAwNC8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpB
ZGQgbmV3ZXIgdmVyc2lvbiBvZiBoYXJuZXNzIGluIGEgbmV3IHBhZ2UuIENvbnNvbGlkYXRlIGRp
ZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3bwpwYWdlcy4KCiogQW5pbW9tZXRlci9kZXZlbG9wZXIu
aHRtbDogSW5jbHVkZSBydW5uZXIvYW5pbW9tZXRlci5qcy4gUmVuYW1lIHRoZSBKUyBmdW5jdGlv
bgp0byBydW4gdGhlIGJlbmNobWFyayB0byBzdGFydEJlbmNobWFyaygpIGluc3RlYWQgb2Ygc3Rh
cnRUZXN0KCkuIFJlbmFtZSAjcnVubmluZyB0bwoqIEFuaW1vbWV0ZXIvaW5kZXguaHRtbDogQWRk
ZWQuIFNpbWlsYXJseSBjYWxscyBzdGFydEJlbmNobWFyaygpIGFuZCBoYXMgI3Rlc3QtY29udGFp
bmVyLgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzczog
TWFrZSB0aGUgY2FudmFzIDI6MSAoMTIwMHB4IHggODAwcHgpCmluc3RlYWQgb2YgNDozLgoKU3Bs
aXQgb3V0IGJlbmNobWFya1J1bm5lckNsaWVudCBhbmQgYmVuY2htYXJrQ29udHJvbGxlci4KCiog
QW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanM6IE1vdmUgbmVl
ZGVkIGZ1bmN0aW9ucyBvdXQgb2YKYmVuY2htYXJrUnVubmVyQ2xpZW50LCBhbmQgbGVhdmUgdGhl
IHJlc3QgaGVyZSB0byBleHRlbmQgdGhhdCBvYmplY3QuIEdldCByaWQgb2YgX3Jlc3VsdHNUYWJs
ZQphbmQgbW92ZSBwb3B1bGF0aW5nIHRoZSByZXN1bHRzIHRhYmxlIGludG8gYmVuY2htYXJrQ29u
dHJvbGxlci4gUmVuYW1lIF9yZXN1bHRzRGFzaGJvYXJkCnRvIHJlc3VsdHMgYW5kIG1ha2UgaXQg
YWNjZXNzaWJsZSBmb3Igb3RoZXIgb2JqZWN0cyB0byB1c2UuCih3aWxsQWRkVGVzdEZyYW1lKTog
VGhpcyBpcyB1bm5lY2Vzc2FyeS4gUmVtb3ZlLgoKKHdpbmRvdy5zZWN0aW9uc01hbmFnZXIuc2hv
d1Njb3JlKTogR3JhYiBpdCBmcm9tIHRoZSByZXN1bHRzIG9iamVjdCBpbnN0ZWFkIG9mCmJlbmNo
bWFya1J1bm5lckNsaWVudC4KKHdpbmRvdy5zZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24pOiBE
ZWxldGVkLiBNb3ZlZCB0byBydW5uZXIvYW5pbW9tZXRlci5qcy4KCih3aW5kb3cuYmVuY2htYXJr
Q29udHJvbGxlci5fcnVuQmVuY2htYXJrKTogRGVsZXRlZC4gTW9zdGx5IG1vdmVkIGludG8gX3N0
YXJ0QmVuY2htYXJrLgood2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRCZW5jaG1hcmsp
OiBSZWZhY3RvciB0byBjYWxsIF9zdGFydEJlbmNobWFyay4KKHdpbmRvdy5iZW5jaG1hcmtDb250
cm9sbGVyLnNob3dSZXN1bHRzKTogSW5jbHVkZSBtb3N0IG9mIGJlbmNobWFya1J1bm5lckNsaWVu
dC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKCkKaGVyZS4KCiogQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanM6CihCZW5jaG1hcmtSdW5uZXIucHJvdG90
eXBlLl9hcHBlbmRGcmFtZSk6IFJlbW92ZSB1bm5lZWRlZCBjYWxsIHRvIHdpbGxBZGRUZXN0RnJh
bWUuCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qczoKKFJlc3VsdHNEYXNoYm9h
cmQpOiBDaGFuZ2UgdGhlIGNsYXNzIHRvIHByb2Nlc3MgdGhlIHNhbXBsZXIgZGF0YSBvbi1kZW1h
bmQgYW5kIGhvbGQgb250byB0aGF0IGRhdGEKZm9yIGxhdGVyIHJlZmVyZW5jaW5nLgooUmVzdWx0
c0Rhc2hib2FyZC5wcm90b3R5cGUudG9KU09OKTogRGVsZXRlZC4KKFJlc3VsdHNEYXNoYm9hcmQu
cHJvdG90eXBlLl9wcm9jZXNzRGF0YSk6IFJlbmFtZSB0b0pTT04gdG8gX3Byb2Nlc3NEYXRhIHNp
bmNlIGl0J3Mgbm90IHJlYWxseQpvdXRwdXR0aW5nIEpTT04uIFN0b3JlIHRoZSBwcm9jZXNzZWQg
ZGF0YSBpbnRvIGEgbWVtYmVyIHZhcmlhYmxlIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWQgbGF0ZXIu
CihSZXN1bHRzRGFzaGJvYXJkLnByb3RvdHlwZS5nZXQgZGF0YSk6IFByb2Nlc3MgdGhlIGRhdGEg
aWYgaXQgaGFzbid0IGFscmVhZHkuCihSZXN1bHRzRGFzaGJvYXJkLnByb3RvdHlwZS5nZXQgc2Nv
cmUpOiBQcm9jZXNzIHRoZSBkYXRhIGlmIGl0IGhhc24ndCBhbHJlYWR5LCB0aGVuIHJldHVybiB0
aGUKYWdncmVnYXRlIHNjb3JlLgooUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5fc2hvd0hlYWRlcik6
IFdoZW4gb3V0cHV0dGluZyB0aGUgcmVzdWx0cyB0byBhIHRhYmxlLCBkb24ndCBmb3JjZSB0aGUK
bmVlZCBmb3IgYW4gZW1wdHkgY2hpbGRyZW4gYXJyYXkuIFRoaXMgd2FzIHRvIGFsbG93IGZvciBh
IGhlYWRlciByb3cgaW4gdGhlIHRhYmxlIHRoYXQgc3Bhbm5lZAptdWx0aXBsZSBjb2x1bW5zLiBJ
biB0aGUgc2ltcGxlciBoYXJuZXNzLCB0aGlzIGlzIG5vdCBuZWVkZWQuCihSZXN1bHRzVGFibGUu
cHJvdG90eXBlLl9zaG93RW1wdHlDZWxscyk6CihSZXN1bHRzVGFibGUucHJvdG90eXBlLl9zaG93
VGVzdCk6IFRoaXMgaGFyZGNvZGVkIHRoZSBjb2x1bW5zLiBBdCBsZWFzdCBmb3IgdGhlIG5hbWUg
YW5kIHNjb3JlLAp3aGljaCBpcyB0aGUgYmFyZSBtaW5pbXVtIG5lZWRlZCBmb3IgdGhlIHNpbXBs
ZXIgaGFybmVzcywga2V5IG9mZiBvZiB0aGUgaGVhZGVyIG5hbWUgcHJvdmlkZWQuCiogQW5pbW9t
ZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzOiBBZGRlZC4gVXNlIGEgc2ltaWxh
ciAyOjEgcmF0aW8uIFRoZSBzY29yZSB0YWJsZXMgYXJlCnNwbGl0IGludG8gdGhlIGRhdGEgYW5k
IHRoZSBoZWFkZXJzLCBhbmQgYXJlIGFsc28gZGlzcGxheWVkIFJUTCBzbyB0aGF0IGEgbGF0ZXIg
cGF0Y2ggYWxsb3dzIGEKdXNlciB0byBjb3B5LXBhc3RlIHRoZSBkYXRhIGVhc2lseS4KKiBBbmlt
b21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5qczogQWRkZWQuIFVzZSBhIHNpbXBs
ZXIgdmVyc2lvbiBvZiBiZW5jaG1hcmtSdW5uZXJDbGllbnQuClRoZSBkZWJ1ZyBoYXJuZXNzIHdp
bGwgZXh0ZW5kIHRoZXNlIGNsYXNzZXMuCih3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5fc3Rh
cnRCZW5jaG1hcmspOiBVc2VkIGJ5IGJvdGggaGFybmVzc2VzLgood2luZG93LmJlbmNobWFya0Nv
bnRyb2xsZXIuc3RhcnRCZW5jaG1hcmspOiBTZXQgaGFyZC1jb2RlZCBvcHRpb25zLgood2luZG93
LmJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMpOiBJbmNsdWRlcyBtb3N0IG9mIGJlbmNo
bWFya1J1bm5lckNsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKCkKaGVyZS4KLS0tCiBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWwgICAgICAgICB8ICAxNSArLQog
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2luZGV4Lmh0bWwgICAgICAgICAgICAgfCAgMzcg
KysrKwogLi4uL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3MgICAgICAgICAg
fCAgIDggKy0KIC4uLi9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanMgICAgICAg
ICAgIHwgIDkzICsrLS0tLS0tLS0KIC4uLi9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFy
ay1ydW5uZXIuanMgICAgIHwgICAzIC0KIC4uLi9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNp
b25zLmpzICAgICAgICAgICAgIHwgIDQwICsrLS0KIC4uLi9Bbmltb21ldGVyL3Jlc291cmNlcy9y
dW5uZXIvYW5pbW9tZXRlci5jc3MgICAgIHwgMjA0ICsrKysrKysrKysrKysrKysrKysrKwogLi4u
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpzICAgICAgfCAgODMgKysr
KysrKysrCiBQZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICA2MSArKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgNDQzIGluc2VydGlvbnMoKyksIDEwMSBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvaW5kZXguaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzCiBjcmVhdGUgbW9kZSAxMDA2NDQg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5q
cwoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRt
bCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbAppbmRleCBiMzFm
MjcwLi5lYTQ3MGI2IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvZGV2
ZWxvcGVyLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2RldmVsb3Blci5o
dG1sCkBAIC03LDkgKzcsMTAgQEAKICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NhbXBsZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+
PC9zY3JpcHQ+CiAKLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmlt
b21ldGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3J1bm5lci90
ZXN0cy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWJ1Zy1ydW5u
ZXIvdGVzdHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcnVubmVy
L2FuaW1vbWV0ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVi
dWctcnVubmVyL2FuaW1vbWV0ZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWJ1Zy1ydW5uZXIvZDMubWluLmpzIj48L3NjcmlwdD4K
QEAgLTYwLDEwICs2MSwxMCBAQAogICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICA8L2Rpdj4K
ICAgICAgICAgPGZvb3Rlcj4KLSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRv
biIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zdGFydFRlc3QoKSI+U3RhcnQgVGVzdDwv
YnV0dG9uPgorICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNr
PSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0QmVuY2htYXJrKCkiPlN0YXJ0IFRlc3Q8L2J1dHRv
bj4KICAgICAgICAgPC9mb290ZXI+CiAgICAgPC9zZWN0aW9uPgotICAgIDxzZWN0aW9uIGlkPSJy
dW5uaW5nIj4KKyAgICA8c2VjdGlvbiBpZD0idGVzdC1jb250YWluZXIiPgogICAgICAgICA8ZGl2
IGlkPSJydW5uaW5nLXRlc3QiPjwvZGl2PgogICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcyI+CiAg
ICAgICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcy1jb21wbGV0ZWQiPjwvZGl2PgpAQCAtODIsNyAr
ODMsNyBAQAogICAgICAgICA8Zm9vdGVyPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFy
Z2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNlbGVjdFJlc3VsdHMoKSI+
U2VsZWN0PC9idXR0b24+CiAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24i
IG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd0pTT04oKSI+SlNPTjwvYnV0dG9uPgot
ICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1h
cmtDb250cm9sbGVyLnN0YXJ0VGVzdCgpIj5UZXN0IEFnYWluPC9idXR0b24+CisgICAgICAgICAg
ICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xs
ZXIuc3RhcnRCZW5jaG1hcmsoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPgogICAgICAgICA8L2Zvb3Rl
cj4KICAgICA8L3NlY3Rpb24+CiAgICAgPHNlY3Rpb24gaWQ9Impzb24iPgpAQCAtOTUsNyArOTYs
NyBAQAogICAgICAgICA8Zm9vdGVyPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2Ut
YnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNlbGVjdEpTT04oJ2pzb24nKSI+
U2VsZWN0PC9idXR0b24+CiAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24i
IG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMoKSI+UmVzdWx0czwvYnV0
dG9uPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJi
ZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0VGVzdCgpIj5UZXN0IEFnYWluPC9idXR0b24+CisgICAg
ICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0Nv
bnRyb2xsZXIuc3RhcnRCZW5jaG1hcmsoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPgogICAgICAgICA8
L2Zvb3Rlcj4KICAgICA8L3NlY3Rpb24+CiAgICAgPHNlY3Rpb24gaWQ9InRlc3QtanNvbiI+CkBA
IC0xMDgsNyArMTA5LDcgQEAKICAgICAgICAgPGZvb3Rlcj4KICAgICAgICAgICAgIDxidXR0b24g
Y2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zZWxlY3RK
U09OKCd0ZXN0LWpzb24nKSI+U2VsZWN0PC9idXR0b24+CiAgICAgICAgICAgICA8YnV0dG9uIGNs
YXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3Vs
dHMoKSI+UmVzdWx0czwvYnV0dG9uPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2Ut
YnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0VGVzdCgpIj5UZXN0IEFn
YWluPC9idXR0b24+CisgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9u
Y2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRCZW5jaG1hcmsoKSI+VGVzdCBBZ2Fpbjwv
YnV0dG9uPgogICAgICAgICA8L2Zvb3Rlcj4KICAgICA8L3NlY3Rpb24+CiAgICAgPHNlY3Rpb24g
aWQ9InRlc3QtZ3JhcGgiPgpAQCAtMTE4LDcgKzExOSw3IEBACiAgICAgICAgIDxkYXRhPjwvZGF0
YT4KICAgICAgICAgPGZvb3Rlcj4KICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1
dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVzdWx0cygpIj5SZXN1bHRz
PC9idXR0b24+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xp
Y2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRUZXN0KCkiPlRlc3QgQWdhaW48L2J1dHRvbj4K
KyAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2ht
YXJrQ29udHJvbGxlci5zdGFydEJlbmNobWFyaygpIj5UZXN0IEFnYWluPC9idXR0b24+CiAgICAg
ICAgIDwvZm9vdGVyPgogICAgIDwvc2VjdGlvbj4KIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
aW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDEyNzhkCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2luZGV4Lmh0bWwK
QEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIHVzZXItc2Nh
bGFibGU9bm8iPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3J1
bm5lci9hbmltb21ldGVyLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdHJpbmdz
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NhbXBsZXIuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3Jp
cHQ+CisKKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3J1bm5lci90ZXN0cy5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5qcyI+PC9z
Y3JpcHQ+CisKKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1h
cmstcnVubmVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxtYWluPgorICAg
ICAgICA8aHI+CisgICAgICAgIDxzZWN0aW9uIGlkPSJpbnRybyIgY2xhc3M9InNlbGVjdGVkIj4K
KyAgICAgICAgICAgIDxoMT5Bbmltb21ldGVyPC9oMT4KKyAgICAgICAgICAgIDxwPkFuaW1vbWV0
ZXIgaXMgYSBncmFwaGljcyBiZW5jaG1hcmsgdGhhdCBkZXRlcm1pbmVzIHRoZSBtYXhpbXVtIGNv
bXBsZXhpdHkgb2YgYW4gYW5pbWF0ZWQgc2NlbmUgc3VjaCB0aGF0IHRoZSBicm93c2VyIGFjaGll
dmVzIGEgdGFyZ2V0IGZyYW1lIHJhdGUuPC9wPgorICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNr
PSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0QmVuY2htYXJrKCkiPlJ1biBiZW5jaG1hcms8L2J1
dHRvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8c2VjdGlvbiBpZD0idGVzdC1jb250
YWluZXIiPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxzZWN0aW9uIGlkPSJyZXN1bHRz
Ij4KKyAgICAgICAgICAgIDxoMT5Bbmltb21ldGVyIHNjb3JlPC9oMT4KKyAgICAgICAgICAgIDxw
IGlkPSJzY29yZSI+PC9wPgorICAgICAgICAgICAgPGRpdj4KKyAgICAgICAgICAgICAgICA8dGFi
bGUgaWQ9InJlc3VsdHMtZGF0YSI+PC90YWJsZT4KKyAgICAgICAgICAgICAgICA8dGFibGUgaWQ9
InJlc3VsdHMtaGVhZGVyIj48L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAg
ICA8YnV0dG9uIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRCZW5jaG1hcmsoKSI+
VGVzdCBBZ2FpbjwvYnV0dG9uPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxocj4KKyAg
ICA8L21haW4+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzcyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIu
Y3NzCmluZGV4IDk0Yjc2YjguLmQ3MzI2OWUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0
ZXIuY3NzCkBAIC0yMjYsNyArMjI2LDcgQEAgbWFpbiB7CiB9CiAKIHNlY3Rpb24gewotICAgIHdp
ZHRoOiA4MDBweDsKKyAgICB3aWR0aDogMTIwMHB4OwogICAgIGhlaWdodDogNjAwcHg7CiAgICAg
ZGlzcGxheTogbm9uZTsKICAgICBwYWRkaW5nOiAxMHB4OwpAQCAtNDI0LDcgKzQyNCw3IEBAIHNl
Y3Rpb24gPiBmb290ZXIgewogLyogICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIFNl
Y3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICovCiAKLSNydW5uaW5nIHsKKyN0ZXN0LWNvbnRhaW5lciB7CiAgICAgcG9zaXRpb246
IHJlbGF0aXZlOwogICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICAgLXdlYmtpdC1hbGln
bi1pdGVtczogY2VudGVyOwpAQCAtNDQxLDcgKzQ0MSw3IEBAIHNlY3Rpb24gPiBmb290ZXIgewog
fQogCiAjcnVubmluZy10ZXN0ID4gaWZyYW1lIHsKLSAgICB3aWR0aDogODAwcHg7CisgICAgd2lk
dGg6IDEyMDBweDsKICAgICBoZWlnaHQ6IDYwMHB4OwogICAgIGJvcmRlcjogMHB4IG5vbmU7CiAg
ICAgb3ZlcmZsb3c6IGhpZGRlbjsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBzZWN0aW9uID4gZm9vdGVy
IHsKIH0KIAogQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDQxNHB4KSB7Ci0g
ICAgI3J1bm5pbmcgeworICAgICN0ZXN0LWNvbnRhaW5lciB7CiAgICAgICAgIHBhZGRpbmc6IDA7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qcwppbmRleCAxZGM0NTEwLi41
Y2ZlZmZjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2Vz
L2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanMKQEAgLTEsMjcgKzEsOCBA
QAotd2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudCA9IHsKLSAgICBpdGVyYXRpb25Db3VudDog
MSwKK1V0aWxpdGllcy5leHRlbmRPYmplY3Qod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudCwg
ewogICAgIHRlc3RzQ291bnQ6IG51bGwsCiAgICAgcHJvZ3Jlc3NCYXI6IG51bGwsCiAgICAgcmVj
b3JkVGFibGU6IG51bGwsCi0gICAgb3B0aW9uczogbnVsbCwKLSAgICBzY29yZTogMCwKLSAgICBf
cmVzdWx0c0Rhc2hib2FyZDogbnVsbCwKLSAgICBfcmVzdWx0c1RhYmxlOiBudWxsLAotICAgIAot
ICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHN1aXRlcywgb3B0aW9ucykKLSAgICB7Ci0gICAgICAg
IHRoaXMudGVzdHNDb3VudCA9IHRoaXMuaXRlcmF0aW9uQ291bnQgKiBzdWl0ZXMucmVkdWNlKGZ1
bmN0aW9uIChjb3VudCwgc3VpdGUpIHsgcmV0dXJuIGNvdW50ICsgc3VpdGUudGVzdHMubGVuZ3Ro
OyB9LCAwKTsKLSAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKLSAgICB9LAogCi0gICAg
d2lsbEFkZFRlc3RGcmFtZTogZnVuY3Rpb24gKGZyYW1lKQotICAgIHsKLSAgICAgICAgdmFyIG1h
aW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJtYWluIik7Ci0gICAgICAgIHZhciBzdHlsZSA9
IGdldENvbXB1dGVkU3R5bGUobWFpbik7Ci0gICAgICAgIGZyYW1lLnN0eWxlLmxlZnQgPSBtYWlu
Lm9mZnNldExlZnQgKyBwYXJzZUludChzdHlsZS5ib3JkZXJMZWZ0V2lkdGgpICsgcGFyc2VJbnQo
c3R5bGUucGFkZGluZ0xlZnQpICsgInB4IjsKLSAgICAgICAgZnJhbWUuc3R5bGUudG9wID0gbWFp
bi5vZmZzZXRUb3AgKyBwYXJzZUludChzdHlsZS5ib3JkZXJUb3BXaWR0aCkgKyBwYXJzZUludChz
dHlsZS5wYWRkaW5nVG9wKSArICJweCI7Ci0gICAgfSwKLSAgICAKICAgICBkaWRSdW5UZXN0OiBm
dW5jdGlvbiAoKQogICAgIHsKICAgICAgICAgdGhpcy5wcm9ncmVzc0Jhci5pbmNSYW5nZSgpOwpA
QCAtMjksMzEgKzEwLDEzIEBAIHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQgPSB7CiAgICAg
CiAgICAgd2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb246IGZ1bmN0aW9uICgpCiAgICAgewotICAgICAg
ICB0aGlzLl9yZXN1bHRzRGFzaGJvYXJkID0gbmV3IFJlc3VsdHNEYXNoYm9hcmQoKTsKLSAgICAg
ICAgdGhpcy5fcmVzdWx0c1RhYmxlID0gbmV3IFJlc3VsdHNUYWJsZShkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCJzZWN0aW9uI3Jlc3VsdHMgPiBkYXRhID4gdGFibGUiKSwgSGVhZGVycyk7Ci0gICAg
ICAgIAorICAgICAgICB0aGlzLnJlc3VsdHMgPSBuZXcgUmVzdWx0c0Rhc2hib2FyZCgpOwogICAg
ICAgICB0aGlzLnByb2dyZXNzQmFyID0gbmV3IFByb2dyZXNzQmFyKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwcm9ncmVzcy1jb21wbGV0ZWQiKSwgdGhpcy50ZXN0c0NvdW50KTsKLSAgICAgICAg
dGhpcy5yZWNvcmRUYWJsZSA9IG5ldyBSZXN1bHRzVGFibGUoZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigic2VjdGlvbiNydW5uaW5nICNyZWNvcmQgPiB0YWJsZSIpLCBIZWFkZXJzKTsKLSAgICB9LAot
ICAgIAotICAgIGRpZFJ1blN1aXRlczogZnVuY3Rpb24gKHN1aXRlc1NhbXBsZXJzKQotICAgIHsK
LSAgICAgICAgdGhpcy5fcmVzdWx0c0Rhc2hib2FyZC5wdXNoKHN1aXRlc1NhbXBsZXJzKTsKLSAg
ICB9LAotICAgIAotICAgIGRpZEZpbmlzaExhc3RJdGVyYXRpb246IGZ1bmN0aW9uICgpCi0gICAg
ewotICAgICAgICB2YXIganNvbiA9IHRoaXMuX3Jlc3VsdHNEYXNoYm9hcmQudG9KU09OKHRydWUs
IHRydWUpOwotICAgICAgICB0aGlzLnNjb3JlID0ganNvbltTdHJpbmdzLmpzb24uc2NvcmVdOwot
ICAgICAgICB0aGlzLl9yZXN1bHRzVGFibGUuc2hvd0l0ZXJhdGlvbnMoanNvbltTdHJpbmdzLmpz
b24ucmVzdWx0cy5pdGVyYXRpb25zXSwgdGhpcy5vcHRpb25zKTsKLSAgICAgICAgc2VjdGlvbnNN
YW5hZ2VyLnNob3dKU09OKCJqc29uIiwganNvbltTdHJpbmdzLmpzb24ucmVzdWx0cy5pdGVyYXRp
b25zXVswXSk7Ci0gICAgICAgIHN1aXRlc01hbmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbUpT
T04oanNvbltTdHJpbmdzLmpzb24ucmVzdWx0cy5pdGVyYXRpb25zXVswXSk7Ci0gICAgICAgIGJl
bmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMoKTsKKyAgICAgICAgdGhpcy5yZWNvcmRUYWJs
ZSA9IG5ldyBSZXN1bHRzVGFibGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMtdGFi
bGUiKSwgSGVhZGVycyk7CiAgICAgfQotfQorfSk7CiAKLXdpbmRvdy5zZWN0aW9uc01hbmFnZXIg
PQoteworVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh3aW5kb3cuc2VjdGlvbnNNYW5hZ2VyLCB7CiAg
ICAgX3NlY3Rpb25IZWFkZXJIMUVsZW1lbnQ6IGZ1bmN0aW9uKHNlY3Rpb25JZGVudGlmaWVyKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiMiICsgc2VjdGlv
bklkZW50aWZpZXIgKyAiID4gaGVhZGVyID4gaDEiKTsKQEAgLTc0LDcgKzM3LDcgQEAgd2luZG93
LnNlY3Rpb25zTWFuYWdlciA9CiAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fc2VjdGlvbkhl
YWRlckgxRWxlbWVudChzZWN0aW9uSWRlbnRpZmllcik7CiAgICAgICAgIGVsZW1lbnQudGV4dENv
bnRlbnQgPSB0aXRsZSArICI6IjsKIAotICAgICAgICB2YXIgc2NvcmUgPSBiZW5jaG1hcmtSdW5u
ZXJDbGllbnQuc2NvcmUudG9GaXhlZCgyKTsKKyAgICAgICAgdmFyIHNjb3JlID0gYmVuY2htYXJr
UnVubmVyQ2xpZW50LnJlc3VsdHMuc2NvcmUudG9GaXhlZCgyKTsKICAgICAgICAgZWxlbWVudC50
ZXh0Q29udGVudCArPSAiIFsiICsgU3RyaW5ncy50ZXh0LnNjb3JlICsgIiA9ICIgKyBzY29yZSAr
ICJdIjsKICAgICB9LAogICAgIApAQCAtMTE2LDI4ICs3OSwxMyBAQCB3aW5kb3cuc2VjdGlvbnNN
YW5hZ2VyID0KICAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpOwogICAg
ICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwogICAgIH0sCi0gICAg
ICAgIAotICAgIHNob3dTZWN0aW9uOiBmdW5jdGlvbihzZWN0aW9uSWRlbnRpZmllciwgcHVzaFN0
YXRlKQotICAgIHsKLSAgICAgICAgdmFyIGN1cnJlbnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoInNlY3Rpb24uc2VsZWN0ZWQiKTsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoY3VycmVudFNlY3Rpb25FbGVtZW50KTsKLQotICAgICAgICB2YXIgbmV3U2VjdGlvbkVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KG5ld1NlY3Rpb25FbGVtZW50KTsKLQotICAgICAgICBjdXJyZW50U2Vj
dGlvbkVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQiKTsKLSAgICAgICAgbmV3U2Vj
dGlvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsKLQotICAgICAgICBpZiAocHVz
aFN0YXRlKQotICAgICAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUoe3NlY3Rpb246IHNlY3Rpb25J
ZGVudGlmaWVyfSwgZG9jdW1lbnQudGl0bGUpOwotICAgIH0sCiAKICAgICBzZXR1cFJ1bm5pbmdT
ZWN0aW9uU3R5bGU6IGZ1bmN0aW9uKG9wdGlvbnMpCiAgICAgewogICAgICAgICBpZiAob3B0aW9u
c1siZGlzcGxheSJdICE9ICJzdGF0aXN0aWNzLXRhYmxlIikKICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZWNvcmQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgIH0K
LX0KK30pOwogCiB3aW5kb3cub3B0aW9uc01hbmFnZXIgPQogewpAQCAtNDE3LDggKzM2NSw3IEBA
IHdpbmRvdy5zdWl0ZXNNYW5hZ2VyID0KICAgICB9CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDb250
cm9sbGVyID0KLXsKK1V0aWxpdGllcy5leHRlbmRPYmplY3Qod2luZG93LmJlbmNobWFya0NvbnRy
b2xsZXIsIHsKICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBkb2N1
bWVudC5mb3Jtc1siYmVuY2htYXJrLW9wdGlvbnMiXS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2Ui
LCBiZW5jaG1hcmtDb250cm9sbGVyLm9uRm9ybUNoYW5nZWQsIHRydWUpOwpAQCAtNDM5LDIyICsz
ODYsMTMgQEAgd2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIgPQogICAgICAgICAgICAgc3VpdGVz
TWFuYWdlci51cGRhdGVEaXNwbGF5KCk7CiAgICAgICAgIH0KICAgICB9LAotICAgIAotICAgIF9y
dW5CZW5jaG1hcms6IGZ1bmN0aW9uKHN1aXRlcywgb3B0aW9ucykKLSAgICB7Ci0gICAgICAgIGJl
bmNobWFya1J1bm5lckNsaWVudC5pbml0aWFsaXplKHN1aXRlcywgb3B0aW9ucyk7Ci0gICAgICAg
IHZhciBmcmFtZUNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNydW5uaW5nID4g
I3J1bm5pbmctdGVzdCIpOwotICAgICAgICB2YXIgcnVubmVyID0gbmV3IEJlbmNobWFya1J1bm5l
cihzdWl0ZXMsIGZyYW1lQ29udGFpbmVyIHx8IGRvY3VtZW50LmJvZHksIGJlbmNobWFya1J1bm5l
ckNsaWVudCk7Ci0gICAgICAgIHJ1bm5lci5ydW5NdWx0aXBsZUl0ZXJhdGlvbnMoKTsKLSAgICB9
LAogCi0gICAgc3RhcnRUZXN0OiBmdW5jdGlvbigpCisgICAgc3RhcnRCZW5jaG1hcms6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBvcHRpb25zID0gb3B0aW9uc01hbmFnZXIudXBkYXRl
TG9jYWxTdG9yYWdlRnJvbVVJKCk7CiAgICAgICAgIHZhciBzdWl0ZXMgPSBzdWl0ZXNNYW5hZ2Vy
LnVwZGF0ZUxvY2FsU3RvcmFnZUZyb21VSSgpOwogICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2V0
dXBSdW5uaW5nU2VjdGlvblN0eWxlKG9wdGlvbnMpOwotICAgICAgICB0aGlzLl9ydW5CZW5jaG1h
cmsoc3VpdGVzLCBvcHRpb25zKTsKLSAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNob3dTZWN0aW9u
KCJydW5uaW5nIik7CisgICAgICAgIHRoaXMuX3N0YXJ0QmVuY2htYXJrKHN1aXRlcywgb3B0aW9u
cywgInJ1bm5pbmctdGVzdCIpOwogICAgIH0sCiAKICAgICBzZWxlY3RSZXN1bHRzOiBmdW5jdGlv
bigpCkBAIC00NjQsNiArNDAyLDEzIEBAIHdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyID0KICAg
ICAKICAgICBzaG93UmVzdWx0czogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dHNUYWJsZSA9IG5ldyBSZXN1bHRzVGFibGUoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2VjdGlv
biNyZXN1bHRzID4gZGF0YSA+IHRhYmxlIiksIEhlYWRlcnMpOworCisgICAgICAgIHZhciBkYXRh
ID0gYmVuY2htYXJrUnVubmVyQ2xpZW50LnJlc3VsdHMuZGF0YTsKKyAgICAgICAgcmVzdWx0c1Rh
YmxlLnNob3dJdGVyYXRpb25zKGRhdGFbU3RyaW5ncy5qc29uLnJlc3VsdHMuaXRlcmF0aW9uc10s
IGJlbmNobWFya1J1bm5lckNsaWVudC5vcHRpb25zKTsKKyAgICAgICAgYmVuY2htYXJrQ29udHJv
bGxlci5zaG93SlNPTigianNvbiIsIGRhdGFbU3RyaW5ncy5qc29uLnJlc3VsdHMuaXRlcmF0aW9u
c11bMF0pOworICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZUxvY2FsU3RvcmFnZUZyb21KU09O
KGRhdGFbU3RyaW5ncy5qc29uLnJlc3VsdHMuaXRlcmF0aW9uc11bMF0pOworCiAgICAgICAgIHNl
Y3Rpb25zTWFuYWdlci5zaG93U2NvcmUoInJlc3VsdHMiLCBTdHJpbmdzLnRleHQucmVzdWx0cy5y
ZXN1bHRzKTsKICAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNob3dTZWN0aW9uKCJyZXN1bHRzIiwg
dHJ1ZSk7CiAgICAgfSwKQEAgLTQ5MSw3ICs0MzYsNyBAQCB3aW5kb3cuYmVuY2htYXJrQ29udHJv
bGxlciA9CiAgICAgc2VsZWN0SlNPTjogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIpCiAgICAg
ewogICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2VsZWN0RGF0YUNvbnRlbnRzKHNlY3Rpb25JZGVu
dGlmaWVyKTsKLSAgICB9LAotfQorICAgIH0KK30pOwogCiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIGJlbmNobWFya0NvbnRyb2xsZXIuaW5pdGlhbGl6ZSk7CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1h
cmstcnVubmVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1
Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcwppbmRleCA0ZjQ4MzQ1Li45MjI4MTA5IDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5l
ci9iZW5jaG1hcmstcnVubmVyLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
ZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMKQEAgLTc4LDkgKzc4LDYg
QEAgQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fYXBwZW5kRnJhbWUgPSBmdW5jdGlvbigpCiAg
ICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CiAgICAgZnJh
bWUuc2V0QXR0cmlidXRlKCJzY3JvbGxpbmciLCAibm8iKTsKIAotICAgIGlmICh0aGlzLl9jbGll
bnQgJiYgdGhpcy5fY2xpZW50LndpbGxBZGRUZXN0RnJhbWUpCi0gICAgICAgIHRoaXMuX2NsaWVu
dC53aWxsQWRkVGVzdEZyYW1lKGZyYW1lKTsKLQogICAgIHRoaXMuX2ZyYW1lQ29udGFpbmVyLmlu
c2VydEJlZm9yZShmcmFtZSwgdGhpcy5fZnJhbWVDb250YWluZXIuZmlyc3RDaGlsZCk7CiAgICAg
dGhpcy5fZnJhbWUgPSBmcmFtZTsKICAgICByZXR1cm4gZnJhbWU7CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKaW5kZXggNmNmZDRh
ZS4uZTNkYTJlOSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291
cmNlcy9leHRlbnNpb25zLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvZXh0ZW5zaW9ucy5qcwpAQCAtMTkxLDYgKzE5MSw3IEBAIFByb2dyZXNzQmFyLnByb3Rv
dHlwZSA9CiBmdW5jdGlvbiBSZXN1bHRzRGFzaGJvYXJkKCkKIHsKICAgICB0aGlzLl9pdGVyYXRp
b25zU2FtcGxlcnMgPSBbXTsKKyAgICB0aGlzLl9wcm9jZXNzZWREYXRhID0gdW5kZWZpbmVkOwog
fQogCiBSZXN1bHRzRGFzaGJvYXJkLnByb3RvdHlwZSA9CkBAIC0yMDAsNyArMjAxLDcgQEAgUmVz
dWx0c0Rhc2hib2FyZC5wcm90b3R5cGUgPQogICAgICAgICB0aGlzLl9pdGVyYXRpb25zU2FtcGxl
cnMucHVzaChzdWl0ZXNTYW1wbGVycyk7ICAgICAgICAKICAgICB9LAogICAgIAotICAgIHRvSlNP
TjogZnVuY3Rpb24oc3RhdGlzdGljcywgZ3JhcGgpCisgICAgX3Byb2Nlc3NEYXRhOiBmdW5jdGlv
bihzdGF0aXN0aWNzLCBncmFwaCkKICAgICB7CiAgICAgICAgIHZhciBpdGVyYXRpb25zUmVzdWx0
cyA9IFtdOwogICAgICAgICB2YXIgaXRlcmF0aW9uc1Njb3JlcyA9IFtdOwpAQCAtMjM0LDEwICsy
MzUsMjIgQEAgUmVzdWx0c0Rhc2hib2FyZC5wcm90b3R5cGUgPQogICAgICAgICAgICAgaXRlcmF0
aW9uc1Njb3Jlcy5wdXNoKGl0ZXJhdGlvbnNSZXN1bHRzW2luZGV4XVtTdHJpbmdzLmpzb24uc2Nv
cmVdKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgdmFyIGpzb24gPSB7fTsKLSAgICAgICAganNv
bltTdHJpbmdzLmpzb24uc2NvcmVdID0gU3RhdGlzdGljcy5zYW1wbGVNZWFuKGl0ZXJhdGlvbnNT
Y29yZXMubGVuZ3RoLCBpdGVyYXRpb25zU2NvcmVzLnJlZHVjZShmdW5jdGlvbihhLCBiKSB7IHJl
dHVybiBhICogYjsgfSkpOwotICAgICAgICBqc29uW1N0cmluZ3MuanNvbi5yZXN1bHRzLml0ZXJh
dGlvbnNdID0gaXRlcmF0aW9uc1Jlc3VsdHM7Ci0gICAgICAgIHJldHVybiBqc29uOworICAgICAg
ICB0aGlzLl9wcm9jZXNzZWREYXRhID0ge307CisgICAgICAgIHRoaXMuX3Byb2Nlc3NlZERhdGFb
U3RyaW5ncy5qc29uLnNjb3JlXSA9IFN0YXRpc3RpY3Muc2FtcGxlTWVhbihpdGVyYXRpb25zU2Nv
cmVzLmxlbmd0aCwgaXRlcmF0aW9uc1Njb3Jlcy5yZWR1Y2UoZnVuY3Rpb24oYSwgYikgeyByZXR1
cm4gYSAqIGI7IH0pKTsKKyAgICAgICAgdGhpcy5fcHJvY2Vzc2VkRGF0YVtTdHJpbmdzLmpzb24u
cmVzdWx0cy5pdGVyYXRpb25zXSA9IGl0ZXJhdGlvbnNSZXN1bHRzOworICAgIH0sCisKKyAgICBn
ZXQgZGF0YSgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcHJvY2Vzc2VkRGF0YSkKKyAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzZWREYXRhOworICAgICAgICB0aGlzLl9wcm9jZXNz
RGF0YSh0cnVlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NlZERhdGE7Cisg
ICAgfSwKKworICAgIGdldCBzY29yZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5kYXRh
W1N0cmluZ3MuanNvbi5zY29yZV07CiAgICAgfQogfQogCkBAIC0yODUsNyArMjk4LDcgQEAgUmVz
dWx0c1RhYmxlLnByb3RvdHlwZSA9CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0g
cXVldWUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgICAgICAgICB2YXIgZW50cnkg
PSBxdWV1ZS5zaGlmdCgpOwogCi0gICAgICAgICAgICAgICAgaWYgKCFlbnRyeS5oZWFkZXJzLmxl
bmd0aCkgeworICAgICAgICAgICAgICAgIGlmICghZW50cnkuaGVhZGVycyB8fCAhZW50cnkuaGVh
ZGVycy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKGVudHJ5LmVs
ZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9
CkBAIC0zOTEsNyArNDA0LDcgQEAgUmVzdWx0c1RhYmxlLnByb3RvdHlwZSA9CiAgICAgX3Nob3dF
bXB0eUNlbGxzOiBmdW5jdGlvbihyb3csIGhlYWRlcnMpCiAgICAgewogICAgICAgICBmb3IgKHZh
ciBpbmRleCA9IDA7IGluZGV4IDwgaGVhZGVycy5sZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAg
ICAgIGlmICghaGVhZGVyc1tpbmRleF0uY2hpbGRyZW4ubGVuZ3RoKQorICAgICAgICAgICAgaWYg
KCFoZWFkZXJzW2luZGV4XS5jaGlsZHJlbiB8fCAhaGVhZGVyc1tpbmRleF0uY2hpbGRyZW4ubGVu
Z3RoKQogICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eUNlbGwocm93LCAic3VpdGVzLXNl
cGFyYXRvciIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dF
bXB0eUNlbGxzKHJvdywgaGVhZGVyc1tpbmRleF0uY2hpbGRyZW4pOwpAQCAtNDEwLDE3ICs0MjMs
MTggQEAgUmVzdWx0c1RhYmxlLnByb3RvdHlwZSA9CiAgICAgICAgIHZhciBjbGFzc05hbWUgPSB0
aGlzLl9pc05vaXN5VGVzdCh0ZXN0UmVzdWx0cywgb3B0aW9ucykgPyAibm9pc3ktcmVzdWx0cyIg
OiAiIjsKICAgICAgICAgCiAgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlz
Ll9oZWFkZXJzLmxlbmd0aDsgKytpbmRleCkgeworICAgICAgICAgICAgdmFyIGhlYWRlciA9IHRo
aXMuX2hlYWRlcnNbaW5kZXhdOwogCi0gICAgICAgICAgICBzd2l0Y2ggKGluZGV4KSB7Ci0gICAg
ICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICBpZiAoaGVhZGVyLnRleHQgPT0gU3RyaW5ncy50
ZXh0LnRlc3ROYW1lKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1RleHQocm93LCB0ZXN0
TmFtZSwgY2xhc3NOYW1lKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAg
Y2FzZSAxOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIGlm
IChoZWFkZXIudGV4dCA9PSBTdHJpbmdzLnRleHQuc2NvcmUpIHsKICAgICAgICAgICAgICAgICB2
YXIgZGF0YSA9IHRlc3RSZXN1bHRzW1N0cmluZ3MuanNvbi5zY29yZV07CiAgICAgICAgICAgICAg
ICAgdGhpcy5fc2hvd0ZpeGVkTnVtYmVyKHJvdywgZGF0YSwgMik7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAKKyAgICAg
ICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAg
IGNhc2UgMzoKICAgICAgICAgICAgICAgICB2YXIganNvbkV4cGVyaW1lbnQgPSBpbmRleCA9PSAy
ID8gU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmNvbXBsZXhpdHkgOiBTdHJpbmdzLmpzb24uZXhw
ZXJpbWVudHMuZnJhbWVSYXRlOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4wZmE2ZjgzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3MKQEAgLTAs
MCArMSwyMDQgQEAKKy8qIE91dGVyIGhhcm5lc3MgKi8KK2h0bWwsYm9keSB7CisgICAgaGVpZ2h0
OiAxMDAlOworICAgIG1hcmdpbjogMHB4OworICAgIHBhZGRpbmc6IDBweDsKK30KKworYm9keSB7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MSwgMjQxLCAyNDEpOworICAgIGNvbG9yOiBy
Z2IoOTYsIDk2LCA5Nik7CisgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sICJIZWx2ZXRp
Y2EgTmV1ZSIsIEhlbHZldGljYSwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKK30KKworbWFpbiB7Cisg
ICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIGRpc3BsYXk6IC1tcy1mbGV4
Ym94OworICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKKyAgICBkaXNwbGF5OiBmbGV4OworCisg
ICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50
ZXI7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICBhbGlnbi1pdGVtczogY2Vu
dGVyOworCisgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CisgICAgLW1z
LWZsZXgtcGFjazogZmxleC1zdGFydDsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7
CisKKyAgICAtd2Via2l0LWZsZXgtZmxvdzogY29sdW1uOworICAgIGZsZXgtZmxvdzogY29sdW1u
OworfQorCitociB7CisgICAgLXdlYmtpdC1mbGV4OiAxIDAgMjBweDsKKyAgICAtbXMtZmxleDog
MSAwIDIwcHg7CisgICAgZmxleDogMSAwIDIwcHg7CisgICAgd2lkdGg6IDFweDsKKyAgICBib3Jk
ZXI6IDA7CisgICAgbWFyZ2luOiAwOworfQorCitzZWN0aW9uIHsKKyAgICBib3gtc2l6aW5nOiBi
b3JkZXItYm94OworICAgIHdpZHRoOiAxMDAlOworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3Nl
Y3Rpb24uc2VsZWN0ZWQgeworICAgIGRpc3BsYXk6IGluaXRpYWw7Cit9CisKK2gxIHsKKyAgICBm
b250LXNpemU6IDNlbTsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgZm9udC13ZWlnaHQ6
IDUwMDsKK30KKworYnV0dG9uIHsKKyAgICAtd2Via2l0LWZsZXg6IDAgMCBhdXRvOworICAgIC1t
cy1mbGV4OiAwIDAgYXV0bzsKKyAgICBmbGV4OiAwIDAgYXV0bzsKKyAgICBkaXNwbGF5OiBibG9j
azsKKyAgICBmb250LXNpemU6IDEuNWVtOworICAgIG1hcmdpbi1ib3R0b206IDJlbTsKKyAgICBi
b3JkZXI6IDJweCBzb2xpZCByZ2IoOTYsIDk2LCA5Nik7CisgICAgY29sb3I6IHJnYig5NiwgOTYs
IDk2KTsKKyAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItcmFkaXVzOiAx
MHB4OworICAgIHBhZGRpbmc6IC41ZW0gMmVtOworfQorCitidXR0b246aG92ZXIgeworICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjEpOworICAgIGN1cnNvcjogcG9pbnRlcjsK
K30KKworYnV0dG9uOmFjdGl2ZSB7CisgICAgY29sb3I6IGluaGVyaXQ7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMik7Cit9CisKKworQG1lZGlhIHNjcmVlbiBhbmQgKG1p
bi1kZXZpY2Utd2lkdGg6IDEwMjRweCkgeworICAgIHNlY3Rpb24geworICAgICAgICBwYWRkaW5n
OiAwIDIwcHg7CisgICAgfQorCisgICAgc2VjdGlvbi5zZWxlY3RlZCB7CisgICAgICAgIGRpc3Bs
YXk6IC1tcy1mbGV4Ym94OworICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CisgICAgICAg
IGRpc3BsYXk6IGZsZXg7CisKKyAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKKyAgICAg
ICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOworICAgICAgICAtd2Via2l0LWJveC1hbGln
bjogY2VudGVyOworICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOworCisgICAgICAgIC13ZWJr
aXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OworICAgICAgICAtbXMtZmxleC1wYWNrOiBm
bGV4LXN0YXJ0OworICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CisKKyAgICAg
ICAgLXdlYmtpdC1mbGV4LWZsb3c6IGNvbHVtbjsKKyAgICAgICAgZmxleC1mbG93OiBjb2x1bW47
CisgICAgfQorfQorCisvKiBJbnRybyBzZWN0aW9uICovCisjaW50cm8gaDEgeworICAgIG1hcmdp
bjogMWVtIDA7Cit9CisKKyNpbnRybyBwIHsKKyAgICAtd2Via2l0LWZsZXg6IDEgMCBhdXRvOwor
ICAgIC1tcy1mbGV4OiAxIDAgYXV0bzsKKyAgICBmbGV4OiAxIDAgYXV0bzsKKyAgICBwYWRkaW5n
OiAzdncgMDsKKyAgICBmb250LXNpemU6IDJlbTsKK30KKworQG1lZGlhIHNjcmVlbiBhbmQgKG1p
bi1kZXZpY2Utd2lkdGg6IDEwMjRweCkgeworICAgICNpbnRyby5zZWxlY3RlZCB7CisgICAgICAg
IGhlaWdodDogNjAwcHg7CisgICAgfQorCisgICAgI2ludHJvIHAgeworICAgICAgICBtYXgtd2lk
dGg6IDgwMHB4OworICAgICAgICBtYXJnaW46IDAgYXV0bzsKKyAgICB9Cit9CisKKy8qIFJ1bm5p
bmcgdGVzdCBzZWN0aW9uICovCisjdGVzdC1jb250YWluZXIgeworICAgIGRpc3BsYXk6IC1tcy1m
bGV4Ym94OworICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKKyAgICBkaXNwbGF5OiBmbGV4Owor
CisgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBj
ZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICBhbGlnbi1pdGVtczog
Y2VudGVyOworICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisgICAgLW1zLWZs
ZXgtcGFjazogY2VudGVyOworICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOworfQorCisKKyN0
ZXN0LWNvbnRhaW5lciBpZnJhbWUgeworICAgIHdpZHRoOiAxMjAwcHg7CisgICAgaGVpZ2h0OiA2
MDBweDsKKyAgICBib3JkZXI6IDA7CisgICAgbWFyZ2luOiAwIGF1dG87Cit9CisKK0BtZWRpYSBz
Y3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoOiAxODAwcHgpIHsKKyAgICAjdGVzdC1jb250YWlu
ZXIgaWZyYW1lIHsKKyAgICAgICAgd2lkdGg6IDE2MDBweDsKKyAgICAgICAgaGVpZ2h0OiA4MDBw
eDsKKyAgICB9Cit9CisKKy8qIFJlc3VsdHMgc2VjdGlvbiAqLworI3Jlc3VsdHMgeworICAgIHRl
eHQtYWxpZ246IGNlbnRlcjsKK30KKyNzY29yZSB7CisgICAgZm9udC1zaXplOiA1ZW07CisgICAg
Zm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgbWFyZ2luOiAwOworfQorI3Jlc3VsdHMgZGl2IHsKKyAg
ICBkaXJlY3Rpb246IHJ0bDsKKworICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OworICAgIGRpc3Bs
YXk6IC13ZWJraXQtZmxleDsKKyAgICBkaXNwbGF5OiBmbGV4OworCisgICAgLW1zLWZsZXgtYWxp
Z246IGNlbnRlcjsKKyAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CisgICAgLXdlYmtp
dC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworICAgIC13ZWJr
aXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwor
ICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOworCisgICAgbWFyZ2luOiAzZW0gMDsKK30KKwor
I3Jlc3VsdHMgdGggeworICAgIHBhZGRpbmc6IC41ZW0gMDsKK30KKworI3Jlc3VsdHMtaGVhZGVy
IHRkLCAjcmVzdWx0cy1oZWFkZXIgdGggeworICAgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisjcmVz
dWx0cy1oZWFkZXIgdHIgdGQgeworICAgIHBhZGRpbmc6IC4yNWVtIC41ZW0gLjI1ZW0gMDsKK30K
KyNyZXN1bHRzLWRhdGEgdGQsICNyZXN1bHRzLWRhdGEgdGggeworICAgIHRleHQtYWxpZ246IHJp
Z2h0OworfQorI3Jlc3VsdHMtZGF0YSB0ciB0ZCB7CisgICAgcGFkZGluZzogLjI1ZW0gMDsKK30K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVy
L2FuaW1vbWV0ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1
bm5lci9hbmltb21ldGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNl
ZGNmYWUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVz
b3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpzCkBAIC0wLDAgKzEsODMgQEAKK3dpbmRvdy5iZW5j
aG1hcmtSdW5uZXJDbGllbnQgPSB7CisgICAgaXRlcmF0aW9uQ291bnQ6IDEsCisgICAgb3B0aW9u
czogbnVsbCwKKyAgICByZXN1bHRzOiBudWxsLAorCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24o
c3VpdGVzLCBvcHRpb25zKQorICAgIHsKKyAgICAgICAgdGhpcy50ZXN0c0NvdW50ID0gdGhpcy5p
dGVyYXRpb25Db3VudCAqIHN1aXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGNvdW50LCBzdWl0ZSkgeyBy
ZXR1cm4gY291bnQgKyBzdWl0ZS50ZXN0cy5sZW5ndGg7IH0sIDApOworICAgICAgICB0aGlzLm9w
dGlvbnMgPSBvcHRpb25zOworICAgIH0sCisKKyAgICB3aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbjog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5yZXN1bHRzID0gbmV3IFJlc3VsdHNEYXNo
Ym9hcmQoKTsKKyAgICB9LAorCisgICAgZGlkUnVuU3VpdGVzOiBmdW5jdGlvbihzdWl0ZXNTYW1w
bGVycykKKyAgICB7CisgICAgICAgIHRoaXMucmVzdWx0cy5wdXNoKHN1aXRlc1NhbXBsZXJzKTsK
KyAgICB9LAorCisgICAgZGlkRmluaXNoTGFzdEl0ZXJhdGlvbjogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVzdWx0cygpOworICAgIH0KK307CisK
K3dpbmRvdy5zZWN0aW9uc01hbmFnZXIgPQoreworICAgIHNob3dTZWN0aW9uOiBmdW5jdGlvbihz
ZWN0aW9uSWRlbnRpZmllciwgcHVzaFN0YXRlKQorICAgIHsKKyAgICAgICAgdmFyIGN1cnJlbnRT
ZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNlY3Rpb24uc2VsZWN0ZWQi
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY3VycmVudFNlY3Rpb25FbGVtZW50KTsKKworICAg
ICAgICB2YXIgbmV3U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0
aW9uSWRlbnRpZmllcik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5ld1NlY3Rpb25FbGVtZW50
KTsKKworICAgICAgICBjdXJyZW50U2VjdGlvbkVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2Vs
ZWN0ZWQiKTsKKyAgICAgICAgbmV3U2VjdGlvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2VsZWN0
ZWQiKTsKKworICAgICAgICBpZiAocHVzaFN0YXRlKQorICAgICAgICAgICAgaGlzdG9yeS5wdXNo
U3RhdGUoe3NlY3Rpb246IHNlY3Rpb25JZGVudGlmaWVyfSwgZG9jdW1lbnQudGl0bGUpOworICAg
IH0KK307CisKK3dpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyID0geworICAgIF9zdGFydEJlbmNo
bWFyazogZnVuY3Rpb24oc3VpdGVzLCBvcHRpb25zLCBmcmFtZUNvbnRhaW5lcklEKQorICAgIHsK
KyAgICAgICAgYmVuY2htYXJrUnVubmVyQ2xpZW50LmluaXRpYWxpemUoc3VpdGVzLCBvcHRpb25z
KTsKKyAgICAgICAgdmFyIGZyYW1lQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ZnJhbWVDb250YWluZXJJRCk7CisgICAgICAgIHZhciBydW5uZXIgPSBuZXcgQmVuY2htYXJrUnVu
bmVyKHN1aXRlcywgZnJhbWVDb250YWluZXIsIGJlbmNobWFya1J1bm5lckNsaWVudCk7CisgICAg
ICAgIHJ1bm5lci5ydW5NdWx0aXBsZUl0ZXJhdGlvbnMoKTsKKworICAgICAgICBzZWN0aW9uc01h
bmFnZXIuc2hvd1NlY3Rpb24oInRlc3QtY29udGFpbmVyIik7CisgICAgfSwKKworICAgIHN0YXJ0
QmVuY2htYXJrOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgb3B0aW9ucyA9IHsKKyAg
ICAgICAgICAgICJ0ZXN0LWludGVydmFsIjogMTAsCisgICAgICAgICAgICAiZGlzcGxheSI6ICJt
aW5pbWFsIiwKKyAgICAgICAgICAgICJhZGp1c3RtZW50IjogImFkYXB0aXZlIiwKKyAgICAgICAg
ICAgICJmcmFtZS1yYXRlIjogNTAsCisgICAgICAgICAgICAiZXN0aW1hdGVkLWZyYW1lLXJhdGUi
OiB0cnVlCisgICAgICAgIH07CisgICAgICAgIHRoaXMuX3N0YXJ0QmVuY2htYXJrKFN1aXRlcywg
b3B0aW9ucywgInRlc3QtY29udGFpbmVyIik7CisgICAgfSwKKworICAgIHNob3dSZXN1bHRzOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2NvcmUi
KS50ZXh0Q29udGVudCA9IGJlbmNobWFya1J1bm5lckNsaWVudC5yZXN1bHRzLnNjb3JlLnRvRml4
ZWQoMik7CisgICAgICAgIHZhciBkYXRhID0gYmVuY2htYXJrUnVubmVyQ2xpZW50LnJlc3VsdHMu
ZGF0YTsKKyAgICAgICAgdmFyIHRhYmxlID0gbmV3IFJlc3VsdHNUYWJsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0cy1oZWFkZXIiKSwKKyAgICAgICAgICAgIFt7IHRleHQ6IFN0cmlu
Z3MudGV4dC50ZXN0TmFtZSB9XSk7CisgICAgICAgIHRhYmxlLnNob3dJdGVyYXRpb25zKGRhdGFb
U3RyaW5ncy5qc29uLnJlc3VsdHMuaXRlcmF0aW9uc10sIGJlbmNobWFya1J1bm5lckNsaWVudC5v
cHRpb25zKTsKKworICAgICAgICB0YWJsZSA9IG5ldyBSZXN1bHRzVGFibGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdHMtZGF0YSIpLAorICAgICAgICAgICAgW3sgdGV4dDogU3RyaW5n
cy50ZXh0LnNjb3JlIH1dKTsKKyAgICAgICAgdGFibGUuc2hvd0l0ZXJhdGlvbnMoZGF0YVtTdHJp
bmdzLmpzb24ucmVzdWx0cy5pdGVyYXRpb25zXSwgYmVuY2htYXJrUnVubmVyQ2xpZW50Lm9wdGlv
bnMpOworCisgICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93U2VjdGlvbigicmVzdWx0cyIsIHRy
dWUpOworICAgIH0KK307CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBi
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcxMWExOTMuLjVmMGI1ZDMgMTAwNjQ0
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTUtMTItMTkgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IGJlbmNobWFyayBpbnRvIHR3byBkaWZmZXJlbnQg
cGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBuZXdlciB2ZXJzaW9uIG9mIGhhcm5lc3MgaW4gYSBuZXcgcGFnZS4gQ29uc29saWRhdGUgZGlm
ZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvCisgICAgICAgIHBhZ2VzLgorCisgICAgICAgICogQW5p
bW9tZXRlci9kZXZlbG9wZXIuaHRtbDogSW5jbHVkZSBydW5uZXIvYW5pbW9tZXRlci5qcy4gUmVu
YW1lIHRoZSBKUyBmdW5jdGlvbgorICAgICAgICB0byBydW4gdGhlIGJlbmNobWFyayB0byBzdGFy
dEJlbmNobWFyaygpIGluc3RlYWQgb2Ygc3RhcnRUZXN0KCkuIFJlbmFtZSAjcnVubmluZyB0bwor
ICAgICAgICAjdGVzdC1jb250YWluZXIuCisgICAgICAgICogQW5pbW9tZXRlci9pbmRleC5odG1s
OiBBZGRlZC4gU2ltaWxhcmx5IGNhbGxzIHN0YXJ0QmVuY2htYXJrKCkgYW5kIGhhcyAjdGVzdC1j
b250YWluZXIuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2Fu
aW1vbWV0ZXIuY3NzOiBNYWtlIHRoZSBjYW52YXMgMjoxICgxMjAwcHggeCA4MDBweCkKKyAgICAg
ICAgaW5zdGVhZCBvZiA0OjMuCisKKyAgICAgICAgU3BsaXQgb3V0IGJlbmNobWFya1J1bm5lckNs
aWVudCBhbmQgYmVuY2htYXJrQ29udHJvbGxlci4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVz
b3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzOiBNb3ZlIG5lZWRlZCBmdW5jdGlvbnMg
b3V0IG9mCisgICAgICAgIGJlbmNobWFya1J1bm5lckNsaWVudCwgYW5kIGxlYXZlIHRoZSByZXN0
IGhlcmUgdG8gZXh0ZW5kIHRoYXQgb2JqZWN0LiBHZXQgcmlkIG9mIF9yZXN1bHRzVGFibGUKKyAg
ICAgICAgYW5kIG1vdmUgcG9wdWxhdGluZyB0aGUgcmVzdWx0cyB0YWJsZSBpbnRvIGJlbmNobWFy
a0NvbnRyb2xsZXIuIFJlbmFtZSBfcmVzdWx0c0Rhc2hib2FyZAorICAgICAgICB0byByZXN1bHRz
IGFuZCBtYWtlIGl0IGFjY2Vzc2libGUgZm9yIG90aGVyIG9iamVjdHMgdG8gdXNlLgorICAgICAg
ICAod2lsbEFkZFRlc3RGcmFtZSk6IFRoaXMgaXMgdW5uZWNlc3NhcnkuIFJlbW92ZS4KKworICAg
ICAgICAod2luZG93LnNlY3Rpb25zTWFuYWdlci5zaG93U2NvcmUpOiBHcmFiIGl0IGZyb20gdGhl
IHJlc3VsdHMgb2JqZWN0IGluc3RlYWQgb2YKKyAgICAgICAgYmVuY2htYXJrUnVubmVyQ2xpZW50
LgorICAgICAgICAod2luZG93LnNlY3Rpb25zTWFuYWdlci5zaG93U2VjdGlvbik6IERlbGV0ZWQu
IE1vdmVkIHRvIHJ1bm5lci9hbmltb21ldGVyLmpzLgorCisgICAgICAgICh3aW5kb3cuYmVuY2ht
YXJrQ29udHJvbGxlci5fcnVuQmVuY2htYXJrKTogRGVsZXRlZC4gTW9zdGx5IG1vdmVkIGludG8g
X3N0YXJ0QmVuY2htYXJrLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIuc3Rh
cnRCZW5jaG1hcmspOiBSZWZhY3RvciB0byBjYWxsIF9zdGFydEJlbmNobWFyay4KKyAgICAgICAg
KHdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyLnNob3dSZXN1bHRzKTogSW5jbHVkZSBtb3N0IG9m
IGJlbmNobWFya1J1bm5lckNsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKCkKKyAgICAgICAg
aGVyZS4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5j
aG1hcmstcnVubmVyLmpzOgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fYXBw
ZW5kRnJhbWUpOiBSZW1vdmUgdW5uZWVkZWQgY2FsbCB0byB3aWxsQWRkVGVzdEZyYW1lLgorICAg
ICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanM6CisgICAgICAgIChSZXN1
bHRzRGFzaGJvYXJkKTogQ2hhbmdlIHRoZSBjbGFzcyB0byBwcm9jZXNzIHRoZSBzYW1wbGVyIGRh
dGEgb24tZGVtYW5kIGFuZCBob2xkIG9udG8gdGhhdCBkYXRhCisgICAgICAgIGZvciBsYXRlciBy
ZWZlcmVuY2luZy4KKyAgICAgICAgKFJlc3VsdHNEYXNoYm9hcmQucHJvdG90eXBlLnRvSlNPTik6
IERlbGV0ZWQuCisgICAgICAgIChSZXN1bHRzRGFzaGJvYXJkLnByb3RvdHlwZS5fcHJvY2Vzc0Rh
dGEpOiBSZW5hbWUgdG9KU09OIHRvIF9wcm9jZXNzRGF0YSBzaW5jZSBpdCdzIG5vdCByZWFsbHkK
KyAgICAgICAgb3V0cHV0dGluZyBKU09OLiBTdG9yZSB0aGUgcHJvY2Vzc2VkIGRhdGEgaW50byBh
IG1lbWJlciB2YXJpYWJsZSB0aGF0IGNhbiBiZSByZWZlcmVuY2VkIGxhdGVyLgorICAgICAgICAo
UmVzdWx0c0Rhc2hib2FyZC5wcm90b3R5cGUuZ2V0IGRhdGEpOiBQcm9jZXNzIHRoZSBkYXRhIGlm
IGl0IGhhc24ndCBhbHJlYWR5LgorICAgICAgICAoUmVzdWx0c0Rhc2hib2FyZC5wcm90b3R5cGUu
Z2V0IHNjb3JlKTogUHJvY2VzcyB0aGUgZGF0YSBpZiBpdCBoYXNuJ3QgYWxyZWFkeSwgdGhlbiBy
ZXR1cm4gdGhlCisgICAgICAgIGFnZ3JlZ2F0ZSBzY29yZS4KKyAgICAgICAgKFJlc3VsdHNUYWJs
ZS5wcm90b3R5cGUuX3Nob3dIZWFkZXIpOiBXaGVuIG91dHB1dHRpbmcgdGhlIHJlc3VsdHMgdG8g
YSB0YWJsZSwgZG9uJ3QgZm9yY2UgdGhlCisgICAgICAgIG5lZWQgZm9yIGFuIGVtcHR5IGNoaWxk
cmVuIGFycmF5LiBUaGlzIHdhcyB0byBhbGxvdyBmb3IgYSBoZWFkZXIgcm93IGluIHRoZSB0YWJs
ZSB0aGF0IHNwYW5uZWQKKyAgICAgICAgbXVsdGlwbGUgY29sdW1ucy4gSW4gdGhlIHNpbXBsZXIg
aGFybmVzcywgdGhpcyBpcyBub3QgbmVlZGVkLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3Rv
dHlwZS5fc2hvd0VtcHR5Q2VsbHMpOgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5f
c2hvd1Rlc3QpOiBUaGlzIGhhcmRjb2RlZCB0aGUgY29sdW1ucy4gQXQgbGVhc3QgZm9yIHRoZSBu
YW1lIGFuZCBzY29yZSwKKyAgICAgICAgd2hpY2ggaXMgdGhlIGJhcmUgbWluaW11bSBuZWVkZWQg
Zm9yIHRoZSBzaW1wbGVyIGhhcm5lc3MsIGtleSBvZmYgb2YgdGhlIGhlYWRlciBuYW1lIHByb3Zp
ZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNz
czogQWRkZWQuIFVzZSBhIHNpbWlsYXIgMjoxIHJhdGlvLiBUaGUgc2NvcmUgdGFibGVzIGFyZQor
ICAgICAgICBzcGxpdCBpbnRvIHRoZSBkYXRhIGFuZCB0aGUgaGVhZGVycywgYW5kIGFyZSBhbHNv
IGRpc3BsYXllZCBSVEwgc28gdGhhdCBhIGxhdGVyIHBhdGNoIGFsbG93cyBhCisgICAgICAgIHVz
ZXIgdG8gY29weS1wYXN0ZSB0aGUgZGF0YSBlYXNpbHkuCisgICAgICAgICogQW5pbW9tZXRlci9y
ZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuanM6IEFkZGVkLiBVc2UgYSBzaW1wbGVyIHZlcnNp
b24gb2YgYmVuY2htYXJrUnVubmVyQ2xpZW50LgorICAgICAgICBUaGUgZGVidWcgaGFybmVzcyB3
aWxsIGV4dGVuZCB0aGVzZSBjbGFzc2VzLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NvbnRy
b2xsZXIuX3N0YXJ0QmVuY2htYXJrKTogVXNlZCBieSBib3RoIGhhcm5lc3Nlcy4KKyAgICAgICAg
KHdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0QmVuY2htYXJrKTogU2V0IGhhcmQtY29k
ZWQgb3B0aW9ucy4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyLnNob3dSZXN1
bHRzKTogSW5jbHVkZXMgbW9zdCBvZiBiZW5jaG1hcmtSdW5uZXJDbGllbnQuZGlkRmluaXNoTGFz
dEl0ZXJhdGlvbigpCisgICAgICAgIGhlcmUuCisKIDIwMTUtMTItMTggIEpvbiBMZWUgIDxqb25s
ZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFNwbGl0IGJlbmNobWFyayBpbnRvIHR3byBkaWZmZXJl
bnQgcGFnZXMKLS0gCjIuNS40IChBcHBsZSBHaXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267863</attachid>
            <date>2015-12-23 15:29:37 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>5. A little stylistic cleanup.</desc>
            <filename>0005-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>8084</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSA1ZWVkOTFmYzRmMGQ0MzdmZTlkNzc1NzYzM2E2NmRiZTI1NDdjYzVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTYXQs
IDE5IERlYyAyMDE1IDAwOjMwOjI5IC0wODAwClN1YmplY3Q6IFtQQVRDSCAwNS8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpB
IGxpdHRsZSBzdHlsaXN0aWMgY2xlYW51cC4KCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWct
cnVubmVyL2JlbmNobWFyay1ydW5uZXIuanM6CiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5z
aW9ucy5qczoKKHdpbmRvdy5Eb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KToKKiBBbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzOgooQmVuY2htYXJrLnByb3RvdHlwZS5yZWNv
cmQpOgoqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzOgooU3RhZ2VCZW5jaG1h
cmsucHJvdG90eXBlLnNob3dSZXN1bHRzKTogUmV2ZXJzZSBwcm9ncmVzcyBhbmQgbWVzc2FnZS4K
VGhlIG1lc3NhZ2UgYXBwZWFycyBsZXNzIGZyZXF1ZW50bHkgdGhhbiB0aGUgcHJvZ3Jlc3MuCiog
QW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanM6CihTaW1w
bGVDYW52YXNCZW5jaG1hcmspOiBSZW1vdmUgdW51c2VkIG9wdGlvbnMuCi0tLQogLi4uL3Jlc291
cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcyAgICAgfCAyNiArKysrKysrKysr
Ky0tLS0tLS0tLS0tCiAuLi4vQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyAgICAg
ICAgICAgICB8ICAyICstCiAuLi4vQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcyAg
ICAgICAgICAgICB8ICAyICstCiAuLi4vQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2Uu
anMgICAgICAgICAgICB8ICAyICstCiAuLi4vdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUt
Y2FudmFzLmpzICAgICAgICB8ICAzIC0tLQogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAyMCArKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFu
Z2VkLCAzNiBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmst
cnVubmVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1y
dW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcwppbmRleCA5MjI4MTA5Li5mM2MzYWQyIDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9i
ZW5jaG1hcmstcnVubmVyLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMKQEAgLTksMTggKzksMTggQEAg
ZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyU3RhdGUoc3VpdGVzKQogQmVuY2htYXJrUnVubmVyU3Rh
dGUucHJvdG90eXBlLmN1cnJlbnRTdWl0ZSA9IGZ1bmN0aW9uKCkKIHsKICAgICByZXR1cm4gdGhp
cy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdOwotfQorfTsKIAogQmVuY2htYXJrUnVubmVyU3Rh
dGUucHJvdG90eXBlLmN1cnJlbnRUZXN0ID0gZnVuY3Rpb24oKQogewogICAgIHZhciBzdWl0ZSA9
IHRoaXMuY3VycmVudFN1aXRlKCk7CiAgICAgcmV0dXJuIHN1aXRlID8gc3VpdGUudGVzdHNbdGhp
cy5fdGVzdEluZGV4XSA6IG51bGw7Ci19Cit9OwogCiBCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90
b3R5cGUuaXNGaXJzdFRlc3QgPSBmdW5jdGlvbigpCiB7CiAgICAgcmV0dXJuICF0aGlzLl90ZXN0
SW5kZXg7Ci19Cit9OwogCiBCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUubmV4dCA9IGZ1
bmN0aW9uKCkKIHsKQEAgLTM2LDcgKzM2LDcgQEAgQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90
eXBlLm5leHQgPSBmdW5jdGlvbigpCiAgICAgfSB3aGlsZSAodGhpcy5fc3VpdGVJbmRleCA8IHRo
aXMuX3N1aXRlcy5sZW5ndGggJiYgdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdLmRpc2Fi
bGVkKTsKIAogICAgIHJldHVybiB0aGlzOwotfQorfTsKIAogQmVuY2htYXJrUnVubmVyU3RhdGUu
cHJvdG90eXBlLnByZXBhcmVDdXJyZW50VGVzdCA9IGZ1bmN0aW9uKHJ1bm5lciwgZnJhbWUpCiB7
CkBAIC00OCw3ICs0OCw3IEBAIEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5wcmVwYXJl
Q3VycmVudFRlc3QgPSBmdW5jdGlvbihydW5uZXIsIGZyYW1lKQogICAgIH0KICAgICBmcmFtZS5z
cmMgPSAiLi4vdGVzdHMvIiArIHRlc3QudXJsOwogICAgIHJldHVybiBwcm9taXNlOwotfQorfTsK
IAogZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyKHN1aXRlcywgZnJhbWVDb250YWluZXIsIGNsaWVu
dCkKIHsKQEAgLTcxLDcgKzcxLDcgQEAgQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS53YWl0Rm9y
RWxlbWVudCA9IGZ1bmN0aW9uKHNlbGVjdG9yKQogCiAgICAgcmVzb2x2ZUlmUmVhZHkoKTsKICAg
ICByZXR1cm4gcHJvbWlzZTsKLX0KK307CiAKIEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2Fw
cGVuZEZyYW1lID0gZnVuY3Rpb24oKQogewpAQCAtODEsNyArODEsNyBAQCBCZW5jaG1hcmtSdW5u
ZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9mcmFtZUNv
bnRhaW5lci5pbnNlcnRCZWZvcmUoZnJhbWUsIHRoaXMuX2ZyYW1lQ29udGFpbmVyLmZpcnN0Q2hp
bGQpOwogICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7CiAgICAgcmV0dXJuIGZyYW1lOwotfQorfTsK
IAogQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcmVtb3ZlRnJhbWUgPSBmdW5jdGlvbigpCiB7
CkBAIC04OSw3ICs4OSw3IEBAIEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3JlbW92ZUZyYW1l
ID0gZnVuY3Rpb24oKQogICAgICAgICB0aGlzLl9mcmFtZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KHRoaXMuX2ZyYW1lKTsKICAgICAgICAgdGhpcy5fZnJhbWUgPSBudWxsOwogICAgIH0KLX0KK307
CiAKIEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzID0g
ZnVuY3Rpb24oc3RhdGUpCiB7CkBAIC0xMTksNyArMTE5LDcgQEAgQmVuY2htYXJrUnVubmVyLnBy
b3RvdHlwZS5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMgPSBmdW5jdGlvbihzdGF0ZSkKICAgICB9
KTsKICAgICAKICAgICByZXR1cm4gcHJvbWlzZTsKLX0KK307CiAKIEJlbmNobWFya1J1bm5lci5w
cm90b3R5cGUuc3RlcCA9IGZ1bmN0aW9uKHN0YXRlKQogewpAQCAtMTQ0LDcgKzE0NCw3IEBAIEJl
bmNobWFya1J1bm5lci5wcm90b3R5cGUuc3RlcCA9IGZ1bmN0aW9uKHN0YXRlKQogICAgIHJldHVy
biBzdGF0ZS5wcmVwYXJlQ3VycmVudFRlc3QodGhpcywgdGhpcy5fZnJhbWUpLnRoZW4oZnVuY3Rp
b24ocHJlcGFyZVJldHVyblZhbHVlKSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ydW5UZXN0QW5k
UmVjb3JkUmVzdWx0cyhzdGF0ZSk7CiAgICAgfS5iaW5kKHRoaXMpKTsKLX0KK307CiAKIEJlbmNo
bWFya1J1bm5lci5wcm90b3R5cGUucnVuQWxsU3RlcHMgPSBmdW5jdGlvbihzdGFydGluZ1N0YXRl
KQogewpAQCAtMTUzLDcgKzE1Myw3IEBAIEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuQWxs
U3RlcHMgPSBmdW5jdGlvbihzdGFydGluZ1N0YXRlKQogICAgICAgICBpZiAobmV4dFN0YXRlKQog
ICAgICAgICAgICAgbmV4dENhbGxlZShuZXh0U3RhdGUpOwogICAgIH0pOwotfQorfTsKIAogQmVu
Y2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5NdWx0aXBsZUl0ZXJhdGlvbnMgPSBmdW5jdGlvbigp
CiB7CkBAIC0xNzIsNyArMTcyLDcgQEAgQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5NdWx0
aXBsZUl0ZXJhdGlvbnMgPSBmdW5jdGlvbigpCiAgICAgICAgIHNlbGYuX2NsaWVudC53aWxsU3Rh
cnRGaXJzdEl0ZXJhdGlvbigpOwogCiAgICAgc2VsZi5ydW5BbGxTdGVwcygpOwotfQorfTsKIAog
QmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmluYWxpemUgPSBmdW5jdGlvbigpCiB7CkBAIC0x
ODMsNCArMTgzLDQgQEAgQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmluYWxpemUgPSBmdW5j
dGlvbigpCiAKICAgICBpZiAodGhpcy5fcnVuTmV4dEl0ZXJhdGlvbikKICAgICAgICAgdGhpcy5f
cnVuTmV4dEl0ZXJhdGlvbigpOwotfQorfTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcwppbmRleCBlM2RhMmU5Li44YjI2ZWRkIDEw
MDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lv
bnMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNp
b25zLmpzCkBAIC0xMzQsNyArMTM0LDcgQEAgU2ltcGxlUHJvbWlzZS5wcm90b3R5cGUucmVzb2x2
ZSA9IGZ1bmN0aW9uICh2YWx1ZSkKIAogd2luZG93LkRvY3VtZW50RXh0ZW5zaW9uID0KIHsKLSAg
ICBjcmVhdGVFbGVtZW50IDogZnVuY3Rpb24obmFtZSwgYXR0cnMsIHBhcmVudEVsZW1lbnQpCisg
ICAgY3JlYXRlRWxlbWVudDogZnVuY3Rpb24obmFtZSwgYXR0cnMsIHBhcmVudEVsZW1lbnQpCiAg
ICAgewogICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7
CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJj
ZXMvbWFpbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
bWFpbi5qcwppbmRleCBiYzM5NTQxLi42ODZmMDRkIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzCkBAIC0xOTUsNyArMTk1LDcg
QEAgQmVuY2htYXJrLnByb3RvdHlwZSA9CiAgICAgICAgIGlmIChzdGFnZSAhPSBCZW5jaG1hcmtT
dGF0ZS5zdGFnZXMuRklOSVNIRUQgJiYgY3VycmVudFRpbWVPZmZzZXQgPCB0aGlzLl9yZWNvcmRU
aW1lT2Zmc2V0ICsgdGhpcy5fcmVjb3JkSW50ZXJ2YWwpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgdGhpcy5zaG93UmVzdWx0cyh0aGlzLl9zdGF0ZS5jdXJyZW50TWVzc2FnZSgpLCB0
aGlzLl9zdGF0ZS5jdXJyZW50UHJvZ3Jlc3MoKSk7CisgICAgICAgIHRoaXMuc2hvd1Jlc3VsdHMo
dGhpcy5fc3RhdGUuY3VycmVudFByb2dyZXNzKCksIHRoaXMuX3N0YXRlLmN1cnJlbnRNZXNzYWdl
KCkpOwogICAgICAgICB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7
CiAgICAgfSwKICAgICAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvcmVzb3VyY2VzL3N0YWdlLmpzCmluZGV4IGFkYjMyMzAuLjg4ODg5YTkgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwpA
QCAtMTY3LDcgKzE2Nyw3IEBAIFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0
aW9uKCkKICAgICByZXR1cm4gdGhpcy5fc3RhZ2UuY2xlYXIoKTsKIH0KIAotU3RhZ2VCZW5jaG1h
cmsucHJvdG90eXBlLnNob3dSZXN1bHRzID0gZnVuY3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpCitT
dGFnZUJlbmNobWFyay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMgPSBmdW5jdGlvbihwcm9ncmVzcywg
bWVzc2FnZSkKIHsKICAgICBpZiAoIXRoaXMuX3JlY29yZFRhYmxlIHx8ICF0aGlzLl9wcm9ncmVz
c0JhciB8fCAhdGhpcy5fdGVzdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZh
cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2Vz
L3NpbXBsZS1jYW52YXMuanMKaW5kZXggYWRlZWYxOC4uZTRmNmZmMiAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNh
bnZhcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jl
c291cmNlcy9zaW1wbGUtY2FudmFzLmpzCkBAIC01Miw5ICs1Miw2IEBAIFNpbXBsZUNhbnZhc0Fu
aW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQogCiAKIGZ1bmN0aW9uIFNpbXBs
ZUNhbnZhc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKSB7Ci0gICAgb3B0aW9uc1siZ2FpbiJdID0gNjsKLSAgICBvcHRpb25zWyJhZGRMaW1p
dCJdID0gMTAwOwotICAgIG9wdGlvbnNbInJlbW92ZUxpbWl0Il0gPSAxMDAwOwogICAgIFN0YWdl
QmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0Jhcik7CiB9CiBTaW1wbGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZjBi
NWQzLi43MDg5ZTM2IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDI2IEBACiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgQSBsaXR0bGUgc3R5bGlzdGlj
IGNsZWFudXAuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIv
YmVuY2htYXJrLXJ1bm5lci5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9leHRl
bnNpb25zLmpzOgorICAgICAgICAod2luZG93LkRvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1l
bnQpOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanM6CisgICAg
ICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnJlY29yZCk6CisgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanM6CisgICAgICAgIChTdGFnZUJlbmNobWFyay5wcm90b3R5
cGUuc2hvd1Jlc3VsdHMpOiBSZXZlcnNlIHByb2dyZXNzIGFuZCBtZXNzYWdlLgorICAgICAgICBU
aGUgbWVzc2FnZSBhcHBlYXJzIGxlc3MgZnJlcXVlbnRseSB0aGFuIHRoZSBwcm9ncmVzcy4KKyAg
ICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5q
czoKKyAgICAgICAgKFNpbXBsZUNhbnZhc0JlbmNobWFyayk6IFJlbW92ZSB1bnVzZWQgb3B0aW9u
cy4KKworMjAxNS0xMi0xOSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAg
U3BsaXQgYmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDU4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgQWRkIG5ld2VyIHZlcnNpb24gb2YgaGFy
bmVzcyBpbiBhIG5ldyBwYWdlLiBDb25zb2xpZGF0ZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0
d28KICAgICAgICAgcGFnZXMuCiAKLS0gCjIuNS40IChBcHBsZSBHaXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267864</attachid>
            <date>2015-12-23 15:31:19 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>6. Fix a few fly-by errors.</desc>
            <filename>0006-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>3158</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBkOGNiNzQ4NWFiNTUwMGJkYjRlMTAzMTg1Nzk2NTJlOWU0NjdiY2I5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTYXQs
IDE5IERlYyAyMDE1IDAwOjMyOjA4IC0wODAwClN1YmplY3Q6IFtQQVRDSCAwNi8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpG
aXggYSBmZXcgZmx5LWJ5IGVycm9ycy4KCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVu
bmVyL2JlbmNobWFyay1ydW5uZXIuanM6CihCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUu
cHJlcGFyZUN1cnJlbnRUZXN0KTogVXBkYXRlIHRoZSBmcmFtZSByZWxhdGl2ZSBwYXRoCnNpbmNl
IHRoZSBmaWxlcyBhcmUgbm93IGluIHRoZSB0b3AgZGlyZWN0b3J5IGluc3RlYWQgb2YgaW5zaWRl
IHJ1bm5lci8uCihCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVz
dWx0cyk6IEluY29ycmVjdCByZWZlcmVuY2UgdG8gZnVuY3Rpb24uCihCZW5jaG1hcmtSdW5uZXIu
cHJvdG90eXBlLnN0ZXApOiBNZW1iZXIgdmFyaWFibGUgaXMgbmV2ZXIgdXNlZC4KLS0tCiAuLi4v
QW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMgfCAg
NSArKy0tLQogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgMTUgKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2Vy
dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFy
ay1ydW5uZXIuanMKaW5kZXggZjNjM2FkMi4uZWQzMTc0NSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5l
ci5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1
bm5lci9iZW5jaG1hcmstcnVubmVyLmpzCkBAIC00Niw3ICs0Niw3IEBAIEJlbmNobWFya1J1bm5l
clN0YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVudFRlc3QgPSBmdW5jdGlvbihydW5uZXIsIGZy
YW1lKQogICAgIGZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICBzdWl0ZS5wcmVw
YXJlKHJ1bm5lciwgZnJhbWUuY29udGVudFdpbmRvdywgZnJhbWUuY29udGVudERvY3VtZW50KS50
aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeyBwcm9taXNlLnJlc29sdmUocmVzdWx0KTsgfSk7CiAgICAg
fQotICAgIGZyYW1lLnNyYyA9ICIuLi90ZXN0cy8iICsgdGVzdC51cmw7CisgICAgZnJhbWUuc3Jj
ID0gInRlc3RzLyIgKyB0ZXN0LnVybDsKICAgICByZXR1cm4gcHJvbWlzZTsKIH07CiAKQEAgLTk3
LDcgKzk3LDcgQEAgQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFuZFJlY29yZFJl
c3VsdHMgPSBmdW5jdGlvbihzdGF0ZSkKICAgICB2YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50U3Vp
dGUoKTsKICAgICB2YXIgdGVzdCA9IHN0YXRlLmN1cnJlbnRUZXN0KCk7CiAgICAgCi0gICAgaWYg
KHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3RUZXN0KQorICAgIGlmICh0
aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LndpbGxSdW5UZXN0KQogICAgICAgICB0aGlzLl9j
bGllbnQud2lsbFJ1blRlc3Qoc3VpdGUsIHRlc3QpOwogCiAgICAgdmFyIGNvbnRlbnRXaW5kb3cg
PSB0aGlzLl9mcmFtZS5jb250ZW50V2luZG93OwpAQCAtMTM3LDcgKzEzNyw2IEBAIEJlbmNobWFy
a1J1bm5lci5wcm90b3R5cGUuc3RlcCA9IGZ1bmN0aW9uKHN0YXRlKQogICAgIH0KIAogICAgIGlm
IChzdGF0ZS5pc0ZpcnN0VGVzdCgpKSB7Ci0gICAgICAgIHRoaXMuX21hc3VyZWRWYWx1ZXNGb3JD
dXJyZW50U3VpdGUgPSB7fTsKICAgICAgICAgdGhpcy5fYXBwZW5kRnJhbWUoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNzA4OWUzNi4uNDhjN2UxMSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTUs
NiArNSwyMSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAg
ICAgIEZpeCBhIGZldyBmbHktYnkgZXJyb3JzLgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNv
dXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanM6CisgICAgICAgIChCZW5jaG1h
cmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUucHJlcGFyZUN1cnJlbnRUZXN0KTogVXBkYXRlIHRoZSBm
cmFtZSByZWxhdGl2ZSBwYXRoCisgICAgICAgIHNpbmNlIHRoZSBmaWxlcyBhcmUgbm93IGluIHRo
ZSB0b3AgZGlyZWN0b3J5IGluc3RlYWQgb2YgaW5zaWRlIHJ1bm5lci8uCisgICAgICAgIChCZW5j
aG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyk6IEluY29ycmVj
dCByZWZlcmVuY2UgdG8gZnVuY3Rpb24uCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90
eXBlLnN0ZXApOiBNZW1iZXIgdmFyaWFibGUgaXMgbmV2ZXIgdXNlZC4KKworMjAxNS0xMi0xOSAg
Sm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgYmVuY2htYXJrIGlu
dG8gdHdvIGRpZmZlcmVudCBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUyNDU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKICAgICAgICAgQSBsaXR0bGUgc3R5bGlzdGljIGNsZWFudXAuCiAKICAgICAgICAgKiBB
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczoKLS0g
CjIuNS40IChBcHBsZSBHaXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267865</attachid>
            <date>2015-12-23 15:31:45 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>7. Make it possible to select</desc>
            <filename>0007-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>3814</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSAwYmYzN2NhMTJiZjBmNjlmYzI5YTFmMjQzYjhkYmJkOTMxYjJlZGY3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTYXQs
IDE5IERlYyAyMDE1IDAwOjM0OjA3IC0wODAwClN1YmplY3Q6IFtQQVRDSCAwNy8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpN
YWtlIGl0IHBvc3NpYmxlIHRvIHNlbGVjdCB0aGUgc2NvcmVzLCBvciB0aGUgd2hvbGUgdGFibGUg
ZGF0YSwKYnkgY3ljbGluZyB0aHJvdWdoIGRpZmZlcmVudCBzZWxlY3Rpb25zIHRocm91Z2gga2V5
IHByZXNzIG9mICdzJy4KCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIu
anM6Cih3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVzdWx0cyk6IEF0dGFjaCBhIGtl
eXByZXNzIGhhbmRsZXIKaWYgaXQgaGFzbid0IGJlZW4gYWRkZWQgYWxyZWFkeS4KKHdpbmRvdy5i
ZW5jaG1hcmtDb250cm9sbGVyLnNlbGVjdFJlc3VsdHMpOgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2Vz
L3J1bm5lci90ZXN0cy5qczogQ3ljbGUgdGhyb3VnaCBkaWZmZXJlbnQKcmFuZ2VzLgotLS0KIC4u
Li9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5qcyAgICAgIHwgMzMgKysr
KysrKysrKysrKysrKysrKysrKwogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAxNyArKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNl
cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291
cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
ZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuanMKaW5kZXggM2VkY2ZhZS4uNzU4ZTBkZSAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5p
bW9tZXRlci5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1
bm5lci9hbmltb21ldGVyLmpzCkBAIC02OCw2ICs2OCwxMSBAQCB3aW5kb3cuYmVuY2htYXJrQ29u
dHJvbGxlciA9IHsKIAogICAgIHNob3dSZXN1bHRzOiBmdW5jdGlvbigpCiAgICAgeworICAgICAg
ICBpZiAoIXRoaXMuYWRkZWRLZXlFdmVudCkgeworICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigia2V5cHJlc3MiLCB0aGlzLnNlbGVjdFJlc3VsdHMsIGZhbHNlKTsKKyAgICAg
ICAgICAgIHRoaXMuYWRkZWRLZXlFdmVudCA9IHRydWU7CisgICAgICAgIH0KKwogICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2NvcmUiKS50ZXh0Q29udGVudCA9IGJlbmNobWFya1J1
bm5lckNsaWVudC5yZXN1bHRzLnNjb3JlLnRvRml4ZWQoMik7CiAgICAgICAgIHZhciBkYXRhID0g
YmVuY2htYXJrUnVubmVyQ2xpZW50LnJlc3VsdHMuZGF0YTsKICAgICAgICAgdmFyIHRhYmxlID0g
bmV3IFJlc3VsdHNUYWJsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cy1oZWFkZXIi
KSwKQEAgLTc5LDUgKzg0LDMzIEBAIHdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyID0gewogICAg
ICAgICB0YWJsZS5zaG93SXRlcmF0aW9ucyhkYXRhW1N0cmluZ3MuanNvbi5yZXN1bHRzLml0ZXJh
dGlvbnNdLCBiZW5jaG1hcmtSdW5uZXJDbGllbnQub3B0aW9ucyk7CiAKICAgICAgICAgc2VjdGlv
bnNNYW5hZ2VyLnNob3dTZWN0aW9uKCJyZXN1bHRzIiwgdHJ1ZSk7CisgICAgfSwKKworICAgIHNl
bGVjdFJlc3VsdHM6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LmNo
YXJDb2RlICE9IDExNSkgLy8gJ3MnCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZXZl
bnQudGFyZ2V0LnNlbGVjdFJhbmdlID0gKChldmVudC50YXJnZXQuc2VsZWN0UmFuZ2UgfHwgMCkg
KyAxKSAlIDM7CisKKyAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24o
KTsKKyAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOworICAgICAgICB2YXIgcmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgICBzd2l0Y2ggKGV2ZW50LnRhcmdl
dC5zZWxlY3RSYW5nZSkgeworICAgICAgICAgICAgY2FzZSAwOiB7CisgICAgICAgICAgICAgICAg
cmFuZ2Uuc2V0U3RhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjb3JlIiksIDApOworICAg
ICAgICAgICAgICAgIHJhbmdlLnNldEVuZEFmdGVyKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNy
ZXN1bHRzLWRhdGEgPiB0cjpsYXN0LW9mLXR5cGUiKSwgMCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIDE6IHsKKyAgICAgICAgICAgICAg
ICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjb3Jl
IikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y2FzZSAyOiB7CisgICAgICAgICAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0cy1kYXRhIikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7
CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDhjN2UxMS4uYjE2YTJiZiAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFu
Z2VMb2cKQEAgLTUsNiArNSwyMyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgogCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gc2VsZWN0IHRoZSBzY29yZXMsIG9y
IHRoZSB3aG9sZSB0YWJsZSBkYXRhLAorICAgICAgICBieSBjeWNsaW5nIHRocm91Z2ggZGlmZmVy
ZW50IHNlbGVjdGlvbnMgdGhyb3VnaCBrZXkgcHJlc3Mgb2YgJ3MnLgorCisgICAgICAgICogQW5p
bW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuanM6CisgICAgICAgICh3aW5kb3cu
YmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVzdWx0cyk6IEF0dGFjaCBhIGtleXByZXNzIGhhbmRs
ZXIKKyAgICAgICAgaWYgaXQgaGFzbid0IGJlZW4gYWRkZWQgYWxyZWFkeS4KKyAgICAgICAgKHdp
bmRvdy5iZW5jaG1hcmtDb250cm9sbGVyLnNlbGVjdFJlc3VsdHMpOgorICAgICAgICAqIEFuaW1v
bWV0ZXIvcmVzb3VyY2VzL3J1bm5lci90ZXN0cy5qczogQ3ljbGUgdGhyb3VnaCBkaWZmZXJlbnQK
KyAgICAgICAgcmFuZ2VzLgorCisyMDE1LTEyLTE5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNv
bT4KKworICAgICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlmZmVyZW50IHBhZ2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI0NTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBGaXggYSBmZXcg
Zmx5LWJ5IGVycm9ycy4KIAogICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1
bm5lci9iZW5jaG1hcmstcnVubmVyLmpzOgotLSAKMi41LjQgKEFwcGxlIEdpdC02MSkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267866</attachid>
            <date>2015-12-23 15:32:11 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>8. Add tests to &apos;animometer&apos; suite.</desc>
            <filename>0008-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>15310</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBhYWI2NWExMjFhNTQwZDAyOGNjNTc4N2U4MGY5NTAzNzM0MTRlMDc2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTYXQs
IDE5IERlYyAyMDE1IDAwOjQ3OjM1IC0wODAwClN1YmplY3Q6IFtQQVRDSCAwOC8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpB
ZGQgdGVzdHMgdG8gJ2FuaW1vbWV0ZXInIHN1aXRlLgoKKiBBbmltb21ldGVyL3Jlc291cmNlcy9y
dW5uZXIvdGVzdHMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvY2FudmFzLXN0YWdlLmh0
bWw6IEFkZGVkLgoqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3Rh
Z2UuanM6IEFkZGVkLgoqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMt
dGVzdHMuanM6IEFkZGVkLgoqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9zdGFn
ZS5jc3M6IEFkZGVkLgotLS0KIC4uLi9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMu
anMgICAgICAgICAgIHwgIDEyICsrCiAuLi4vQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvY2FudmFz
LXN0YWdlLmh0bWwgICAgICB8ICAxOCArKwogLi4uL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2Fu
dmFzLXN0YWdlLmpzICAgICAgICAgfCAgNjcgKysrKysrKwogLi4uL3Rlc3RzL21hc3Rlci9yZXNv
dXJjZXMvY2FudmFzLXRlc3RzLmpzICAgICAgICAgfCAyMDggKysrKysrKysrKysrKysrKysrKysr
CiAuLi4vQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL3N0YWdlLmNzcyAgICB8ICAx
NyArKwogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgMTUgKysKIDYgZmlsZXMgY2hhbmdlZCwgMzM3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL2NhbnZhcy1z
dGFnZS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzCiBjcmVhdGUgbW9kZSAxMDA2
NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2Fu
dmFzLXRlc3RzLmpzCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvc3RhZ2UuY3NzCgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci90ZXN0cy5qcwppbmRleCBhMGFh
Yzk0Li5mN2I3ZDc1IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVz
b3VyY2VzL3J1bm5lci90ZXN0cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL3J1bm5lci90ZXN0cy5qcwpAQCAtMTcsNiArMTcsMTggQEAgdmFyIFN1aXRlcyA9
IFtdOwogCiBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkFuaW1vbWV0ZXIiLAogICAgIFsKKyAgICAg
ICAgeworICAgICAgICAgICAgdXJsOiAibWFzdGVyL2NhbnZhcy1zdGFnZS5odG1sP3BhdGhUeXBl
PWFyY3MiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBhcmNzIgorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICB1cmw6ICJtYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWw/cGF0aFR5
cGU9bGluZVBhdGgmbGluZUpvaW49cm91bmQiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBs
aW5lIHBhdGgsIHJvdW5kIGpvaW4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
IHVybDogIm1hc3Rlci9jYW52YXMtc3RhZ2UuaHRtbD9wYXRoVHlwZT1saW5lJmxpbmVDYXA9c3F1
YXJlIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgbGluZSBzZWdtZW50cyIKKyAgICAgICAg
fSwKICAgICBdCiApKTsKIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL21hc3Rlci9jYW52YXMtc3RhZ2UuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9tYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uM2Y0NmFlOQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWwKQEAgLTAsMCArMSwx
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InJlc291cmNlcy9zdGFnZS5jc3MiPgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy9jYW52YXMtc3RhZ2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvY2FudmFzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52
YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1z
dGFnZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3Vy
Y2VzL2NhbnZhcy1zdGFnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
ZDFkMmM2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzCkBAIC0wLDAgKzEsNjcgQEAKK2Z1
bmN0aW9uIFNpbXBsZUNhbnZhc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMsIGNhbnZhc09iamVjdCkK
K3sKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMub3B0
aW9ucyA9IG9wdGlvbnM7CisgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRl
eHQoIjJkIik7CisgICAgdGhpcy5jYW52YXNPYmplY3QgPSBjYW52YXNPYmplY3Q7CisgICAgdGhp
cy5fb2JqZWN0cyA9IFtdOworfQorU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gU2ltcGxlQ2FudmFzU3RhZ2U7CitTaW1wbGVDYW52YXNTdGFnZS5wcm90b3R5
cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIGNvbnNvbGUubG9nKCJ0dW5lICIgKyBj
b3VudCk7CisgICAgaWYgKGNvdW50ID09IDApCisgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3Rz
Lmxlbmd0aDsKKworICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICAgLy8gRm9yIHBhdGgtYmFz
ZWQgdGVzdHMsIHVzZSB0aGUgb2JqZWN0IGxlbmd0aCBhcyBhIG1heGltdW0gY29vcmRpbmF0ZSB2
YWx1ZQorICAgICAgICAvLyB0byBtYWtlIGl0IGVhc2llciB0byBzZWUgd2hhdCB0aGUgdGVzdCBp
cyBkb2luZworICAgICAgICB2YXIgY29vcmRpbmF0ZU1heGltdW0gPSBNYXRoLm1heCh0aGlzLl9v
YmplY3RzLmxlbmd0aCwgMjAwKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsg
KytpKSB7CisgICAgICAgICAgICB0aGlzLl9vYmplY3RzLnB1c2gobmV3IHRoaXMuY2FudmFzT2Jq
ZWN0KHRoaXMsIGNvb3JkaW5hdGVNYXhpbXVtKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHRoaXMuX29iamVjdHMubGVuZ3RoOworICAgIH0KKworICAgIGNvdW50ID0gTWF0aC5taW4oLWNv
dW50LCB0aGlzLl9vYmplY3RzLmxlbmd0aCk7CisgICAgdGhpcy5fb2JqZWN0cy5zcGxpY2UoLWNv
dW50LCBjb3VudCk7CisvKiAgICBmb3IodmFyIGkgPTA7aTxjb3VudDtpKyspIHsKKyAgICAgICAg
dGhpcy5fb2JqZWN0cy5zaGlmdCgpOworICAgIH0KKyovCisKKyAgICByZXR1cm4gdGhpcy5fb2Jq
ZWN0cy5sZW5ndGg7Cit9CitTaW1wbGVDYW52YXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1
bmN0aW9uKCkKK3sKKyAgICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKKyAgICB0aGlzLl9v
YmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgICAgIG9iamVjdC5kcmF3KGNv
bnRleHQpOworICAgIH0pOworfQorCitmdW5jdGlvbiBTaW1wbGVDYW52YXNBbmltYXRvcihiZW5j
aG1hcmssIG9wdGlvbnMpCit7CisgICAgU3RhZ2VBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFy
aywgb3B0aW9ucyk7CisgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4
dDsKK30KKworU2ltcGxlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShT
dGFnZUFuaW1hdG9yLnByb3RvdHlwZSk7CitTaW1wbGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNBbmltYXRvcjsKK1NpbXBsZUNhbnZhc0FuaW1hdG9y
LnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2NvbnRleHQuY2xl
YXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9iZW5jaG1h
cmsuX3N0YWdlLnNpemUueSk7CisgICAgcmV0dXJuIFN0YWdlQW5pbWF0b3IucHJvdG90eXBlLmFu
aW1hdGUuY2FsbCh0aGlzLCB0aGlzLl9vcHRpb25zKTsKK30KKworCitmdW5jdGlvbiBTaW1wbGVD
YW52YXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikgeworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CitTaW1wbGVDYW52YXNCZW5jaG1hcmsu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOworU2lt
cGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNpbXBsZUNhbnZhc0Jl
bmNobWFyazsKK1NpbXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3Ig
PSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IFNpbXBsZUNhbnZhc0FuaW1hdG9yKHRoaXMs
IHRoaXMuX29wdGlvbnMpOworfQorCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE3MDYxOAotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2Vz
L2NhbnZhcy10ZXN0cy5qcwpAQCAtMCwwICsxLDIwOCBAQAorKGZ1bmN0aW9uKCkgeworCisvLyA9
PT0gUEFJTlQgT0JKRUNUUyA9PT0KKworZnVuY3Rpb24gQ2FudmFzTGluZVNlZ21lbnQoc3RhZ2Up
IHsKKyAgICB2YXIgY2lyY2xlID0gc3RhZ2UucmFuZG9tSW50KDAsIDIpOworICAgIHRoaXMuX2Nv
bG9yID0gWyIjZTAxMDQwIiwgIiMxMGMwMzAiLCAiI2UwNTAxMCJdW2NpcmNsZV07CisgICAgdGhp
cy5fbGluZVdpZHRoID0gTWF0aC5wb3coTWF0aC5yYW5kb20oKSwgMTIpICogMjAgKyAzOworICAg
IHRoaXMuX29tZWdhID0gTWF0aC5yYW5kb20oKSAqIDMgKyAwLjI7CisgICAgdmFyIHRoZXRhID0g
c3RhZ2UucmFuZG9tQW5nbGUoKTsKKyAgICB0aGlzLl9jb3NUaGV0YSA9IE1hdGguY29zKHRoZXRh
KTsKKyAgICB0aGlzLl9zaW5UaGV0YSA9IE1hdGguc2luKHRoZXRhKTsKKyAgICB0aGlzLl9zdGFy
dFggPSBzdGFnZS5jaXJjbGVSYWRpdXMgKiB0aGlzLl9jb3NUaGV0YSArICgwLjUgKyBjaXJjbGUp
IC8gMyAqIHN0YWdlLnNpemUueDsKKyAgICB0aGlzLl9zdGFydFkgPSBzdGFnZS5jaXJjbGVSYWRp
dXMgKiB0aGlzLl9zaW5UaGV0YSArIHN0YWdlLnNpemUueSAvIDI7CisgICAgdGhpcy5fbGVuZ3Ro
ID0gTWF0aC5wb3coTWF0aC5yYW5kb20oKSwgOCkgKiA0MCArIDIwOworICAgIHRoaXMuX3NlZ21l
bnREaXJlY3Rpb24gPSBNYXRoLnJhbmRvbSgpID4gMC41ID8gLTEgOiAxOworfQorCitDYW52YXNM
aW5lU2VnbWVudC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKKyAgICBjb250
ZXh0LnN0cm9rZVN0eWxlID0gdGhpcy5fY29sb3I7CisgICAgY29udGV4dC5saW5lV2lkdGggPSB0
aGlzLl9saW5lV2lkdGg7CisKKyAgICB0aGlzLl9sZW5ndGgrPU1hdGguc2luKERhdGUubm93KCkv
MTAwKnRoaXMuX29tZWdhKTsKKworICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgY29udGV4
dC5tb3ZlVG8odGhpcy5fc3RhcnRYLCB0aGlzLl9zdGFydFkpOworICAgIGNvbnRleHQubGluZVRv
KHRoaXMuX3N0YXJ0WCArIHRoaXMuX3NlZ21lbnREaXJlY3Rpb24gKiB0aGlzLl9sZW5ndGggKiB0
aGlzLl9jb3NUaGV0YSwKKyAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGFydFkgKyB0aGlzLl9z
ZWdtZW50RGlyZWN0aW9uICogdGhpcy5fbGVuZ3RoICogdGhpcy5fc2luVGhldGEpOworICAgIGNv
bnRleHQuc3Ryb2tlKCk7Cit9OworCitmdW5jdGlvbiBDYW52YXNBcmMoc3RhZ2UpIHsKKyAgICB2
YXIgbWF4WCA9IDYsIG1heFkgPSAzOworICAgIHZhciBkaXN0YW5jZVggPSBzdGFnZS5zaXplLngg
LyBtYXhYOworICAgIHZhciBkaXN0YW5jZVkgPSBzdGFnZS5zaXplLnkgLyAobWF4WSArIDEpOwor
ICAgIHZhciByYW5kWSA9IHN0YWdlLnJhbmRvbUludCgwLCBtYXhZKTsKKyAgICB2YXIgcmFuZFgg
PSBzdGFnZS5yYW5kb21JbnQoMCwgbWF4WCAtIDEgKiAocmFuZFkgJSAyKSk7CisKKyAgICB0aGlz
Ll9wb2ludCA9IG5ldyBQb2ludChkaXN0YW5jZVggKiAocmFuZFggKyAocmFuZFkgJSAyKSAvIDIp
LCBkaXN0YW5jZVkgKiAocmFuZFkgKyAuNSkpOworCisgICAgdGhpcy5fcmFkaXVzID0gMjAgKyBN
YXRoLnBvdyhNYXRoLnJhbmRvbSgpLCA1KSAqIChNYXRoLm1pbihkaXN0YW5jZVgsIGRpc3RhbmNl
WSkgLyAxLjYpOworICAgIHRoaXMuX3N0YXJ0QW5nbGUgPSBzdGFnZS5yYW5kb21BbmdsZSgpOwor
ICAgIHRoaXMuX2VuZEFuZ2xlID0gc3RhZ2UucmFuZG9tQW5nbGUoKTsKKyAgICB0aGlzLl9vbWVn
YSA9IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIDAuMzsKKyAgICB0aGlzLl9jb3VudGVyY2xvY2t3
aXNlID0gc3RhZ2UucmFuZG9tQm9vbCgpOworICAgIHZhciBjb2xvcnMgPSBbIiMxMDEwMTAiLCAi
IzgwODA4MCIsICIjYzBjMGMwIl07CisgICAgY29sb3JzLnB1c2goWyIjZTAxMDQwIiwgIiMxMGMw
MzAiLCAiI2UwNTAxMCJdWyhyYW5kWCArIE1hdGguY2VpbChyYW5kWSAvIDIpKSAlIDNdKTsKKyAg
ICB0aGlzLl9jb2xvciA9IGNvbG9yc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjb2xvcnMu
bGVuZ3RoKV07CisgICAgdGhpcy5fbGluZVdpZHRoID0gMSArIE1hdGgucG93KE1hdGgucmFuZG9t
KCksIDUpICogMzA7CisgICAgdGhpcy5fZG9TdHJva2UgPSBzdGFnZS5yYW5kb21JbnQoMCwgMykg
IT0gMDsKK307CisKK0NhbnZhc0FyYy5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGNvbnRleHQp
IHsKKyAgICB0aGlzLl9zdGFydEFuZ2xlICs9IHRoaXMuX29tZWdhOworICAgIHRoaXMuX2VuZEFu
Z2xlICs9IHRoaXMuX29tZWdhIC8gMjsKKworICAgIGlmICh0aGlzLl9kb1N0cm9rZSkgeworICAg
ICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gdGhpcy5fY29sb3I7CisgICAgICAgIGNvbnRleHQu
bGluZVdpZHRoID0gdGhpcy5fbGluZVdpZHRoOworICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgp
OworICAgICAgICBjb250ZXh0LmFyYyh0aGlzLl9wb2ludC54LCB0aGlzLl9wb2ludC55LCB0aGlz
Ll9yYWRpdXMsIHRoaXMuX3N0YXJ0QW5nbGUsIHRoaXMuX2VuZEFuZ2xlLCB0aGlzLl9jb3VudGVy
Y2xvY2t3aXNlKTsKKyAgICAgICAgY29udGV4dC5zdHJva2UoKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMuX2NvbG9yOworICAgICAgICBjb250ZXh0LmJl
Z2luUGF0aCgpOworICAgICAgICBjb250ZXh0LmxpbmVUbyh0aGlzLl9wb2ludC54LCB0aGlzLl9w
b2ludC55KTsKKyAgICAgICAgY29udGV4dC5hcmModGhpcy5fcG9pbnQueCwgdGhpcy5fcG9pbnQu
eSwgdGhpcy5fcmFkaXVzLCB0aGlzLl9zdGFydEFuZ2xlLCB0aGlzLl9lbmRBbmdsZSwgdGhpcy5f
Y291bnRlcmNsb2Nrd2lzZSk7CisgICAgICAgIGNvbnRleHQubGluZVRvKHRoaXMuX3BvaW50Lngs
IHRoaXMuX3BvaW50LnkpOworICAgICAgICBjb250ZXh0LmZpbGwoKTsKKyAgICB9Cit9OworCitm
dW5jdGlvbiBDYW52YXNMaW5lUG9pbnQoc3RhZ2UsIGNvb3JkaW5hdGVNYXhpbXVtKSB7CisgICAg
dmFyIFhfTE9PUFMgPSA0MDsKKyAgICB2YXIgWV9MT09QUyA9IDIwOworCisgICAgdmFyIG9mZnNl
dHMgPSBbWy0yLCAtMV0sIFsyLCAxXSwgWy0xLCAwXSwgWzEsIDBdLCBbLTEsIDJdLCBbMSwgLTJd
XTsKKyAgICB2YXIgb2Zmc2V0ID0gb2Zmc2V0c1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBv
ZmZzZXRzLmxlbmd0aCldOworCisgICAgdGhpcy5jb29yZGluYXRlID0gbmV3IFBvaW50KFhfTE9P
UFMvMiwgWV9MT09QUy8yKTsKKyAgICBpZiAoc3RhZ2UuX29iamVjdHMubGVuZ3RoKSB7CisgICAg
ICAgIHZhciBoZWFkID0gc3RhZ2UuX29iamVjdHNbc3RhZ2UuX29iamVjdHMubGVuZ3RoIC0gMV0u
Y29vcmRpbmF0ZTsKKyAgICAgICAgdGhpcy5jb29yZGluYXRlLnggPSBoZWFkLng7CisgICAgICAg
IHRoaXMuY29vcmRpbmF0ZS55ID0gaGVhZC55OworICAgIH0KKworICAgIHZhciBuZXh0Q29vcmRp
bmF0ZSA9IHRoaXMuY29vcmRpbmF0ZS54ICsgb2Zmc2V0WzBdOworICAgIGlmIChuZXh0Q29vcmRp
bmF0ZSA8IDAgfHwgbmV4dENvb3JkaW5hdGUgPiBYX0xPT1BTKQorICAgICAgICB0aGlzLmNvb3Jk
aW5hdGUueCAtPSBvZmZzZXRbMF07CisgICAgZWxzZQorICAgICAgICB0aGlzLmNvb3JkaW5hdGUu
eCA9IG5leHRDb29yZGluYXRlOworICAgIG5leHRDb29yZGluYXRlID0gdGhpcy5jb29yZGluYXRl
LnkgKyBvZmZzZXRbMV07CisgICAgaWYgKG5leHRDb29yZGluYXRlIDwgMCB8fCBuZXh0Q29vcmRp
bmF0ZSA+IFlfTE9PUFMpCisgICAgICAgIHRoaXMuY29vcmRpbmF0ZS55IC09IG9mZnNldFsxXTsK
KyAgICBlbHNlCisgICAgICAgIHRoaXMuY29vcmRpbmF0ZS55ID0gbmV4dENvb3JkaW5hdGU7CisK
KyAgICB2YXIgeE9mZiA9IC4yNSAqICh0aGlzLmNvb3JkaW5hdGUueSAlIDIpOworICAgIHZhciBy
YW5kWCA9ICh4T2ZmICsgdGhpcy5jb29yZGluYXRlLngpICogc3RhZ2Uuc2l6ZS54IC8gWF9MT09Q
UzsKKyAgICB2YXIgcmFuZFkgPSB0aGlzLmNvb3JkaW5hdGUueSAqIHN0YWdlLnNpemUueSAvIFlf
TE9PUFM7CisgICAgdmFyIGNvbG9ycyA9IFsiIzEwMTAxMCIsICIjODA4MDgwIiwgIiNjMGMwYzAi
LCAiI2UwMTA0MCJdOworICAgIHRoaXMuX2NvbG9yID0gY29sb3JzW01hdGguZmxvb3IoTWF0aC5y
YW5kb20oKSAqIGNvbG9ycy5sZW5ndGgpXTsKKworICAgIHRoaXMuX3dpZHRoID0gTWF0aC5wb3co
TWF0aC5yYW5kb20oKSwgNSkgKiAyMCArIDE7CisgICAgdGhpcy5faXNTcGxpdCA9IE1hdGgucmFu
ZG9tKCkgPiAwLjk7CisgICAgdGhpcy5fcG9pbnQgPSBuZXcgUG9pbnQocmFuZFgsIHJhbmRZKTsK
KworfQorCitDYW52YXNMaW5lUG9pbnQucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjb250ZXh0
LCBzdGFnZSkgeworICAgIGNvbnRleHQubGluZVRvKHRoaXMuX3BvaW50LngsIHRoaXMuX3BvaW50
LnkpOworfTsKKworCisvLyA9PT0gU1RBR0VTID09PQorCitmdW5jdGlvbiBTaW1wbGVDYW52YXNQ
YXRoU3Ryb2tlU3RhZ2UoZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KSB7CisgICAgU2lt
cGxlQ2FudmFzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zLCBjYW52YXNPYmplY3Qp
OworfQorU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90eXBlKTsKK1NpbXBsZUNhbnZhc1BhdGhTdHJva2VT
dGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2U7
CitTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKKyAgICB2YXIgc3RhZ2UgPSB0
aGlzOworCisgICAgY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICB0aGlzLl9vYmplY3RzLmZvckVh
Y2goZnVuY3Rpb24ob2JqZWN0LCBpbmRleCkgeworICAgICAgICBpZiAoaW5kZXggPT0gMCkgewor
ICAgICAgICAgICAgY29udGV4dC5saW5lV2lkdGggPSBvYmplY3QuX3dpZHRoOworICAgICAgICAg
ICAgY29udGV4dC5zdHJva2VTdHlsZSA9IG9iamVjdC5fY29sb3I7CisgICAgICAgICAgICBjb250
ZXh0Lm1vdmVUbyhvYmplY3QuX3BvaW50LngsIG9iamVjdC5fcG9pbnQueSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBpZiAob2JqZWN0Ll9pc1NwbGl0KSB7CisgICAgICAgICAgICAg
ICAgY29udGV4dC5zdHJva2UoKTsKKworICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVdpZHRo
ID0gb2JqZWN0Ll93aWR0aDsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0g
b2JqZWN0Ll9jb2xvcjsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoTWF0aC5yYW5kb20oKSA+IDAuOTk5KQorICAg
ICAgICAgICAgICAgIG9iamVjdC5faXNTcGxpdCA9ICFvYmplY3QuX2lzU3BsaXQ7CisKKyAgICAg
ICAgICAgIG9iamVjdC5kcmF3KGNvbnRleHQpOworICAgICAgICB9CisgICAgfSk7CisgICAgY29u
dGV4dC5zdHJva2UoKTsKK30KKworZnVuY3Rpb24gQ2FudmFzTGluZVNlZ21lbnRTdGFnZShlbGVt
ZW50LCBvcHRpb25zKQoreworICAgIFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywgZWxlbWVu
dCwgb3B0aW9ucywgQ2FudmFzTGluZVNlZ21lbnQpOworICAgIHRoaXMuY29udGV4dC5saW5lQ2Fw
ID0gb3B0aW9uc1sibGluZUNhcCJdIHx8ICJidXR0IjsKKyAgICB0aGlzLmNpcmNsZVJhZGl1cyA9
IHRoaXMuc2l6ZS54IC8gMyAvIDIgLSAyMDsKK30KK0NhbnZhc0xpbmVTZWdtZW50U3RhZ2UucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShTaW1wbGVDYW52YXNTdGFnZS5wcm90b3R5cGUpOworQ2Fu
dmFzTGluZVNlZ21lbnRTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNMaW5lU2Vn
bWVudFN0YWdlOworQ2FudmFzTGluZVNlZ21lbnRTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1
bmN0aW9uKCkgeworICAgIHZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OworICAgIHZhciBzdGFn
ZSA9IHRoaXM7CisKKyAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDMwOworICAgIGZvcih2YXIgaSA9
IDA7IGkgPCAzOyBpKyspIHsKKyAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IFsiI2UwMTA0
MCIsICIjMTBjMDMwIiwgIiNlMDUwMTAiXVtpXTsKKyAgICAgICAgY29udGV4dC5maWxsU3R5bGUg
PSBbIiM3MDA1MWQiLCAiIzAxNjExMiIsICIjNzAyNzAxIl1baV07CisgICAgICAgIGNvbnRleHQu
YmVnaW5QYXRoKCk7CisgICAgICAgICAgICBjb250ZXh0LmFyYygoMC41ICsgaSkgLyAzICogc3Rh
Z2Uuc2l6ZS54LCBzdGFnZS5zaXplLnkvMiwgc3RhZ2UuY2lyY2xlUmFkaXVzLCAwLCBNYXRoLlBJ
KjIpOworICAgICAgICBjb250ZXh0LnN0cm9rZSgpOworICAgICAgICBjb250ZXh0LmZpbGwoKTsK
KyAgICB9CisKKyAgICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7Cisg
ICAgICAgIG9iamVjdC5kcmF3KGNvbnRleHQpOworICAgIH0pOworfQorCitmdW5jdGlvbiBDYW52
YXNMaW5lUGF0aFN0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgU2ltcGxlQ2FudmFzUGF0
aFN0cm9rZVN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywgQ2FudmFzTGluZVBvaW50
KTsKKyAgICB0aGlzLmNvbnRleHQubGluZUpvaW4gPSBvcHRpb25zWyJsaW5lSm9pbiJdIHx8ICJi
ZXZlbCI7Cit9CitDYW52YXNMaW5lUGF0aFN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
U2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlLnByb3RvdHlwZSk7CitDYW52YXNMaW5lUGF0aFN0
YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENhbnZhc0xpbmVQYXRoU3RhZ2U7CisKKy8vID09
PSBCRU5DSE1BUksgPT09CisKK2Z1bmN0aW9uIENhbnZhc1BhdGhCZW5jaG1hcmsoc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIFNpbXBsZUNhbnZh
c0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpOworfQorQ2FudmFzUGF0aEJlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKFNpbXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUpOworQ2FudmFzUGF0aEJlbmNo
bWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNQYXRoQmVuY2htYXJrOworQ2FudmFz
UGF0aEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQor
eworICAgIHN3aXRjaCAodGhpcy5fb3B0aW9uc1sicGF0aFR5cGUiXSkgeworICAgIGNhc2UgImxp
bmUiOgorICAgICAgICByZXR1cm4gbmV3IENhbnZhc0xpbmVTZWdtZW50U3RhZ2UoZWxlbWVudCwg
dGhpcy5fb3B0aW9ucyk7CisgICAgY2FzZSAiYXJjcyI6CisgICAgICAgIHJldHVybiBuZXcgU2lt
cGxlQ2FudmFzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzQXJjKTsKKyAgICBj
YXNlICJsaW5lUGF0aCI6CisgICAgICAgIHJldHVybiBuZXcgQ2FudmFzTGluZVBhdGhTdGFnZShl
bGVtZW50LCB0aGlzLl9vcHRpb25zKTsKKyAgICB9Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGll
bnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0JhcikgeworICAgIHJldHVybiBuZXcgQ2FudmFzUGF0aEJlbmNobWFyayhzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworfSkoKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9zdGFnZS5jc3MgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9zdGFnZS5jc3MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I1ZjgxYwotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL3N0YWdlLmNz
cwpAQCAtMCwwICsxLDE3IEBACitodG1sIHsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9Citib2R5IHsK
KyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgb3ZlcmZsb3c6IGhpZGRl
bjsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMjQxLCAyNDEsIDI0MSk7Cit9CisKKyNzdGFnZSB7CisgIHdpZHRoOiAxMDAlOworICBo
ZWlnaHQ6IDEwMCU7CisgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDEsIDI0MSwgMjQxKTsKK30K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYjE2YTJiZi4uYTNiODEwNyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTUs
NiArNSwyMSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAg
ICAgIEFkZCB0ZXN0cyB0byAnYW5pbW9tZXRlcicgc3VpdGUuCisKKyAgICAgICAgKiBBbmltb21l
dGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9tYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanM6IEFkZGVkLgorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanM6IEFkZGVk
LgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9zdGFnZS5jc3M6
IEFkZGVkLgorCisyMDE1LTEyLTE5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAg
ICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlmZmVyZW50IHBhZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI0NTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRv
IHNlbGVjdCB0aGUgc2NvcmVzLCBvciB0aGUgd2hvbGUgdGFibGUgZGF0YSwKICAgICAgICAgYnkg
Y3ljbGluZyB0aHJvdWdoIGRpZmZlcmVudCBzZWxlY3Rpb25zIHRocm91Z2gga2V5IHByZXNzIG9m
ICdzJy4KIAotLSAKMi41LjQgKEFwcGxlIEdpdC02MSkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267867</attachid>
            <date>2015-12-23 15:32:55 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>9. Fix selector</desc>
            <filename>0009-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>2155</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSAzNmI4ZThmNmY2ODBmODBiMTNhNzE1MjNkYTk3MmYzMDgzNjQzZTYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTYXQs
IDE5IERlYyAyMDE1IDAwOjUwOjUxIC0wODAwClN1YmplY3Q6IFtQQVRDSCAwOS8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoq
IEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzOgood2lsbFN0
YXJ0Rmlyc3RJdGVyYXRpb24pOiBGaXggc2VsZWN0b3IsIHNpbmNlIHJlc3VsdHMtdGFibGUgaXMg
dXNlZAppbiBtdWx0aXBsZSBwbGFjZXMsIHNvIGl0IGNhbm5vdCBiZSBhbiBpZC4KLS0tCiAuLi4v
QW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanMgICAgICAgICAg
IHwgIDIgKy0KIFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAxMSArKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNl
cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanMK
aW5kZXggNWNmZWZmYy4uOWRlNzk2ZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qcworKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpz
CkBAIC0xMiw3ICsxMiw3IEBAIFV0aWxpdGllcy5leHRlbmRPYmplY3Qod2luZG93LmJlbmNobWFy
a1J1bm5lckNsaWVudCwgewogICAgIHsKICAgICAgICAgdGhpcy5yZXN1bHRzID0gbmV3IFJlc3Vs
dHNEYXNoYm9hcmQoKTsKICAgICAgICAgdGhpcy5wcm9ncmVzc0JhciA9IG5ldyBQcm9ncmVzc0Jh
cihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvZ3Jlc3MtY29tcGxldGVkIiksIHRoaXMudGVz
dHNDb3VudCk7Ci0gICAgICAgIHRoaXMucmVjb3JkVGFibGUgPSBuZXcgUmVzdWx0c1RhYmxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzLXRhYmxlIiksIEhlYWRlcnMpOworICAgICAg
ICB0aGlzLnJlY29yZFRhYmxlID0gbmV3IFJlc3VsdHNUYWJsZShkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCIjdGVzdC1jb250YWluZXIgLnJlc3VsdHMtdGFibGUiKSwgSGVhZGVycyk7CiAgICAgfQog
fSk7CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTNiODEwNy4uY2RhYTM2NCAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cK
QEAgLTUsNiArNSwxNyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgog
CisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIu
anM6CisgICAgICAgICh3aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbik6IEZpeCBzZWxlY3Rvciwgc2lu
Y2UgcmVzdWx0cy10YWJsZSBpcyB1c2VkCisgICAgICAgIGluIG11bHRpcGxlIHBsYWNlcywgc28g
aXQgY2Fubm90IGJlIGFuIGlkLgorCisyMDE1LTEyLTE5ICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KKworICAgICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlmZmVyZW50IHBhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI0NTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBBZGQgdGVz
dHMgdG8gJ2FuaW1vbWV0ZXInIHN1aXRlLgogCiAgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJj
ZXMvcnVubmVyL3Rlc3RzLmpzOgotLSAKMi41LjQgKEFwcGxlIEdpdC02MSkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267868</attachid>
            <date>2015-12-23 15:34:25 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>10. Update debug runner</desc>
            <filename>0010-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>54191</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBhZGQzOGI4ZjU2OWEyZWY3N2U5ODA2MjQzMTU2MTc3N2Q0MTEyZTliIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTYXQs
IDE5IERlYyAyMDE1IDE5OjQ4OjQ5IC0wODAwClN1YmplY3Q6IFtQQVRDSCAxMC8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpV
cGRhdGUgZGVidWcgcnVubmVyIHRvIGhhdmUgc2ltaWxhciBuYW1lcyB0byB0aGUgYmFzaWMgcnVu
bmVyLiBJbmNsdWRlCnRoYXQgcGFnZSdzIENTUyBhbmQgcmVtb3ZlIGV4dHJhbmVvdXMgQ1NTIHJ1
bGVzLgoKR2V0IHJpZCBvZiB0aGUgc3RhdGlzdGljcyB0YWJsZSAjcmVjb3JkLgoKKiBBbmltb21l
dGVyL2RldmVsb3Blci5odG1sOiBSZW5hbWUgI2hvbWUgdG8gI2ludHJvLiBSZW5hbWUgLnNwYWNl
ciB0byBoci4KKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5j
c3M6IFNldCB0byBmbGV4Ym94IHdoZW4gc2VsZWN0ZWQuCiogQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanM6IFJlbW92ZSByZWNvcmRUYWJsZS4KKHdpbmRvdy5z
dWl0ZXNNYW5hZ2VyLl91cGRhdGVTdGFydEJ1dHRvblN0YXRlKTogVXBkYXRlIHNlbGVjdG9yIHRv
ICNpbnRyby4KKHNldHVwUnVubmluZ1NlY3Rpb25TdHlsZSk6IERlbGV0ZWQuCgoqIEFuaW1vbWV0
ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzczoKKCN0ZXN0LWNvbnRhaW5lci5zZWxl
Y3RlZCk6IENoYW5nZSB0byBmbGV4LWJveCBvbmx5IHdoZW4gdmlzaWJsZS4KClJlbW92ZSByZWNv
cmRUYWJsZS4KKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1
bm5lci5qczoKKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRlc3RBbmRSZWNvcmRSZXN1
bHRzKToKKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanM6CiogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFn
ZXMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanM6CiogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMu
anM6CiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLWNzcy1zaGFwZXMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qczoKKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qczoKKiBBbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBl
cy5qczoKKiBBbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ry
b25zLmpzOgoqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFy
cy5qczoKKiBBbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpz
OgoqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanM6Ciog
QW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpz
OgoqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanM6CiogQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMvc3RhZ2UuanM6CihTdGFnZUJlbmNobWFyayk6IFJlbW92ZSBfcmVjb3JkVGFi
bGUuCiogQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMtcGF0
aHMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMu
anM6CiogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFz
LmpzOgoqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5q
czoKKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanM6
CiogQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzOgotLS0K
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbCAgICAgICAgIHwgMjAz
ICsrKysrKysrKystLS0tLS0tLS0tLQogLi4uL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9t
ZXRlci5jc3MgICAgICAgICAgfCAxMTAgKystLS0tLS0tLS0KIC4uLi9yZXNvdXJjZXMvZGVidWct
cnVubmVyL2FuaW1vbWV0ZXIuanMgICAgICAgICAgIHwgIDExICstCiAuLi4vcmVzb3VyY2VzL2Rl
YnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzICAgICB8ICAgMiArLQogLi4uL0FuaW1vbWV0
ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcyAgICAgfCAgIDMgKy0KIC4uLi9Bbmlt
b21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMgICAgICAgICAgIHwgICA0ICstCiAuLi4v
cmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMgICAgICAgICAgICB8ICAgOCArLQog
Li4uL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzICAgICAgICAgfCAgIDQg
Ky0KIC4uLi9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcyAgICAgICAgICAgIHwg
ICA4ICstCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMuanMgICAgICAgICAgICAg
ICB8ICAgOCArLQogLi4uL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzICAgICAgICAg
ICAgICAgfCAgIDggKy0KIC4uLi9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzICAgICAg
ICAgICAgICAgIHwgICA0ICstCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMg
ICAgICAgICAgICAgICB8ICAgOCArLQogLi4uL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVz
LmpzICAgICAgICAgICAgICAgfCAgIDggKy0KIC4uLi90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMv
Y2FudmFzLWVsZWN0cm9ucy5qcyAgIHwgICA4ICstCiAuLi4vdGVzdHMvZXhhbXBsZXMvcmVzb3Vy
Y2VzL2NhbnZhcy1zdGFycy5qcyAgICAgICB8ICAgOCArLQogLi4uL3Rlc3RzL21hc3Rlci9yZXNv
dXJjZXMvY2FudmFzLXN0YWdlLmpzICAgICAgICAgfCAgIDQgKy0KIC4uLi90ZXN0cy9tYXN0ZXIv
cmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcyAgICAgICAgIHwgICA4ICstCiAuLi4vdGVzdHMvbWlz
Yy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5qcyB8ICAgOCArLQogLi4uL0FuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9B
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcyAgICAgICAgICAgIHwgICA4ICstCiAu
Li4vdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpzICB8ICAgOCAr
LQogLi4uL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qcyAgICAgICAgfCAg
IDQgKy0KIC4uLi90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzICAg
IHwgICA4ICstCiAuLi4vdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qcyAg
ICAgICB8ICAgOCArLQogLi4uL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcu
anMgICAgICAgfCAgIDggKy0KIC4uLi90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0
LmpzICAgICAgICAgIHwgICA4ICstCiBQZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICA0OCArKysrKwogMjggZmlsZXMgY2hhbmdlZCwgMjQ1IGluc2Vy
dGlvbnMoKyksIDI4NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
ZGV2ZWxvcGVyLmh0bWwKaW5kZXggZWE0NzBiNi4uZWNmNjEwOSAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL2RldmVsb3Blci5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbApAQCAtMiw2ICsyLDcgQEAKIDxodG1sPgogPGhl
YWQ+CiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJy
ZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3MiPgogICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KQEAgLTE4LDExMiArMTksMTA2IEBA
CiA8L2hlYWQ+CiA8Ym9keT4KICAgICA8bWFpbj4KLSAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPjwv
ZGl2PgotCi0gICAgPHNlY3Rpb24gaWQ9ImhvbWUiIGNsYXNzPSJzZWxlY3RlZCI+Ci0gICAgICAg
IDxoZWFkZXI+Ci0gICAgICAgICAgICA8aDE+QW5pbW9tZXRlcjwvaDE+Ci0gICAgICAgIDwvaGVh
ZGVyPgotICAgICAgICA8ZGl2IGlkPSJzdWl0ZXMiPgotICAgICAgICAgICAgPGgyPlN1aXRlczo8
L2gyPgotICAgICAgICAgICAgPHVsIGNsYXNzPSJ0cmVlIj48L3VsPgotICAgICAgICA8L2Rpdj4K
LSAgICAgICAgPGRpdiBpZD0ib3B0aW9ucyI+Ci0gICAgICAgICAgICA8aDI+T3B0aW9uczo8L2gy
PgotICAgICAgICAgICAgPGZvcm0gbmFtZT0iYmVuY2htYXJrLW9wdGlvbnMiPgotICAgICAgICAg
ICAgPHVsPgotICAgICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAgIDxsYWJlbD5UZXN0IGxl
bmd0aDogPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9InRlc3QtaW50ZXJ2YWwiIHZhbHVlPSIxMCI+
IHNlY29uZHMgZWFjaDwvbGFiZWw+Ci0gICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgPGxp
PgotICAgICAgICAgICAgICAgIDxoMz5EaXNwbGF5OjwvaDM+Ci0gICAgICAgICAgICAgICAgPHVs
PgotICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1lPSJkaXNwbGF5IiB0
eXBlPSJyYWRpbyIgdmFsdWU9Im1pbmltYWwiIGNoZWNrZWQ+IE1pbmltYWw8L2xhYmVsPjwvbGk+
Ci0gICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0IG5hbWU9ImRpc3BsYXkiIHR5
cGU9InJhZGlvIiB2YWx1ZT0icHJvZ3Jlc3MtYmFyIiBjaGVja2VkPiBQcm9ncmVzcyBiYXI8L2xh
YmVsPjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0IG5hbWU9ImRp
c3BsYXkiIHR5cGU9InJhZGlvIiB2YWx1ZT0ic3RhdGlzdGljcy10YWJsZSI+IFN0YXRpc3RpY3Mg
dGFibGU8L2xhYmVsPjwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgIDwv
bGk+Ci0gICAgICAgICAgICA8bGk+Ci0gICAgICAgICAgICAgICAgPGgzPkFkanVzdGluZyB0aGUg
dGVzdCBjb21wbGV4aXR5OjwvaDM+CisgICAgICAgIDxocj4KKyAgICAgICAgPHNlY3Rpb24gaWQ9
ImludHJvIiBjbGFzcz0ic2VsZWN0ZWQiPgorICAgICAgICAgICAgPGhlYWRlcj4KKyAgICAgICAg
ICAgICAgICA8aDE+QW5pbW9tZXRlcjwvaDE+CisgICAgICAgICAgICA8L2hlYWRlcj4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9InN1aXRlcyI+CisgICAgICAgICAgICAgICAgPGgyPlN1aXRlczo8L2gy
PgorICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idHJlZSI+PC91bD4KKyAgICAgICAgICAgIDwv
ZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0ib3B0aW9ucyI+CisgICAgICAgICAgICAgICAgPGgy
Pk9wdGlvbnM6PC9oMj4KKyAgICAgICAgICAgICAgICA8Zm9ybSBuYW1lPSJiZW5jaG1hcmstb3B0
aW9ucyI+CiAgICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgICAgICA8bGk+PGxh
YmVsPjxpbnB1dCBuYW1lPSJhZGp1c3RtZW50IiB0eXBlPSJyYWRpbyIgdmFsdWU9ImZpeGVkIj4g
S2VlcCBjb25zdGFudDwvbGFiZWw+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJl
bD48aW5wdXQgbmFtZT0iYWRqdXN0bWVudCIgdHlwZT0icmFkaW8iIHZhbHVlPSJmaXhlZC1hZnRl
ci13YXJtdXAiPiBLZWVwIGNvbnN0YW50IGFmdGVyIHdhcm11cCB0byB0YXJnZXQgRlBTPC9sYWJl
bD48L2xpPgotICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1lPSJhZGp1
c3RtZW50IiB0eXBlPSJyYWRpbyIgdmFsdWU9ImFkYXB0aXZlIiBjaGVja2VkPiBNYWludGFpbiB0
YXJnZXQgRlBTPC9sYWJlbD48L2xpPgorICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAg
ICAgICAgICAgPGxhYmVsPlRlc3QgbGVuZ3RoOiA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0idGVz
dC1pbnRlcnZhbCIgdmFsdWU9IjEwIj4gc2Vjb25kcyBlYWNoPC9sYWJlbD4KKyAgICAgICAgICAg
ICAgICA8L2xpPgorICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgPGgz
PkRpc3BsYXk6PC9oMz4KKyAgICAgICAgICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAg
ICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFtZT0iZGlzcGxheSIgdHlwZT0icmFkaW8iIHZh
bHVlPSJtaW5pbWFsIiBjaGVja2VkPiBNaW5pbWFsPC9sYWJlbD48L2xpPgorICAgICAgICAgICAg
ICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFtZT0iZGlzcGxheSIgdHlwZT0icmFkaW8i
IHZhbHVlPSJwcm9ncmVzcy1iYXIiIGNoZWNrZWQ+IFByb2dyZXNzIGJhcjwvbGFiZWw+PC9saT4K
KyAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICA8L2xpPgorICAgICAg
ICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgPGgzPkFkanVzdGluZyB0aGUgdGVz
dCBjb21wbGV4aXR5OjwvaDM+CisgICAgICAgICAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0IG5hbWU9ImFkanVzdG1lbnQiIHR5cGU9InJh
ZGlvIiB2YWx1ZT0iZml4ZWQiPiBLZWVwIGNvbnN0YW50PC9sYWJlbD48L2xpPgorICAgICAgICAg
ICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFtZT0iYWRqdXN0bWVudCIgdHlwZT0i
cmFkaW8iIHZhbHVlPSJmaXhlZC1hZnRlci13YXJtdXAiPiBLZWVwIGNvbnN0YW50IGFmdGVyIHdh
cm11cCB0byB0YXJnZXQgRlBTPC9sYWJlbD48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAg
PGxpPjxsYWJlbD48aW5wdXQgbmFtZT0iYWRqdXN0bWVudCIgdHlwZT0icmFkaW8iIHZhbHVlPSJh
ZGFwdGl2ZSIgY2hlY2tlZD4gTWFpbnRhaW4gdGFyZ2V0IEZQUzwvbGFiZWw+PC9saT4KKyAgICAg
ICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAg
ICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlRhcmdldCBmcmFtZSByYXRlOiA8
aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0iZnJhbWUtcmF0ZSIgdmFsdWU9IjUwIj4gRlBTPC9sYWJl
bD4KKyAgICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAg
ICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImVzdGltYXRlZC1m
cmFtZS1yYXRlIiBjaGVja2VkPiBGaWx0ZXIgZnJhbWUgcmF0ZSBjYWxjdWxhdGlvbjwvbGFiZWw+
CisgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAg
ICAgPC9saT4KLSAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICA8bGFiZWw+VGFyZ2V0
IGZyYW1lIHJhdGU6IDxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJmcmFtZS1yYXRlIiB2YWx1ZT0i
NTAiPiBGUFM8L2xhYmVsPgotICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgIDxsaT4KLSAg
ICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZXN0aW1hdGVk
LWZyYW1lLXJhdGUiIGNoZWNrZWQ+IEZpbHRlciBmcmFtZSByYXRlIGNhbGN1bGF0aW9uPC9sYWJl
bD4KLSAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgPC9m
b3JtPgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGZvb3Rlcj4KLSAgICAgICAgICAgIDxidXR0
b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zdGFy
dEJlbmNobWFyaygpIj5TdGFydCBUZXN0PC9idXR0b24+Ci0gICAgICAgIDwvZm9vdGVyPgotICAg
IDwvc2VjdGlvbj4KLSAgICA8c2VjdGlvbiBpZD0idGVzdC1jb250YWluZXIiPgotICAgICAgICA8
ZGl2IGlkPSJydW5uaW5nLXRlc3QiPjwvZGl2PgotICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcyI+
Ci0gICAgICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcy1jb21wbGV0ZWQiPjwvZGl2PgotICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgPGRpdiBpZD0icmVjb3JkIj4KLSAgICAgICAgICAgIDx0YWJsZSBj
bGFzcz0icmVzdWx0cy10YWJsZSI+PC90YWJsZT4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9zZWN0
aW9uPgotICAgIDxzZWN0aW9uIGlkPSJyZXN1bHRzIj4KLSAgICAgICAgPGhlYWRlcj4KLSAgICAg
ICAgICAgIDxoMT5SZXN1bHRzOjwvaDE+Ci0gICAgICAgIDwvaGVhZGVyPgotICAgICAgICA8ZGF0
YT4KLSAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0icmVzdWx0cy10YWJsZSI+PC90YWJsZT4KLSAg
ICAgICAgPC9kYXRhPgotICAgICAgICA8Zm9vdGVyPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFz
cz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNlbGVjdFJlc3Vs
dHMoKSI+U2VsZWN0PC9idXR0b24+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1i
dXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd0pTT04oKSI+SlNPTjwvYnV0
dG9uPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJi
ZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0QmVuY2htYXJrKCkiPlRlc3QgQWdhaW48L2J1dHRvbj4K
LSAgICAgICAgPC9mb290ZXI+Ci0gICAgPC9zZWN0aW9uPgotICAgIDxzZWN0aW9uIGlkPSJqc29u
Ij4KLSAgICAgICAgPGhlYWRlcj4KLSAgICAgICAgICAgIDxoMT5KU09OOjwvaDE+Ci0gICAgICAg
IDwvaGVhZGVyPgotICAgICAgICA8ZGF0YT4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3Vs
dHMtanNvbiIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KLSAgICAgICAgPC9kYXRhPgot
ICAgICAgICA8Zm9vdGVyPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9u
IiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNlbGVjdEpTT04oJ2pzb24nKSI+U2VsZWN0
PC9idXR0b24+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xp
Y2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMoKSI+UmVzdWx0czwvYnV0dG9uPgot
ICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1h
cmtDb250cm9sbGVyLnN0YXJ0QmVuY2htYXJrKCkiPlRlc3QgQWdhaW48L2J1dHRvbj4KLSAgICAg
ICAgPC9mb290ZXI+Ci0gICAgPC9zZWN0aW9uPgotICAgIDxzZWN0aW9uIGlkPSJ0ZXN0LWpzb24i
PgotICAgICAgICA8aGVhZGVyPgotICAgICAgICAgICAgPGgxPkpTT046PC9oMT4KLSAgICAgICAg
PC9oZWFkZXI+Ci0gICAgICAgIDxkYXRhPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVzdWx0
cy1qc29uIiBjb250ZW50RWRpdGFibGU9InRydWUiPjwvZGl2PgotICAgICAgICA8L2RhdGE+Ci0g
ICAgICAgIDxmb290ZXI+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24i
IG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2VsZWN0SlNPTigndGVzdC1qc29uJykiPlNl
bGVjdDwvYnV0dG9uPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBv
bmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNob3dSZXN1bHRzKCkiPlJlc3VsdHM8L2J1dHRv
bj4KLSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVu
Y2htYXJrQ29udHJvbGxlci5zdGFydEJlbmNobWFyaygpIj5UZXN0IEFnYWluPC9idXR0b24+Ci0g
ICAgICAgIDwvZm9vdGVyPgotICAgIDwvc2VjdGlvbj4KLSAgICA8c2VjdGlvbiBpZD0idGVzdC1n
cmFwaCI+Ci0gICAgICAgIDxoZWFkZXI+Ci0gICAgICAgICAgICA8aDE+R3JhcGg6PC9oMT4KLSAg
ICAgICAgPC9oZWFkZXI+Ci0gICAgICAgIDxkYXRhPjwvZGF0YT4KLSAgICAgICAgPGZvb3Rlcj4K
LSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2ht
YXJrQ29udHJvbGxlci5zaG93UmVzdWx0cygpIj5SZXN1bHRzPC9idXR0b24+Ci0gICAgICAgICAg
ICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xs
ZXIuc3RhcnRCZW5jaG1hcmsoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPgotICAgICAgICA8L2Zvb3Rl
cj4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPjwvZGl2PgorICAg
ICAgICAgICAgICAgIDwvZm9ybT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGZv
b3Rlcj4KKyAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xp
Y2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRCZW5jaG1hcmsoKSI+U3RhcnQgVGVzdDwvYnV0
dG9uPgorICAgICAgICAgICAgPC9mb290ZXI+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAg
PHNlY3Rpb24gaWQ9InRlc3QtY29udGFpbmVyIj4KKyAgICAgICAgICAgIDxkaXYgaWQ9InJ1bm5p
bmctdGVzdCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcyI+CisgICAgICAg
ICAgICAgICAgPGRpdiBpZD0icHJvZ3Jlc3MtY29tcGxldGVkIj48L2Rpdj4KKyAgICAgICAgICAg
IDwvZGl2PgorICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxzZWN0aW9uIGlkPSJyZXN1bHRz
Ij4KKyAgICAgICAgICAgIDxoZWFkZXI+CisgICAgICAgICAgICAgICAgPGgxPlJlc3VsdHM6PC9o
MT4KKyAgICAgICAgICAgIDwvaGVhZGVyPgorICAgICAgICAgICAgPGRhdGE+CisgICAgICAgICAg
ICAgICAgPHRhYmxlIGNsYXNzPSJyZXN1bHRzLXRhYmxlIj48L3RhYmxlPgorICAgICAgICAgICAg
PC9kYXRhPgorICAgICAgICAgICAgPGZvb3Rlcj4KKyAgICAgICAgICAgICAgICA8YnV0dG9uIGNs
YXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2VsZWN0UmVz
dWx0cygpIj5TZWxlY3Q8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJs
YXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd0pTT04oKSI+SlNP
TjwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIg
b25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zdGFydEJlbmNobWFyaygpIj5UZXN0IEFnYWlu
PC9idXR0b24+CisgICAgICAgICAgICA8L2Zvb3Rlcj4KKyAgICAgICAgPC9zZWN0aW9uPgorICAg
ICAgICA8c2VjdGlvbiBpZD0ianNvbiI+CisgICAgICAgICAgICA8aGVhZGVyPgorICAgICAgICAg
ICAgICAgIDxoMT5KU09OOjwvaDE+CisgICAgICAgICAgICA8L2hlYWRlcj4KKyAgICAgICAgICAg
IDxkYXRhPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdHMtanNvbiIgY29udGVu
dEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGF0YT4KKyAgICAgICAgICAg
IDxmb290ZXI+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBv
bmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNlbGVjdEpTT04oJ2pzb24nKSI+U2VsZWN0PC9i
dXR0b24+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNs
aWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNob3dSZXN1bHRzKCkiPlJlc3VsdHM8L2J1dHRvbj4K
KyAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJl
bmNobWFya0NvbnRyb2xsZXIuc3RhcnRCZW5jaG1hcmsoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPgor
ICAgICAgICAgICAgPC9mb290ZXI+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPHNlY3Rp
b24gaWQ9InRlc3QtanNvbiI+CisgICAgICAgICAgICA8aGVhZGVyPgorICAgICAgICAgICAgICAg
IDxoMT5KU09OOjwvaDE+CisgICAgICAgICAgICA8L2hlYWRlcj4KKyAgICAgICAgICAgIDxkYXRh
PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdHMtanNvbiIgY29udGVudEVkaXRh
YmxlPSJ0cnVlIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGF0YT4KKyAgICAgICAgICAgIDxmb290
ZXI+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNr
PSJiZW5jaG1hcmtDb250cm9sbGVyLnNlbGVjdEpTT04oJ3Rlc3QtanNvbicpIj5TZWxlY3Q8L2J1
dHRvbj4KKyAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xp
Y2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMoKSI+UmVzdWx0czwvYnV0dG9uPgor
ICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVu
Y2htYXJrQ29udHJvbGxlci5zdGFydEJlbmNobWFyaygpIj5UZXN0IEFnYWluPC9idXR0b24+Cisg
ICAgICAgICAgICA8L2Zvb3Rlcj4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8c2VjdGlv
biBpZD0idGVzdC1ncmFwaCI+CisgICAgICAgICAgICA8aGVhZGVyPgorICAgICAgICAgICAgICAg
IDxoMT5HcmFwaDo8L2gxPgorICAgICAgICAgICAgPC9oZWFkZXI+CisgICAgICAgICAgICA8ZGF0
YT48L2RhdGE+CisgICAgICAgICAgICA8Zm9vdGVyPgorICAgICAgICAgICAgICAgIDxidXR0b24g
Y2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVz
dWx0cygpIj5SZXN1bHRzPC9idXR0b24+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0i
bGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0QmVuY2htYXJr
KCkiPlRlc3QgQWdhaW48L2J1dHRvbj4KKyAgICAgICAgICAgIDwvZm9vdGVyPgorICAgICAgICA8
L3NlY3Rpb24+CisgICAgICAgIDxocj4KICAgICA8L21haW4+CiA8L2JvZHk+CiA8L2h0bWw+CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1
bm5lci9hbmltb21ldGVyLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzCmluZGV4IGQ3MzI2OWUuLjY0MGFmMTYgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVu
bmVyL2FuaW1vbWV0ZXIuY3NzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzCkBAIC0xLDI4ICsxLDEyIEBACi0vKiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhU
TUwgYW5kIEJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tICovCi1odG1sLGJvZHkgewotICAgIGhlaWdodDogMTAwJTsKLSAgICBtYXJnaW46
IDBweDsKLSAgICBwYWRkaW5nOiAwcHg7Ci19Ci0KIGJvZHkgewogICAgIGJhY2tncm91bmQtY29s
b3I6IHJnYig5NiwgOTYsIDk2KTsKICAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOwotICAg
IGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNhbnMt
c2VyaWY7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJ1dHRvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotYnV0dG9uIHsKLSAgICAtd2Via2l0LWFw
cGVhcmFuY2U6IG5vbmU7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKLX0KLQogYnV0dG9uLmxhcmdlLWJ1dHRvbiB7CiAg
ICAgYm9yZGVyOiAzcHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUpOwogICAgIGJvcmRlci1yYWRp
dXM6IDEwcHg7CkBAIC0xOTgsNTEgKzE4MiwxMSBAQCBkaXYucmVzdWx0cy1qc29uIHsKIC8qICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbiBMYXlvdXQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICovCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1tYWluIHsKLSAg
ICB3aWR0aDogMTAwJTsKLSAgICBoZWlnaHQ6IDEwMCU7Ci0gICAgZGlzcGxheTogLW1zLWZsZXhi
b3g7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwotICAgIGRpc3BsYXk6IGZsZXg7Ci0KLSAg
ICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwotICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRl
cjsKLSAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwotICAgIGFsaWduLWl0ZW1zOiBjZW50
ZXI7Ci0KLSAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKLSAgICAtbXMt
ZmxleC1wYWNrOiBmbGV4LXN0YXJ0OwotICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsK
LQotICAgIC13ZWJraXQtZmxleC1mbG93OiBjb2x1bW47Ci0gICAgZmxleC1mbG93OiBjb2x1bW47
Ci19Ci0KLS5zcGFjZXIgewotICAgIC13ZWJraXQtZmxleDogMSAwIDIwcHg7Ci0gICAgLW1zLWZs
ZXg6IDEgMCAyMHB4OwotICAgIGZsZXg6IDEgMCAyMHB4OwotICAgIHdpZHRoOiAxMHB4OwotfQot
Ci1zZWN0aW9uIHsKLSAgICB3aWR0aDogMTIwMHB4OwotICAgIGhlaWdodDogNjAwcHg7Ci0gICAg
ZGlzcGxheTogbm9uZTsKLSAgICBwYWRkaW5nOiAxMHB4OwotfQotCi0jaG9tZSB7CisjaW50cm8g
ewogICAgIG1pbi1oZWlnaHQ6IDYwMHB4OwogICAgIGhlaWdodDogYXV0bzsKIH0KIAotLmRpc3Bs
YXktcHJvZ3Jlc3MtYmFyIHNlY3Rpb24sCi0uZGlzcGxheS1zdGF0aXN0aWNzLXRhYmxlIHNlY3Rp
b24gewotICAgIGJvcmRlcjogNnB4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1KTsKLSAgICBib3Jk
ZXItcmFkaXVzOiAyMHB4OwotfQotCiBzZWN0aW9uLnNlbGVjdGVkIHsKICAgICBkaXNwbGF5OiAt
bXMtZmxleGJveDsKICAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CkBAIC0yODAsMTMgKzIyNCwx
MyBAQCBzZWN0aW9uID4gZm9vdGVyIHsKICAgICAgICAgaGVpZ2h0OiA4MDBweDsKICAgICB9CiAK
LSAgICAjaG9tZSB7CisgICAgI2ludHJvIHsKICAgICAgICAgbWluLWhlaWdodDogODAwcHg7CiAg
ICAgfQogfQogCiBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogNDE0cHgpIHsK
LSAgICAuc3BhY2VyIHsKKyAgICBociB7CiAgICAgICAgIC13ZWJraXQtZmxleDogMCAwIDA7CiAg
ICAgICAgIC1tcy1mbGV4OiAwIDAgMDsKICAgICAgICAgZmxleDogMCAwIDA7CkBAIC0zMDAsMTUg
KzI0NCwxMCBAQCBzZWN0aW9uID4gZm9vdGVyIHsKICAgICAgICAgcGFkZGluZzogMCA1cHg7CiAg
ICAgfQogCi0gICAgI2hvbWUgeworICAgICNpbnRybyB7CiAgICAgICAgIG1pbi1oZWlnaHQ6IDEw
MCU7CiAgICAgfQogCi0gICAgLmRpc3BsYXktcHJvZ3Jlc3MtYmFyIHNlY3Rpb24sCi0gICAgLmRp
c3BsYXktc3RhdGlzdGljcy10YWJsZSBzZWN0aW9uIHsKLSAgICAgICAgYm9yZGVyOiAwOwotICAg
IH0KLQogICAgIHNlY3Rpb24gPiBmb290ZXIgewogICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0
aW9uOiBjb2x1bW47CiAgICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwpAQCAtMzE4
LDEwICsyNTcsMTAgQEAgc2VjdGlvbiA+IGZvb3RlciB7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvbWUgU2VjdGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbnRybyBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8K
IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLSNob21lIHsKKyNpbnRybyB7CiAgICAgLXdlYmtp
dC1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAg
IGZsZXgtZGlyZWN0aW9uOiByb3c7CkBAIC0zMzMsNyArMjcyLDcgQEAgc2VjdGlvbiA+IGZvb3Rl
ciB7CiAgICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKIH0KIAotI2hvbWUgaDIgeworI2lu
dHJvIGgyIHsKICAgICBmb250LXNpemU6IDEuMmVtOwogfQogCkBAIC0zNTYsMTMgKzI5NSwxMyBA
QCBzZWN0aW9uID4gZm9vdGVyIHsKICAgICBmbGV4OiAxIDEgYXV0bzsKIH0KIAotI2hvbWUgPiBo
ZWFkZXIgPiBoMSB7CisjaW50cm8gPiBoZWFkZXIgPiBoMSB7CiAgICAgbWFyZ2luOiAwIGF1dG87
CiAgICAgd2lkdGg6IDcwJTsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiB9CiAKLSNob21lIGlu
cHV0W3R5cGU9Im51bWJlciJdIHsKKyNpbnRybyBpbnB1dFt0eXBlPSJudW1iZXIiXSB7CiAgICAg
d2lkdGg6IDUwcHg7CiB9CiAgCkBAIC00MjYsMjAgKzM2NSwyMyBAQCBzZWN0aW9uID4gZm9vdGVy
IHsKIAogI3Rlc3QtY29udGFpbmVyIHsKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKyNy
dW5uaW5nLXRlc3QgeworICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OworICAgIGRpc3BsYXk6IC13
ZWJraXQtZmxleDsKKyAgICBkaXNwbGF5OiBmbGV4OworCiAgICAgLW1zLWZsZXgtYWxpZ246IGNl
bnRlcjsKICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgLXdlYmtpdC1ib3gt
YWxpZ246IGNlbnRlcjsKICAgICBhbGlnbi1pdGVtczogY2VudGVyOworCiAgICAgLXdlYmtpdC1q
dXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAg
anVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiB9CiAKLSNydW5uaW5nLXRlc3QgewotICAgIHdpZHRo
OiAxMDAlOwotICAgIGhlaWdodDogMTAwJTsKLX0KLQogI3J1bm5pbmctdGVzdCA+IGlmcmFtZSB7
CiAgICAgd2lkdGg6IDEyMDBweDsKICAgICBoZWlnaHQ6IDYwMHB4OwpAQCAtNDQ3LDEyICszODks
MTEgQEAgc2VjdGlvbiA+IGZvb3RlciB7CiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKIH0KIAotI3By
b2dyZXNzLCAjcmVjb3JkIHsKKyNwcm9ncmVzcyB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KIAot
LmRpc3BsYXktcHJvZ3Jlc3MtYmFyICNwcm9ncmVzcywKLS5kaXNwbGF5LXN0YXRpc3RpY3MtdGFi
bGUgI3Byb2dyZXNzIHsKKy5kaXNwbGF5LXByb2dyZXNzLWJhciAjcHJvZ3Jlc3MgewogICAgIGRp
c3BsYXk6IGJsb2NrOwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICBib3R0b206IC02cHg7
CkBAIC00NjQsOCArNDA1LDcgQEAgc2VjdGlvbiA+IGZvb3RlciB7CiAgICAgYm9yZGVyLXJpZ2h0
OiA2cHggc29saWQgcmdiKDQ2LCA1MSwgNTUpOwogfQogCi0uZGlzcGxheS1wcm9ncmVzcy1iYXIg
I3Byb2dyZXNzLWNvbXBsZXRlZCwKLS5kaXNwbGF5LXN0YXRpc3RpY3MtdGFibGUgI3Byb2dyZXNz
LWNvbXBsZXRlZCB7CisuZGlzcGxheS1wcm9ncmVzcy1iYXIgI3Byb2dyZXNzLWNvbXBsZXRlZCB7
CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogMDsKICAgICBsZWZ0OiAwOwpAQCAt
NDc0LDE2ICs0MTQsNiBAQCBzZWN0aW9uID4gZm9vdGVyIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMjM1LCAyMzUsIDIzNSk7CiB9CiAKLS5kaXNwbGF5LXByb2dyZXNzLWJhciAjcmVjb3Jk
LAotLmRpc3BsYXktc3RhdGlzdGljcy10YWJsZSAjcmVjb3JkIHsKLSAgICBkaXNwbGF5OiBibG9j
azsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAtOTVweDsKLSAgICBsZWZ0
OiAwcHg7Ci0gICAgcmlnaHQ6IDBweDsKLSAgICBwYWRkaW5nOiAxNnB4OwotfQotCiBAbWVkaWEg
c2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0aDogMTgwMHB4KSB7CiAgICAgI3J1bm5pbmctdGVz
dCA+IGlmcmFtZSB7CiAgICAgICAgIHdpZHRoOiAxNjAwcHg7CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5p
bW9tZXRlci5qcwppbmRleCA5ZGU3OTZlLi45ZDM4ZmRjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2Fu
aW1vbWV0ZXIuanMKQEAgLTEsNyArMSw2IEBACiBVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KHdpbmRv
dy5iZW5jaG1hcmtSdW5uZXJDbGllbnQsIHsKICAgICB0ZXN0c0NvdW50OiBudWxsLAogICAgIHBy
b2dyZXNzQmFyOiBudWxsLAotICAgIHJlY29yZFRhYmxlOiBudWxsLAogCiAgICAgZGlkUnVuVGVz
dDogZnVuY3Rpb24gKCkKICAgICB7CkBAIC0xMiw3ICsxMSw2IEBAIFV0aWxpdGllcy5leHRlbmRP
YmplY3Qod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudCwgewogICAgIHsKICAgICAgICAgdGhp
cy5yZXN1bHRzID0gbmV3IFJlc3VsdHNEYXNoYm9hcmQoKTsKICAgICAgICAgdGhpcy5wcm9ncmVz
c0JhciA9IG5ldyBQcm9ncmVzc0Jhcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvZ3Jlc3Mt
Y29tcGxldGVkIiksIHRoaXMudGVzdHNDb3VudCk7Ci0gICAgICAgIHRoaXMucmVjb3JkVGFibGUg
PSBuZXcgUmVzdWx0c1RhYmxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0LWNvbnRhaW5l
ciAucmVzdWx0cy10YWJsZSIpLCBIZWFkZXJzKTsKICAgICB9CiB9KTsKIApAQCAtNzgsMTIgKzc2
LDYgQEAgVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh3aW5kb3cuc2VjdGlvbnNNYW5hZ2VyLCB7CiAg
ICAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgIHJhbmdl
LnNlbGVjdE5vZGVDb250ZW50cyhlbGVtZW50KTsKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKLSAgICB9LAotCi0gICAgc2V0dXBSdW5uaW5nU2VjdGlvblN0
eWxlOiBmdW5jdGlvbihvcHRpb25zKQotICAgIHsKLSAgICAgICAgaWYgKG9wdGlvbnNbImRpc3Bs
YXkiXSAhPSAic3RhdGlzdGljcy10YWJsZSIpCi0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVjb3JkIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICB9CiB9KTsKIApA
QCAtMTkwLDcgKzE4Miw3IEBAIHdpbmRvdy5zdWl0ZXNNYW5hZ2VyID0KICAgICBfdXBkYXRlU3Rh
cnRCdXR0b25TdGF0ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHN1aXRlc0VsZW1l
bnRzID0gdGhpcy5fc3VpdGVzRWxlbWVudHMoKTsKLSAgICAgICAgdmFyIHN0YXJ0QnV0dG9uID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2hvbWUgPiBmb290ZXIgPiBidXR0b24iKTsKKyAgICAg
ICAgdmFyIHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2ludHJvID4gZm9v
dGVyID4gYnV0dG9uIik7CiAgICAgICAgIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1
aXRlc0VsZW1lbnRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgc3VpdGVFbGVtZW50
ID0gc3VpdGVzRWxlbWVudHNbaV07CkBAIC0zOTEsNyArMzgzLDYgQEAgVXRpbGl0aWVzLmV4dGVu
ZE9iamVjdCh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlciwgewogICAgIHsKICAgICAgICAgdmFy
IG9wdGlvbnMgPSBvcHRpb25zTWFuYWdlci51cGRhdGVMb2NhbFN0b3JhZ2VGcm9tVUkoKTsKICAg
ICAgICAgdmFyIHN1aXRlcyA9IHN1aXRlc01hbmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbVVJ
KCk7Ci0gICAgICAgIHNlY3Rpb25zTWFuYWdlci5zZXR1cFJ1bm5pbmdTZWN0aW9uU3R5bGUob3B0
aW9ucyk7CiAgICAgICAgIHRoaXMuX3N0YXJ0QmVuY2htYXJrKHN1aXRlcywgb3B0aW9ucywgInJ1
bm5pbmctdGVzdCIpOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmst
cnVubmVyLmpzCmluZGV4IGVkMzE3NDUuLjRiYTE1NTQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIu
anMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5u
ZXIvYmVuY2htYXJrLXJ1bm5lci5qcwpAQCAtMTAzLDcgKzEwMyw3IEBAIEJlbmNobWFya1J1bm5l
ci5wcm90b3R5cGUuX3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzID0gZnVuY3Rpb24oc3RhdGUpCiAg
ICAgdmFyIGNvbnRlbnRXaW5kb3cgPSB0aGlzLl9mcmFtZS5jb250ZW50V2luZG93OwogICAgIHZh
ciBzZWxmID0gdGhpczsKIAotICAgIHN1aXRlLnJ1bihjb250ZW50V2luZG93LCB0ZXN0LCB0aGlz
Ll9jbGllbnQub3B0aW9ucywgdGhpcy5fY2xpZW50LnJlY29yZFRhYmxlLCB0aGlzLl9jbGllbnQu
cHJvZ3Jlc3NCYXIpLnRoZW4oZnVuY3Rpb24oc2FtcGxlcikgeworICAgIHN1aXRlLnJ1bihjb250
ZW50V2luZG93LCB0ZXN0LCB0aGlzLl9jbGllbnQub3B0aW9ucywgdGhpcy5fY2xpZW50LnByb2dy
ZXNzQmFyKS50aGVuKGZ1bmN0aW9uKHNhbXBsZXIpIHsKICAgICAgICAgdmFyIHNhbXBsZXJzID0g
c2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gfHwgW107CiAgICAgICAgIAogICAgICAg
ICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2FtcGxlcjsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3MKaW5k
ZXggMGZhNmY4My4uNjBkMmVjNiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3MKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3MKQEAgLTEzMCw3ICsx
MzAsNyBAQCBidXR0b246YWN0aXZlIHsKIH0KIAogLyogUnVubmluZyB0ZXN0IHNlY3Rpb24gKi8K
LSN0ZXN0LWNvbnRhaW5lciB7CisjdGVzdC1jb250YWluZXIuc2VsZWN0ZWQgewogICAgIGRpc3Bs
YXk6IC1tcy1mbGV4Ym94OwogICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICBkaXNwbGF5
OiBmbGV4OwpAQCAtMTM5LDYgKzEzOSw3IEBAIGJ1dHRvbjphY3RpdmUgewogICAgIC13ZWJraXQt
YWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAg
IGFsaWduLWl0ZW1zOiBjZW50ZXI7CisKICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2Vu
dGVyOwogICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNl
bnRlcjsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMv
cnVubmVyL3Rlc3RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9y
dW5uZXIvdGVzdHMuanMKaW5kZXggZjdiN2Q3NS4uMGIwN2UyYSAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMKQEAgLTgs
OSArOCw5IEBAIFN1aXRlLnByb3RvdHlwZS5wcmVwYXJlID0gZnVuY3Rpb24ocnVubmVyLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAg
IH0pOwogfTsKLVN1aXRlLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbihjb250ZW50V2luZG93LCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitTdWl0ZS5wcm90b3R5cGUu
cnVuID0gZnVuY3Rpb24oY29udGVudFdpbmRvdywgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIp
CiB7Ci0gICAgcmV0dXJuIGNvbnRlbnRXaW5kb3cucnVuQmVuY2htYXJrKHRoaXMsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgcmV0dXJuIGNvbnRlbnRXaW5k
b3cucnVuQmVuY2htYXJrKHRoaXMsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH07CiAK
IHZhciBTdWl0ZXMgPSBbXTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFn
ZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCmluZGV4IDI1OGNjZDcuLjI4
YTc4MTEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcwpAQCAtMzIsOSArMzIsOSBAQCBCb3VuY2lu
Z0NhbnZhc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkK
ICAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2UodGhpcyk7CiB9CiAKLWZ1bmN0aW9u
IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgQm91bmNpbmdD
YW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0Jl
bmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9
CiAKIEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKQEAgLTQ1LDcg
KzQ1LDcgQEAgQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0
YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKICAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1h
Z2VzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtD
bGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0JhcikKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24o
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewotICAgIHJldHVybiBuZXcgQm91
bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0Jhcik7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlc0Jl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNh
bnZhcy1wYXJ0aWNsZXMuanMKaW5kZXggNGNmN2NkNS4uMGI0MGRhMiAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJj
ZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52
YXMtcGFydGljbGVzLmpzCkBAIC05MSw5ICs5MSw5IEBAIEJvdW5jaW5nQ2FudmFzUGFydGljbGVz
QW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCiAgICAgcmV0dXJuIEJvdW5j
aW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKIH0KIAot
ZnVuY3Rpb24gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFz
UGFydGljbGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsK
LSAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogQm91bmNpbmdDYW52YXNQYXJ0
aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5w
cm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVz
b3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMKaW5kZXggZjIyYTc1Ny4uYmU0YTFkOSAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcworKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCkBAIC03MSw5ICs3MSw5IEBAIEJvdW5jaW5nQ2FudmFz
U2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKQogICAgIHJl
dHVybiBuZXcgQm91bmNpbmdDYW52YXNTaGFwZSh0aGlzKTsKIH0KIAotZnVuY3Rpb24gQm91bmNp
bmdDYW52YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICBCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJr
LmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogQm91
bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3Vu
Y2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtODQsNyArODQsNyBA
QCBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBm
dW5jdGlvbihlbGVtZW50KQogICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNTaGFwZXNTdGFn
ZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5j
cmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKQord2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nh
bnZhc1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKTsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNl
cy9ib3VuY2luZy1jc3MtaW1hZ2VzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcwpp
bmRleCA5NmYwZTU5Li4wZDNhZTI0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1h
Z2VzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMuanMKQEAgLTQ0LDkgKzQ0LDkg
QEAgQm91bmNpbmdDc3NJbWFnZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVk
ID0gZnVuY3Rpb24ocGFydGljbGUpCiAgICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUoKTsKIH0K
IAotZnVuY3Rpb24gQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nQ3NzSW1hZ2Vz
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICBCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJr
LmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogQm91
bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2lu
Z1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtNTcsNyArNTcsNyBAQCBCb3VuY2lu
Z0Nzc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVt
ZW50KQogICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlz
Ll9vcHRpb25zKTsKIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlv
bihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2luZG93
LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cHJvZ3Jlc3NCYXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFy
ayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICBy
ZXR1cm4gbmV3IEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVz
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcwppbmRleCA2ZWRhZWQ4Li42Zjk0MzM1
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNzcy1zaGFwZXMuanMKQEAgLTYyLDkgKzYyLDkgQEAgQm91bmNpbmdDc3NTaGFwZXNT
dGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUp
CiAgICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUoKTsKIH0KIAotZnVuY3Rpb24gQm91bmNpbmdD
c3NTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFy
ay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpOworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1h
cmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5w
cm90b3R5cGUpOwpAQCAtNzUsNyArNzUsNyBAQCBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQogICAgIHJldHVybiBuZXcg
Qm91bmNpbmdDc3NTaGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKIH0KIAotd2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2luZG93LmJlbmNobWFya0NsaWVudC5jcmVh
dGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAg
cmV0dXJuIG5ldyBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3Nz
U2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1w
YXJ0aWNsZXMuanMKaW5kZXggZDBmOTRjYS4uYTBmN2JmZCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctcGFydGljbGVzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwpAQCAt
MTI0LDkgKzEyNCw5IEBAIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnR1bmUgPSBm
dW5jdGlvbihjb3VudCkKICAgICByZXR1cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKIH0KIAot
ZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVzQmVu
Y2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICBTdGFnZUJl
bmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpOworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1p
bWFnZXMuanMKaW5kZXggYzY4YmNlMC4uNDM1ZjJjZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNp
bmctc3ZnLWltYWdlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCkBAIC0y
Niw5ICsyNiw5IEBAIEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRp
Y2xlID0gZnVuY3Rpb24oKQogICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdJbWFnZSh0aGlzKTsK
IH0KIAotZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnSW1h
Z2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICBC
b3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2ht
YXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAog
Qm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtMzksNyArMzksNyBAQCBCb3Vu
Y2luZ1N2Z0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihl
bGVtZW50KQogICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVtZW50LCB0
aGlzLl9vcHRpb25zKTsKIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5j
dGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAg
ICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hh
cGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcwppbmRleCA3NmRjOWVlLi5kMDI4
MDFhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMKQEAgLTg1LDkgKzg1LDkgQEAgQm91bmNpbmdTdmdTaGFw
ZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGlj
bGUpCiAgICAgdGhpcy5fZW5zdXJlRGVmc0lzQ3JlYXRlZCgpLnJlbW92ZUNoaWxkKGdyYWRpZW50
KTsKIH0KIAotZnVuY3Rpb24gQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIEJvdW5jaW5nU3Zn
U2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAg
ICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIEJvdW5jaW5nUGFydGljbGVzQmVu
Y2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0K
IAogQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShC
b3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtOTgsNyArOTgsNyBAQCBC
b3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlv
bihlbGVtZW50KQogICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdTaGFwZXNTdGFnZShlbGVtZW50
LCB0aGlzLl9vcHRpb25zKTsKIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBm
dW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQor
d2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc0Jl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsK
KyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZh
cy1lbGVjdHJvbnMuanMKaW5kZXggNGU5MzIwNC4uOGRlNTg0MCAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtZWxl
Y3Ryb25zLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxl
cy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcwpAQCAtMTA0LDkgKzEwNCw5IEBAIENhbnZh
c0VsZWN0cm9uc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQogICAgIHJl
dHVybiBTdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7CiB9CiAKLWZ1
bmN0aW9uIENhbnZhc0VsZWN0cm9uc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKQorZnVuY3Rpb24gQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICBTdGFnZUJlbmNobWFy
ay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpOworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHByb2dyZXNzQmFyKTsKIH0KIAogQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKQEAgLTEyNCw5ICsxMjQs
OSBAQCBDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0g
ZnVuY3Rpb24oKQogICAgIHJldHVybiBuZXcgQ2FudmFzRWxlY3Ryb25zQW5pbWF0b3IodGhpcywg
dGhpcy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVu
Y3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3dp
bmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHByb2dyZXNzQmFyKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20g
dGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCiAgICAgLy8gdGVzdCBieSBjcmVhdGlu
ZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCi0gICAgcmV0dXJuIG5ldyBDYW52YXNFbGVjdHJvbnNC
ZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7
CisgICAgcmV0dXJuIG5ldyBDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtc3Rh
cnMuanMKaW5kZXggZmJkYmI0Zi4uZDM3YzJhMiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanMKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9j
YW52YXMtc3RhcnMuanMKQEAgLTEwMSw5ICsxMDEsOSBAQCBDYW52YXNTdGFyc0FuaW1hdG9yLnBy
b3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQogICAgcmV0dXJuIFN0YWdlQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKIH0KIAotZnVuY3Rpb24gQ2FudmFzU3RhcnNCZW5j
aG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1
bmN0aW9uIENhbnZhc1N0YXJzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVz
c0JhcikKIHsKLSAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICBTdGFnZUJlbmNobWFyay5jYWxsKHRo
aXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiAKIENhbnZhc1N0YXJz
QmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90
eXBlKTsKQEAgLTEyMSw5ICsxMjEsOSBAQCBDYW52YXNTdGFyc0JlbmNobWFyay5wcm90b3R5cGUu
Y3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpCiAgICByZXR1cm4gbmV3IENhbnZhc1N0YXJzQW5p
bWF0b3IodGhpcywgdGhpcy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQu
Y3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0JhcikKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewogICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBj
YWxsZWQgZnJvbSB0aGUgdGVzdCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKICAgIC8vIHRlc3Qg
YnkgY3JlYXRpbmcgeW91ciBiZW5jaG1hcmsgb2JqZWN0LgotICAgcmV0dXJuIG5ldyBDYW52YXNT
dGFyc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKTsKKyAgIHJldHVybiBuZXcgQ2FudmFzU3RhcnNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNl
cy9jYW52YXMtc3RhZ2UuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFz
dGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanMKaW5kZXggZmQxZDJjNi4uZDc4YTE2YyAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJj
ZXMvY2FudmFzLXN0YWdlLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qcwpAQCAtNTYsOCArNTYsOCBAQCBTaW1w
bGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkKIH0KIAogCi1m
dW5jdGlvbiBTaW1wbGVDYW52YXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0JhcikgewotICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CitmdW5jdGlvbiBT
aW1wbGVDYW52YXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKSB7
CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJv
Z3Jlc3NCYXIpOwogfQogU2ltcGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKIFNpbXBsZUNhbnZhc0JlbmNobWFyay5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNCZW5jaG1hcms7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52
YXMtdGVzdHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jl
c291cmNlcy9jYW52YXMtdGVzdHMuanMKaW5kZXggNWE3MDYxOC4uOTI0YjljNSAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2Fu
dmFzLXRlc3RzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0
ZXIvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcwpAQCAtMTg0LDggKzE4NCw4IEBAIENhbnZhc0xp
bmVQYXRoU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2FudmFzTGluZVBhdGhTdGFnZTsK
IAogLy8gPT09IEJFTkNITUFSSyA9PT0KIAotZnVuY3Rpb24gQ2FudmFzUGF0aEJlbmNobWFyayhz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7Ci0gICAgU2lt
cGxlQ2FudmFzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0Jhcik7CitmdW5jdGlvbiBDYW52YXNQYXRoQmVuY2htYXJrKHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikgeworICAgIFNpbXBsZUNhbnZhc0JlbmNobWFy
ay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiBDYW52
YXNQYXRoQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2ltcGxlQ2FudmFzQmVu
Y2htYXJrLnByb3RvdHlwZSk7CiBDYW52YXNQYXRoQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IENhbnZhc1BhdGhCZW5jaG1hcms7CkBAIC0yMDEsOCArMjAxLDggQEAgQ2FudmFzUGF0
aEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQogICAg
IH0KIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7Ci0gICAgcmV0dXJuIG5l
dyBDYW52YXNQYXRoQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpOword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpIHsKKyAgICByZXR1cm4gbmV3IENhbnZh
c1BhdGhCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAog
fSkoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJhbnNm
b3Jtcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNl
cy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzCmluZGV4IDliZTk5ZWMuLjYyNDlmZDYgMTAwNjQ0
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9j
b21wb3NpdGluZy10cmFuc2Zvcm1zLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzCkBAIC00OCw5
ICs0OCw5IEBAIENvbXBvc2l0aW5nVHJhbnNmb3Jtc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdp
bGxCZVJlbW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkKICAgICBwYXJ0aWNsZS5lbGVtZW50LnJl
bW92ZSgpOwogfQogCi1mdW5jdGlvbiBDb21wb3NpdGVkVHJhbnNmb3Jtc0JlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQorZnVuY3Rpb24gQ29t
cG9zaXRlZFRyYW5zZm9ybXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNz
QmFyKQogewotICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jl
c3NCYXIpOwogfQogCiBDb21wb3NpdGVkVHJhbnNmb3Jtc0JlbmNobWFyay5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CkBAIC02
MSw3ICs2MSw3IEBAIENvbXBvc2l0ZWRUcmFuc2Zvcm1zQmVuY2htYXJrLnByb3RvdHlwZS5jcmVh
dGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCiAgICAgcmV0dXJuIG5ldyBDb21wb3NpdGluZ1Ry
YW5zZm9ybXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKIH0KIAotd2luZG93LmJlbmNo
bWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKQord2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5j
dGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgcmV0dXJuIG5l
dyBDb21wb3NpdGVkVHJhbnNmb3Jtc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4gbmV3IENvbXBvc2l0ZWRUcmFuc2Zv
cm1zQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4u
anMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMK
aW5kZXggNjg2ZjA0ZC4uNDkxM2EyZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcwpAQCAtMjI4LDExICsyMjgsMTEgQEAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpCiB9KTsKIAogLy8gVGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgc3VpdGUgY29udHJvbGxlciBydW4tY2FsbGJhY2sg
d2hlbiBydW5uaW5nIHRoZSBiZW5jaG1hcmsgcnVubmVyLgotd2luZG93LnJ1bkJlbmNobWFyayA9
IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
Cit3aW5kb3cucnVuQmVuY2htYXJrID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHBy
b2dyZXNzQmFyKQogewogICAgIHZhciBiZW5jaG1hcmtPcHRpb25zID0geyBjb21wbGV4aXR5OiB0
ZXN0LmNvbXBsZXhpdHkgfTsKICAgICBiZW5jaG1hcmtPcHRpb25zID0gVXRpbGl0aWVzLm1lcmdl
T2JqZWN0cyhiZW5jaG1hcmtPcHRpb25zLCBvcHRpb25zKTsKICAgICBiZW5jaG1hcmtPcHRpb25z
ID0gVXRpbGl0aWVzLm1lcmdlT2JqZWN0cyhiZW5jaG1hcmtPcHRpb25zLCBVdGlsaXRpZXMucGFy
c2VQYXJhbWV0ZXJzKCkpOwotICAgIHdpbmRvdy5iZW5jaG1hcmsgPSB3aW5kb3cuYmVuY2htYXJr
Q2xpZW50LmNyZWF0ZShzdWl0ZSwgdGVzdCwgYmVuY2htYXJrT3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKTsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0gd2luZG93LmJlbmNobWFya0Ns
aWVudC5jcmVhdGUoc3VpdGUsIHRlc3QsIGJlbmNobWFya09wdGlvbnMsIHByb2dyZXNzQmFyKTsK
ICAgICByZXR1cm4gd2luZG93LmJlbmNobWFyay5ydW4oKTsKIH0KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCmluZGV4IDg4ODg5
YTkuLjdiMGIxMTQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMvc3RhZ2UuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy9zdGFnZS5qcwpAQCAtMTI4LDcgKzEyOCw3IEBAIFN0YWdlQW5pbWF0b3Iu
cHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWZ1
bmN0aW9uIFN0YWdlQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBTdGFnZUJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpCiB7CiAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgb3B0aW9ucyk7CiAg
ICAgCkBAIC0xNDAsNyArMTQwLDYgQEAgZnVuY3Rpb24gU3RhZ2VCZW5jaG1hcmsoc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKICAgICB0aGlzLl9hbmltYXRv
ciA9IHRoaXMuY3JlYXRlQW5pbWF0b3IoKTsKICAgICB0aGlzLl9zdWl0ZSA9IHN1aXRlOwogICAg
IHRoaXMuX3Rlc3QgPSB0ZXN0OwotICAgIHRoaXMuX3JlY29yZFRhYmxlID0gcmVjb3JkVGFibGU7
CiAgICAgdGhpcy5fcHJvZ3Jlc3NCYXIgPSBwcm9ncmVzc0JhcjsKIH0KIApAQCAtMTY5LDExICsx
NjgsOCBAQCBTdGFnZUJlbmNobWFyay5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpCiAKIFN0
YWdlQmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVzdWx0cyA9IGZ1bmN0aW9uKHByb2dyZXNzLCBt
ZXNzYWdlKQogewotICAgIGlmICghdGhpcy5fcmVjb3JkVGFibGUgfHwgIXRoaXMuX3Byb2dyZXNz
QmFyIHx8ICF0aGlzLl90ZXN0KQorICAgIGlmICghdGhpcy5fcHJvZ3Jlc3NCYXIgfHwgIXRoaXMu
X3Rlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh0aGlzLl9vcHRpb25zWyJkaXNwbGF5
Il0gPT0gInN0YXRpc3RpY3MtdGFibGUiKQotICAgICAgICB0aGlzLl9yZWNvcmRUYWJsZS5zaG93
UmVjb3JkKHRoaXMuX3Rlc3QubmFtZSwgbWVzc2FnZSwgdGhpcy5fc2FtcGxlci50b0pTT04odHJ1
ZSwgZmFsc2UpLCB0aGlzLl9vcHRpb25zKTsKLQogICAgIHRoaXMuX3Byb2dyZXNzQmFyLnNldFBv
cyhwcm9ncmVzcyk7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1w
YXRocy5qcwppbmRleCAzNzIxNWVhLi4xZGFkMjA1IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhz
LmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3Vy
Y2VzL3NpbXBsZS1jYW52YXMtcGF0aHMuanMKQEAgLTI0NCw4ICsyNDQsOCBAQCBDYW52YXNMaW5l
RGFzaFN0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKSB7CiAKIC8vID09PSBCRU5D
SE1BUksgPT09CiAKLWZ1bmN0aW9uIENhbnZhc1BhdGhCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgewotICAgIFNpbXBsZUNhbnZhc0JlbmNo
bWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jl
c3NCYXIpOworZnVuY3Rpb24gQ2FudmFzUGF0aEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpIHsKKyAgICBTaW1wbGVDYW52YXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQogQ2FudmFzUGF0aEJlbmNobWFy
ay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNpbXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5
cGUpOwogQ2FudmFzUGF0aEJlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNQ
YXRoQmVuY2htYXJrOwpAQCAtMjkwLDYgKzI5MCw2IEBAIENhbnZhc1BhdGhCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKICAgICB9CiB9CiAKLXdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgewotICAgIHJldHVybiBuZXcgQ2FudmFzUGF0aEJl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsK
K3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHByb2dyZXNzQmFyKSB7CisgICAgcmV0dXJuIG5ldyBDYW52YXNQYXRoQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2Fu
dmFzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJj
ZXMvc2ltcGxlLWNhbnZhcy5qcwppbmRleCBlNGY2ZmYyLi41NWY0YTg2IDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUt
Y2FudmFzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUv
cmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanMKQEAgLTUxLDggKzUxLDggQEAgU2ltcGxlQ2FudmFz
QW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCiB9CiAKIAotZnVuY3Rpb24g
U2ltcGxlQ2FudmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpIHsKLSAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworZnVuY3Rpb24gU2ltcGxlQ2Fu
dmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikgeworICAgIFN0
YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFy
KTsKIH0KIFNpbXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0
YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CiBTaW1wbGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gU2ltcGxlQ2FudmFzQmVuY2htYXJrOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1j
YW52YXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVz
b3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcwppbmRleCBjNmE2MDBkLi4zYzg4OWVlIDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2Vz
L3RlbXBsYXRlLWNhbnZhcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcwpAQCAtNzYsOSArNzYsOSBA
QCBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQog
ICAgIHJldHVybiBTdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7CiB9
CiAKLWZ1bmN0aW9uIFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBUZW1wbGF0ZUNhbnZhc0JlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgU3RhZ2VCZW5j
aG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKTsKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCBwcm9ncmVzc0Jhcik7CiB9CiAKIFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKQEAgLTk2LDkgKzk2
LDkgQEAgVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0g
ZnVuY3Rpb24oKQogICAgIHJldHVybiBuZXcgVGVtcGxhdGVDYW52YXNBbmltYXRvcih0aGlzLCB0
aGlzLl9vcHRpb25zKTsKIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5j
dGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0
aGUgdGVzdCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKICAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5n
IHlvdXIgYmVuY2htYXJrIG9iamVjdC4KLSAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ2FudmFzQmVu
Y2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOwor
ICAgIHJldHVybiBuZXcgVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHByb2dyZXNzQmFyKTsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jc3Mu
anMKaW5kZXggMTFjZTk2MS4uMmUzYzk1NSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jc3MuanMKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1w
bGF0ZS1jc3MuanMKQEAgLTMyLDkgKzMyLDkgQEAgVGVtcGxhdGVDc3NTdGFnZS5wcm90b3R5cGUu
YW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHlv
dXIgb2JqZWN0cyBhbmQgYXNrIHRoZW0gdG8gYW5pbWF0ZS4KIH0KIAotZnVuY3Rpb24gVGVtcGxh
dGVDc3NCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikKK2Z1bmN0aW9uIFRlbXBsYXRlQ3NzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCBwcm9ncmVzc0JhcikKIHsKLSAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIFN0YWdlQmVuY2ht
YXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAog
VGVtcGxhdGVDc3NCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNo
bWFyay5wcm90b3R5cGUpOwpAQCAtNDcsOSArNDcsOSBAQCBUZW1wbGF0ZUNzc0JlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQogICAgIHJldHVybiBuZXcg
VGVtcGxhdGVDc3NTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKIH0KIAotd2luZG93LmJl
bmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKQord2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBm
dW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7CiAgICAgLy8gVGhp
cyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgdGVzdCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0
aGUKICAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5nIHlvdXIgYmVuY2htYXJrIG9iamVjdC4KLSAgICBy
ZXR1cm4gbmV3IFRlbXBsYXRlQ3NzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIHJldHVybiBuZXcgVGVtcGxhdGVDc3NCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxh
dGUtc3ZnLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jl
c291cmNlcy90ZW1wbGF0ZS1zdmcuanMKaW5kZXggNDhhODRmYS4uYTg4YWRkNyAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90
ZW1wbGF0ZS1zdmcuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Rl
bXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMKQEAgLTMyLDkgKzMyLDkgQEAgVGVtcGxh
dGVTdmdTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKICAgICAv
LyBUT0RPOiBMb29wIHRocm91Z2ggYWxsIHlvdXIgb2JqZWN0cyBhbmQgYXNrIHRoZW0gdG8gYW5p
bWF0ZS4KIH0KIAotZnVuY3Rpb24gVGVtcGxhdGVTdmdCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIFRlbXBsYXRlU3ZnQmVu
Y2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICBTdGFnZUJl
bmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpOworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogVGVtcGxhdGVTdmdCZW5jaG1hcmsucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtNDcsOSArNDcs
OSBAQCBUZW1wbGF0ZVN2Z0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlv
bihlbGVtZW50KQogICAgIHJldHVybiBuZXcgVGVtcGxhdGVTdmdTdGFnZShlbGVtZW50LCB0aGlz
Ll9vcHRpb25zKTsKIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlv
bihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2luZG93
LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cHJvZ3Jlc3NCYXIpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUg
dGVzdCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKICAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5nIHlv
dXIgYmVuY2htYXJrIG9iamVjdC4KLSAgICByZXR1cm4gbmV3IFRlbXBsYXRlU3ZnQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIHJl
dHVybiBuZXcgVGVtcGxhdGVTdmdCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dy
ZXNzQmFyKTsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMKaW5kZXggZjVmMmFm
NC4uZTJiN2JhOSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMKQEAgLTIzNiw5
ICsyMzYsOSBAQCBMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNv
dW50KQogICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOwogfQogCi1mdW5jdGlv
biBMYXllcmluZ1RleHRCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0JhcikKK2Z1bmN0aW9uIExheWVyaW5nVGV4dEJlbmNobWFyayhzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlz
LCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICBT
dGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jh
cik7CiB9CiAKIExheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CkBAIC0yNDksNyArMjQ5LDcgQEAgTGF5ZXJpbmdU
ZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCiAg
ICAgcmV0dXJuIG5ldyBMYXllcmluZ1RleHRTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsK
IH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2luZG93LmJlbmNobWFya0Ns
aWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIp
CiB7Ci0gICAgcmV0dXJuIG5ldyBMYXllcmluZ1RleHRCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgcmV0dXJuIG5ldyBMYXllcmlu
Z1RleHRCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggY2RhYTM2NC4uNDgwMzZkZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTUsNiAr
NSw1NCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAg
IFVwZGF0ZSBkZWJ1ZyBydW5uZXIgdG8gaGF2ZSBzaW1pbGFyIG5hbWVzIHRvIHRoZSBiYXNpYyBy
dW5uZXIuIEluY2x1ZGUKKyAgICAgICAgdGhhdCBwYWdlJ3MgQ1NTIGFuZCByZW1vdmUgZXh0cmFu
ZW91cyBDU1MgcnVsZXMuCisKKyAgICAgICAgR2V0IHJpZCBvZiB0aGUgc3RhdGlzdGljcyB0YWJs
ZSAjcmVjb3JkLgorCisgICAgICAgICogQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbDogUmVuYW1l
ICNob21lIHRvICNpbnRyby4gUmVuYW1lIC5zcGFjZXIgdG8gaHIuCisgICAgICAgICogQW5pbW9t
ZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzOiBTZXQgdG8gZmxleGJv
eCB3aGVuIHNlbGVjdGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1
bm5lci9hbmltb21ldGVyLmpzOiBSZW1vdmUgcmVjb3JkVGFibGUuCisgICAgICAgICh3aW5kb3cu
c3VpdGVzTWFuYWdlci5fdXBkYXRlU3RhcnRCdXR0b25TdGF0ZSk6IFVwZGF0ZSBzZWxlY3RvciB0
byAjaW50cm8uCisgICAgICAgIChzZXR1cFJ1bm5pbmdTZWN0aW9uU3R5bGUpOiBEZWxldGVkLgor
CisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzOgor
ICAgICAgICAoI3Rlc3QtY29udGFpbmVyLnNlbGVjdGVkKTogQ2hhbmdlIHRvIGZsZXgtYm94IG9u
bHkgd2hlbiB2aXNpYmxlLgorCisgICAgICAgIFJlbW92ZSByZWNvcmRUYWJsZS4KKyAgICAgICAg
KiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczoK
KyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRlc3RBbmRSZWNvcmRSZXN1
bHRzKToKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanM6Cisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNhbnZhcy1pbWFnZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanM6Cisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNhbnZhcy1zaGFwZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMuanM6CisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LWNzcy1zaGFwZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qczoKKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdl
cy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzOgorICAgICAgICAqIEFuaW1v
bWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qczoKKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzOgorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanM6
CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10
cmFuc2Zvcm1zLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4u
anM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanM6CisgICAg
ICAgIChTdGFnZUJlbmNobWFyayk6IFJlbW92ZSBfcmVjb3JkVGFibGUuCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMtcGF0aHMuanM6Cisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMu
anM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxh
dGUtY2FudmFzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3Vy
Y2VzL3RlbXBsYXRlLWNzcy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRl
L3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90
ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzOgorCisyMDE1LTEyLTE5ICBKb24gTGVlICA8
am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlm
ZmVyZW50IHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTI0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAg
ICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzOgog
ICAgICAgICAod2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pOiBGaXggc2VsZWN0b3IsIHNpbmNlIHJl
c3VsdHMtdGFibGUgaXMgdXNlZAogICAgICAgICBpbiBtdWx0aXBsZSBwbGFjZXMsIHNvIGl0IGNh
bm5vdCBiZSBhbiBpZC4KLS0gCjIuNS40IChBcHBsZSBHaXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267869</attachid>
            <date>2015-12-23 15:34:51 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>11. Update the tests.</desc>
            <filename>0011-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>4912</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSAzYWNlMzY3MmZlZmRjZjUzMTA1NjU3YmMxYTA2ZTliM2Y3ZDcwZTMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTYXQs
IDE5IERlYyAyMDE1IDIwOjE4OjA1IC0wODAwClN1YmplY3Q6IFtQQVRDSCAxMS8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpV
cGRhdGUgdGhlIHRlc3RzLgoKKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanM6
CiogQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qczoKKFNp
bXBsZUNhbnZhc1N0YWdlLnByb3RvdHlwZS50dW5lKTogUmVtb3ZlIGEgc3RyYXkgY29uc29sZS5s
b2csIGFuZApyZW1vdmUgb2xkZXN0IGVsZW1lbnRzLgoqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVy
L3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanM6CihTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2Up
OiBTZXQgdGhlIGNvbnRleHQncyBsaW5lIGNhcCBhbmQgam9pbi4KKENhbnZhc0xpbmVQYXRoU3Rh
Z2UpOiBTZXQgdGhlIGNvbnRleHQncyBsaW5lIGNhcC4KLS0tCiBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci90ZXN0cy5qcyAgIHwgIDIgKy0KIC4uLi9Bbmltb21l
dGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzICAgfCAgOCArLS0tLS0t
LQogLi4uL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMg
ICB8ICAzICsrKwogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDIyIGlu
c2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci90ZXN0cy5qcwppbmRleCAwYjA3ZTJhLi45OTE5
MGI4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1
bm5lci90ZXN0cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2Vz
L3J1bm5lci90ZXN0cy5qcwpAQCAtMjIsNyArMjIsNyBAQCBTdWl0ZXMucHVzaChuZXcgU3VpdGUo
IkFuaW1vbWV0ZXIiLAogICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBhcmNzIgogICAgICAgICB9
LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJtYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWw/
cGF0aFR5cGU9bGluZVBhdGgmbGluZUpvaW49cm91bmQiLAorICAgICAgICAgICAgdXJsOiAibWFz
dGVyL2NhbnZhcy1zdGFnZS5odG1sP3BhdGhUeXBlPWxpbmVQYXRoJmxpbmVKb2luPXJvdW5kJmxp
bmVDYXA9cm91bmQiLAogICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHBhdGgsIHJvdW5k
IGpvaW4iCiAgICAgICAgIH0sCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1z
dGFnZS5qcwppbmRleCBkNzhhMTZjLi5jZWU4ZmNhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanMKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2Fu
dmFzLXN0YWdlLmpzCkBAIC0xMCw3ICsxMCw2IEBAIFNpbXBsZUNhbnZhc1N0YWdlLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKIFNpbXBsZUNhbnZhc1N0YWdlLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNpbXBsZUNhbnZhc1N0YWdlOwogU2ltcGxlQ2FudmFzU3Rh
Z2UucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKIHsKLSAgICBjb25zb2xlLmxvZygi
dHVuZSAiICsgY291bnQpOwogICAgIGlmIChjb3VudCA9PSAwKQogICAgICAgICByZXR1cm4gdGhp
cy5fb2JqZWN0cy5sZW5ndGg7CiAKQEAgLTI1LDEyICsyNCw3IEBAIFNpbXBsZUNhbnZhc1N0YWdl
LnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCiAgICAgfQogCiAgICAgY291bnQgPSBN
YXRoLm1pbigtY291bnQsIHRoaXMuX29iamVjdHMubGVuZ3RoKTsKLSAgICB0aGlzLl9vYmplY3Rz
LnNwbGljZSgtY291bnQsIGNvdW50KTsKLS8qICAgIGZvcih2YXIgaSA9MDtpPGNvdW50O2krKykg
ewotICAgICAgICB0aGlzLl9vYmplY3RzLnNoaWZ0KCk7Ci0gICAgfQotKi8KLQorICAgIHRoaXMu
X29iamVjdHMuc3BsaWNlKDAsIGNvdW50KTsKICAgICByZXR1cm4gdGhpcy5fb2JqZWN0cy5sZW5n
dGg7CiB9CiBTaW1wbGVDYW52YXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVz
b3VyY2VzL2NhbnZhcy10ZXN0cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcwppbmRleCA5MjRiOWM1Li5iODA0ZWM3
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jl
c291cmNlcy9jYW52YXMtdGVzdHMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzCkBAIC0xMTYsNiArMTE2LDgg
QEAgQ2FudmFzTGluZVBvaW50LnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY29udGV4dCwgc3Rh
Z2UpIHsKIAogZnVuY3Rpb24gU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlKGVsZW1lbnQsIG9w
dGlvbnMsIGNhbnZhc09iamVjdCkgewogICAgIFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywg
ZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KTsKKyAgICB0aGlzLmNvbnRleHQubGluZUNh
cCA9IG9wdGlvbnNbImxpbmVDYXAiXSB8fCAiYnV0dCI7CisgICAgdGhpcy5jb250ZXh0LmxpbmVK
b2luID0gb3B0aW9uc1sibGluZUpvaW4iXSB8fCAiYmV2ZWwiOwogfQogU2ltcGxlQ2FudmFzUGF0
aFN0cm9rZVN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2ltcGxlQ2FudmFzU3RhZ2Uu
cHJvdG90eXBlKTsKIFNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2U7CkBAIC0xNzgsNiArMTgwLDcgQEAg
ZnVuY3Rpb24gQ2FudmFzTGluZVBhdGhTdGFnZShlbGVtZW50LCBvcHRpb25zKQogewogICAgIFNp
bXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMsIENh
bnZhc0xpbmVQb2ludCk7CiAgICAgdGhpcy5jb250ZXh0LmxpbmVKb2luID0gb3B0aW9uc1sibGlu
ZUpvaW4iXSB8fCAiYmV2ZWwiOworICAgIHRoaXMuY29udGV4dC5saW5lQ2FwID0gb3B0aW9uc1si
bGluZUNhcCJdIHx8ICJidXR0IjsKIH0KIENhbnZhc0xpbmVQYXRoU3RhZ2UucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UucHJvdG90eXBlKTsKIENh
bnZhc0xpbmVQYXRoU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2FudmFzTGluZVBhdGhT
dGFnZTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDgwMzZkZS4uMDUyMDNjNyAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cK
QEAgLTUsNiArNSwyMyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgog
CisgICAgICAgIFVwZGF0ZSB0aGUgdGVzdHMuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291
cmNlcy9ydW5uZXIvdGVzdHMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIv
cmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qczoKKyAgICAgICAgKFNpbXBsZUNhbnZhc1N0YWdlLnBy
b3RvdHlwZS50dW5lKTogUmVtb3ZlIGEgc3RyYXkgY29uc29sZS5sb2csIGFuZAorICAgICAgICBy
ZW1vdmUgb2xkZXN0IGVsZW1lbnRzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVy
L3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanM6CisgICAgICAgIChTaW1wbGVDYW52YXNQYXRoU3Ry
b2tlU3RhZ2UpOiBTZXQgdGhlIGNvbnRleHQncyBsaW5lIGNhcCBhbmQgam9pbi4KKyAgICAgICAg
KENhbnZhc0xpbmVQYXRoU3RhZ2UpOiBTZXQgdGhlIGNvbnRleHQncyBsaW5lIGNhcC4KKworMjAx
NS0xMi0xOSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgYmVu
Y2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKICAgICAgICAgVXBkYXRlIGRlYnVnIHJ1bm5lciB0byBoYXZlIHNpbWls
YXIgbmFtZXMgdG8gdGhlIGJhc2ljIHJ1bm5lci4gSW5jbHVkZQogICAgICAgICB0aGF0IHBhZ2Un
cyBDU1MgYW5kIHJlbW92ZSBleHRyYW5lb3VzIENTUyBydWxlcy4KIAotLSAKMi41LjQgKEFwcGxl
IEdpdC02MSkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267871</attachid>
            <date>2015-12-23 15:35:29 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>12. Update the structure of the harness.</desc>
            <filename>0012-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>52836</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSA5ODBhNDRhYTJmOWNlZGFiZDIyMWRjM2YyZGNkOGRkMzczYzQwNWM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBXZWQs
IDIzIERlYyAyMDE1IDAxOjE2OjMwIC0wODAwClN1YmplY3Q6IFtQQVRDSCAxMi8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpV
cGRhdGUgdGhlIHN0cnVjdHVyZSBvZiB0aGUgaGFybmVzcy4gUmVtb3ZlIHRoZSBKU09OLXBlci10
ZXN0IGJ1dCBrZWVwCnRoZSBKU09OIG9mIHRoZSB3aG9sZSB0ZXN0IHJ1bi4gVXNlIHRoZSBmdWxs
IHBhZ2UgaW4gb3JkZXIgdG8gZGlzcGxheQp0aGUgZ3JhcGguCgoqIEFuaW1vbWV0ZXIvZGV2ZWxv
cGVyLmh0bWw6IFVwZGF0ZSBzZXZlcmFsIG9mIHRoZSBKUyBmaWxlIGluY2x1ZGVzIHRvIFVURi04
LiBSZW1vdmUgaGVhZGVyIGFuZCBmb290ZXIuIFRlc3QgcmVzdWx0cyBzY3JlZW4gaW5jbHVkZXMg
c2NvcmUsCmF2ZXJhZ2UsIGFuZCB3b3JzdCA1JSBzdGF0aXN0aWNzLgoqIEFuaW1vbWV0ZXIvaW5k
ZXguaHRtbDogTWFrZSBzdHJ1Y3R1cmUgc2ltaWxhciB0byBkZXZlbG9wZXIuaHRtbC4KKiBBbmlt
b21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3M6IFJlbW92ZSBtb3N0
IG9mIHRoZQpidXR0b24gcnVsZXMgc2luY2UgdGhleSBhcmUgc3VwZXJmbHVvdXMuIE1vdmUgdGhl
IHByb2dyZXNzIGJhciB0byB0aGUKdG9wLCBmaXhlZC4gVXBkYXRlIHRoZSByZXN1bHRzIHBhZ2Ug
cnVsZXMuCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanM6
IFJlbW92ZSBtb3N0IG9mIHRoZQphZGRpdGlvbnMgdG8gc2VjdGlvbnNNYW5hZ2VyIHNpbmNlIHRo
ZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQuCihzZXRTZWN0aW9uSGVhZGVyKTogVXBkYXRlcyBoZWFk
ZXIgb2YgdGhlIHNlY3Rpb24uCih3aW5kb3cuc3VpdGVzTWFuYWdlci5fdXBkYXRlU3RhcnRCdXR0
b25TdGF0ZSk6IFVwZGF0ZSBzZWxlY3Rvci4KKHNob3dSZXN1bHRzKTogQWRkIGtleXByZXNzIGV2
ZW50IGZvciBzZWxlY3RpbmcgZGlmZmVyZW50IGRhdGEgZm9yCmNvcHkvcGFzdGUuIFVwZGF0ZSBo
b3cgdGhlIHJlc3VsdHMgYXJlIHBvcHVsYXRlZC4gSW5jbHVkZSBmdWxsIHRlc3QKSlNPTiBpbiBh
IHRleHRhcmVhLCByYXRoZXIgdGhhbiByZXF1aXJpbmcgYSBidXR0b24gcHJlc3MuCihzaG93VGVz
dEdyYXBoKToKKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvdGVzdHMuanM6IFVw
ZGF0ZSBzdHJ1Y3R1cmUgb2YgSGVhZGVycy4gRGVmaW5lIGRpZmZlcmVudCBraW5kcyBvZiBoZWFk
ZXJzLiBIZWFkZXJzIGNhbiBjb250cm9sIHRoZWlyCnRpdGxlLCBhbmQgdGhlIHRleHQgdXNlZCBh
cyB0aGUgY2VsbCBjb250ZW50cywgaW5jbHVkaW5nIGNsYXNzIG5hbWUuCiogQW5pbW9tZXRlci9y
ZXNvdXJjZXMvZXh0ZW5zaW9ucy5qczoKKFJlc3VsdHNUYWJsZSk6IFVwZGF0ZSB0byBpbmNsdWRl
IGEgZmxhdHRlbmVkIHZlcnNpb24gb2YgdGhlIGhlYWRlcnMsCnVzZWQgd2hpbGUgcG9wdWxhdGlu
ZyB0YWJsZSBjb250ZW50cy4gUmVtb3ZlIHVubmVlZGVkIGhlbHBlciBmdW5jdGlvbnMKZm9yIGNy
ZWF0aW5nIHRoZSB0YWJsZS4gUmVuYW1lICJzaG93IiB0byAiYWRkIi4KKiBBbmltb21ldGVyL3Jl
c291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3M6IFVwZGF0ZSBydWxlcyB0bwphY2NvbW1vZGF0
ZSB0aGUgbmV3IHN0cnVjdHVyZS4KKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9t
ZXRlci5qczoKKHdpbmRvdy5zZWN0aW9uc01hbmFnZXIuc2V0U2VjdGlvblNjb3JlKTogSGVscGVy
IGZ1bmN0aW9uIHRvIHNldCB0aGUKc2NvcmUgYW5kIG1lYW4gZm9yIGEgc2VjdGlvbi4KKHdpbmRv
dy5zZWN0aW9uc01hbmFnZXIucG9wdWxhdGVUYWJsZSk6IEhlbHBlciBmdW5jdGlvbiB0byBzZXQg
dGhlIHRhYmxlLgood2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMpOiBSZWZh
Y3Rvci4KKHdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyLnNlbGVjdFJlc3VsdHMpOiBVcGRhdGUg
c2VsZWN0b3JzLgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci90ZXN0cy5qczogU2V0IEhl
YWRlcnMuIERlYnVnIGhhcm5lc3MKZXh0ZW5kcyBpdC4KLS0tCiBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWwgICAgICAgICB8IDE0MSArKysrKy0tLS0tLQogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL2luZGV4Lmh0bWwgICAgICAgICAgICAgfCAgMTEgKy0KIC4u
Li9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzICAgICAgICAgIHwgMjY2ICsr
KysrKysrKy0tLS0tLS0tLS0tLQogLi4uL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRl
ci5qcyAgICAgICAgICAgfCAxMTcgKystLS0tLS0tCiAuLi4vQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZGVidWctcnVubmVyL3Rlc3RzLmpzICAgICB8IDExMiArKysrKy0tLS0KIC4uLi9Bbmltb21ldGVy
L3Jlc291cmNlcy9leHRlbnNpb25zLmpzICAgICAgICAgICAgIHwgMjM5ICsrKysrKystLS0tLS0t
LS0tLQogLi4uL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcyAgICAg
fCAgNDQgKystLQogLi4uL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpz
ICAgICAgfCAgMzUgKy0tCiAuLi4vQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpz
ICAgICAgICAgICB8ICAgNSArCiBQZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICA0MiArKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCA0NDcgaW5zZXJ0aW9u
cygrKSwgNTY1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9kZXZlbG9wZXIuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZl
bG9wZXIuaHRtbAppbmRleCBlY2Y2MTA5Li40YmRiNDNiIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL2RldmVsb3Blci5odG1sCkBAIC02LDEwICs2LDEwIEBACiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3Nz
Ij4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KIAot
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ydW5uZXIvdGVzdHMuanMiIGNoYXJzZXQ9InV0
Zi04Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90
ZXN0cy5qcyIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanMiPjwvc2NyaXB0PgogCkBAIC0yMSw0
NyArMjEsNDUgQEAKICAgICA8bWFpbj4KICAgICAgICAgPGhyPgogICAgICAgICA8c2VjdGlvbiBp
ZD0iaW50cm8iIGNsYXNzPSJzZWxlY3RlZCI+Ci0gICAgICAgICAgICA8aGVhZGVyPgotICAgICAg
ICAgICAgICAgIDxoMT5Bbmltb21ldGVyPC9oMT4KLSAgICAgICAgICAgIDwvaGVhZGVyPgotICAg
ICAgICAgICAgPGRpdiBpZD0ic3VpdGVzIj4KLSAgICAgICAgICAgICAgICA8aDI+U3VpdGVzOjwv
aDI+Ci0gICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0cmVlIj48L3VsPgotICAgICAgICAgICAg
PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGlkPSJvcHRpb25zIj4KLSAgICAgICAgICAgICAgICA8
aDI+T3B0aW9uczo8L2gyPgotICAgICAgICAgICAgICAgIDxmb3JtIG5hbWU9ImJlbmNobWFyay1v
cHRpb25zIj4KLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpPgotICAg
ICAgICAgICAgICAgICAgICA8bGFiZWw+VGVzdCBsZW5ndGg6IDxpbnB1dCB0eXBlPSJudW1iZXIi
IGlkPSJ0ZXN0LWludGVydmFsIiB2YWx1ZT0iMTAiPiBzZWNvbmRzIGVhY2g8L2xhYmVsPgotICAg
ICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAg
ICAgICA8aDM+RGlzcGxheTo8L2gzPgotICAgICAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1lPSJkaXNwbGF5IiB0eXBlPSJy
YWRpbyIgdmFsdWU9Im1pbmltYWwiIGNoZWNrZWQ+IE1pbmltYWw8L2xhYmVsPjwvbGk+Ci0gICAg
ICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1lPSJkaXNwbGF5IiB0eXBl
PSJyYWRpbyIgdmFsdWU9InByb2dyZXNzLWJhciIgY2hlY2tlZD4gUHJvZ3Jlc3MgYmFyPC9sYWJl
bD48L2xpPgotICAgICAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDwvbGk+
Ci0gICAgICAgICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAgICAgICA8aDM+QWRqdXN0aW5n
IHRoZSB0ZXN0IGNvbXBsZXhpdHk6PC9oMz4KKyAgICAgICAgICAgIDxoMT5Bbmltb21ldGVyPC9o
MT4KKyAgICAgICAgICAgIDxkaXY+CisgICAgICAgICAgICAgICAgPGRpdiBpZD0ic3VpdGVzIj4K
KyAgICAgICAgICAgICAgICAgICAgPGgyPlN1aXRlczo8L2gyPgorICAgICAgICAgICAgICAgICAg
ICA8dWwgY2xhc3M9InRyZWUiPjwvdWw+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAg
ICAgICAgICAgPGRpdiBpZD0ib3B0aW9ucyI+CisgICAgICAgICAgICAgICAgICAgIDxoMj5PcHRp
b25zOjwvaDI+CisgICAgICAgICAgICAgICAgICAgIDxmb3JtIG5hbWU9ImJlbmNobWFyay1vcHRp
b25zIj4KICAgICAgICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgICAgICAgICAg
PGxpPjxsYWJlbD48aW5wdXQgbmFtZT0iYWRqdXN0bWVudCIgdHlwZT0icmFkaW8iIHZhbHVlPSJm
aXhlZCI+IEtlZXAgY29uc3RhbnQ8L2xhYmVsPjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1lPSJhZGp1c3RtZW50IiB0eXBlPSJyYWRpbyIgdmFsdWU9
ImZpeGVkLWFmdGVyLXdhcm11cCI+IEtlZXAgY29uc3RhbnQgYWZ0ZXIgd2FybXVwIHRvIHRhcmdl
dCBGUFM8L2xhYmVsPjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxp
bnB1dCBuYW1lPSJhZGp1c3RtZW50IiB0eXBlPSJyYWRpbyIgdmFsdWU9ImFkYXB0aXZlIiBjaGVj
a2VkPiBNYWludGFpbiB0YXJnZXQgRlBTPC9sYWJlbD48L2xpPgorICAgICAgICAgICAgICAgICAg
ICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+VGVzdCBsZW5ndGg6IDxpbnB1
dCB0eXBlPSJudW1iZXIiIGlkPSJ0ZXN0LWludGVydmFsIiB2YWx1ZT0iMTAiPiBzZWNvbmRzIGVh
Y2g8L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICAgICAg
ICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8aDM+RGlzcGxheTo8L2gzPgorICAgICAg
ICAgICAgICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48
bGFiZWw+PGlucHV0IG5hbWU9ImRpc3BsYXkiIHR5cGU9InJhZGlvIiB2YWx1ZT0ibWluaW1hbCIg
Y2hlY2tlZD4gTWluaW1hbDwvbGFiZWw+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1lPSJkaXNwbGF5IiB0eXBlPSJyYWRpbyIgdmFsdWU9InBy
b2dyZXNzLWJhciIgY2hlY2tlZD4gUHJvZ3Jlc3MgYmFyPC9sYWJlbD48L2xpPgorICAgICAgICAg
ICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAg
ICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGgzPkFkanVzdGluZyB0
aGUgdGVzdCBjb21wbGV4aXR5OjwvaDM+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWw+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFtZT0iYWRqdXN0
bWVudCIgdHlwZT0icmFkaW8iIHZhbHVlPSJmaXhlZCI+IEtlZXAgY29uc3RhbnQ8L2xhYmVsPjwv
bGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFtZT0i
YWRqdXN0bWVudCIgdHlwZT0icmFkaW8iIHZhbHVlPSJmaXhlZC1hZnRlci13YXJtdXAiPiBLZWVw
IGNvbnN0YW50IGFmdGVyIHdhcm11cCB0byB0YXJnZXQgRlBTPC9sYWJlbD48L2xpPgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0IG5hbWU9ImFkanVzdG1lbnQi
IHR5cGU9InJhZGlvIiB2YWx1ZT0iYWRhcHRpdmUiIGNoZWNrZWQ+IE1haW50YWluIHRhcmdldCBG
UFM8L2xhYmVsPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAg
ICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAg
ICAgICAgICAgICA8bGFiZWw+VGFyZ2V0IGZyYW1lIHJhdGU6IDxpbnB1dCB0eXBlPSJudW1iZXIi
IGlkPSJmcmFtZS1yYXRlIiB2YWx1ZT0iNTAiPiBGUFM8L2xhYmVsPgorICAgICAgICAgICAgICAg
ICAgICA8L2xpPgorICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAg
ICAgICA8bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZXN0aW1hdGVkLWZyYW1lLXJh
dGUiIGNoZWNrZWQ+IEZpbHRlciBmcmFtZSByYXRlIGNhbGN1bGF0aW9uPC9sYWJlbD4KKyAgICAg
ICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAg
ICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAg
PGxhYmVsPlRhcmdldCBmcmFtZSByYXRlOiA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0iZnJhbWUt
cmF0ZSIgdmFsdWU9IjUwIj4gRlBTPC9sYWJlbD4KLSAgICAgICAgICAgICAgICA8L2xpPgotICAg
ICAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCB0eXBl
PSJjaGVja2JveCIgaWQ9ImVzdGltYXRlZC1mcmFtZS1yYXRlIiBjaGVja2VkPiBGaWx0ZXIgZnJh
bWUgcmF0ZSBjYWxjdWxhdGlvbjwvbGFiZWw+Ci0gICAgICAgICAgICAgICAgPC9saT4KLSAgICAg
ICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDwvZm9ybT4KKyAgICAgICAgICAgICAg
ICAgICAgPC9mb3JtPgorICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPC9kaXY+
Ci0gICAgICAgICAgICA8Zm9vdGVyPgotICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Imxh
cmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zdGFydEJlbmNobWFyaygp
Ij5TdGFydCBUZXN0PC9idXR0b24+Ci0gICAgICAgICAgICA8L2Zvb3Rlcj4KKyAgICAgICAgICAg
IDxidXR0b24gb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zdGFydEJlbmNobWFyaygpIj5T
dGFydCBUZXN0PC9idXR0b24+CiAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgPHNlY3Rpb24g
aWQ9InRlc3QtY29udGFpbmVyIj4KICAgICAgICAgICAgIDxkaXYgaWQ9InJ1bm5pbmctdGVzdCI+
PC9kaXY+CkBAIC03MCw1MyArNjgsMzAgQEAKICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICA8
L3NlY3Rpb24+CiAgICAgICAgIDxzZWN0aW9uIGlkPSJyZXN1bHRzIj4KLSAgICAgICAgICAgIDxo
ZWFkZXI+Ci0gICAgICAgICAgICAgICAgPGgxPlJlc3VsdHM6PC9oMT4KLSAgICAgICAgICAgIDwv
aGVhZGVyPgotICAgICAgICAgICAgPGRhdGE+Ci0gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNz
PSJyZXN1bHRzLXRhYmxlIj48L3RhYmxlPgotICAgICAgICAgICAgPC9kYXRhPgotICAgICAgICAg
ICAgPGZvb3Rlcj4KLSAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24i
IG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2VsZWN0UmVzdWx0cygpIj5TZWxlY3Q8L2J1
dHRvbj4KLSAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xp
Y2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd0pTT04oKSI+SlNPTjwvYnV0dG9uPgotICAgICAg
ICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJr
Q29udHJvbGxlci5zdGFydEJlbmNobWFyaygpIj5UZXN0IEFnYWluPC9idXR0b24+Ci0gICAgICAg
ICAgICA8L2Zvb3Rlcj4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICA8c2VjdGlvbiBpZD0i
anNvbiI+Ci0gICAgICAgICAgICA8aGVhZGVyPgotICAgICAgICAgICAgICAgIDxoMT5KU09OOjwv
aDE+Ci0gICAgICAgICAgICA8L2hlYWRlcj4KLSAgICAgICAgICAgIDxkYXRhPgotICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdHMtanNvbiIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48
L2Rpdj4KLSAgICAgICAgICAgIDwvZGF0YT4KLSAgICAgICAgICAgIDxmb290ZXI+Ci0gICAgICAg
ICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtD
b250cm9sbGVyLnNlbGVjdEpTT04oJ2pzb24nKSI+U2VsZWN0PC9idXR0b24+Ci0gICAgICAgICAg
ICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250
cm9sbGVyLnNob3dSZXN1bHRzKCkiPlJlc3VsdHM8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICA8
YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIu
c3RhcnRCZW5jaG1hcmsoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPgotICAgICAgICAgICAgPC9mb290
ZXI+Ci0gICAgICAgIDwvc2VjdGlvbj4KLSAgICAgICAgPHNlY3Rpb24gaWQ9InRlc3QtanNvbiI+
Ci0gICAgICAgICAgICA8aGVhZGVyPgotICAgICAgICAgICAgICAgIDxoMT5KU09OOjwvaDE+Ci0g
ICAgICAgICAgICA8L2hlYWRlcj4KLSAgICAgICAgICAgIDxkYXRhPgotICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InJlc3VsdHMtanNvbiIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4K
LSAgICAgICAgICAgIDwvZGF0YT4KLSAgICAgICAgICAgIDxmb290ZXI+Ci0gICAgICAgICAgICAg
ICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9s
bGVyLnNlbGVjdEpTT04oJ3Rlc3QtanNvbicpIj5TZWxlY3Q8L2J1dHRvbj4KLSAgICAgICAgICAg
ICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRy
b2xsZXIuc2hvd1Jlc3VsdHMoKSI+UmVzdWx0czwvYnV0dG9uPgotICAgICAgICAgICAgICAgIDxi
dXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5z
dGFydEJlbmNobWFyaygpIj5UZXN0IEFnYWluPC9idXR0b24+Ci0gICAgICAgICAgICA8L2Zvb3Rl
cj4KKyAgICAgICAgICAgIDxoMT5Bbmltb21ldGVyIHNjb3JlPC9oMT4KKyAgICAgICAgICAgIDxw
IGNsYXNzPSJzY29yZSI+PC9wPgorICAgICAgICAgICAgPGRpdiBpZD0icmVzdWx0cy10YWJsZXMi
PgorICAgICAgICAgICAgICAgIDxkaXY+CisgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBpZD0i
cmVzdWx0cy1zY29yZSI+PC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGlkPSJy
ZXN1bHRzLWRhdGEiPjwvdGFibGU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAg
ICAgICAgPHRhYmxlIGlkPSJyZXN1bHRzLWhlYWRlciI+PC90YWJsZT4KKyAgICAgICAgICAgIDwv
ZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0icmVzdWx0cy1qc29uIj4KKyAgICAgICAgICAgICAg
ICBKU09OOgorICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSByb3dzPTEgb25jbGljaz0idGhpcy5m
b2N1cygpO3RoaXMuc2VsZWN0KCkiIHJlYWRvbmx5PjwvdGV4dGFyZWE+CisgICAgICAgICAgICA8
L2Rpdj4KKyAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5z
dGFydEJlbmNobWFyaygpIj5UZXN0IEFnYWluPC9idXR0b24+CisgICAgICAgICAgICA8cD4ncyc6
IFNlbGVjdCBkaWZmZXJlbnQgZGF0YSBmb3IgY29weS9wYXN0ZTwvcD4KICAgICAgICAgPC9zZWN0
aW9uPgogICAgICAgICA8c2VjdGlvbiBpZD0idGVzdC1ncmFwaCI+CiAgICAgICAgICAgICA8aGVh
ZGVyPgorICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxl
ci5zaG93UmVzdWx0cygpIj4mbHQ7IFJlc3VsdHM8L2J1dHRvbj4KICAgICAgICAgICAgICAgICA8
aDE+R3JhcGg6PC9oMT4KICAgICAgICAgICAgIDwvaGVhZGVyPgotICAgICAgICAgICAgPGRhdGE+
PC9kYXRhPgotICAgICAgICAgICAgPGZvb3Rlcj4KLSAgICAgICAgICAgICAgICA8YnV0dG9uIGNs
YXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3Vs
dHMoKSI+UmVzdWx0czwvYnV0dG9uPgotICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Imxh
cmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zdGFydEJlbmNobWFyaygp
Ij5UZXN0IEFnYWluPC9idXR0b24+Ci0gICAgICAgICAgICA8L2Zvb3Rlcj4KKyAgICAgICAgICAg
IDxwIGNsYXNzPSJzY29yZSI+PC9wPgorICAgICAgICAgICAgPHAgY2xhc3M9Im1lYW4iPjwvcD4K
KyAgICAgICAgICAgIDxkaXYgaWQ9InRlc3QtZ3JhcGgtZGF0YSI+PC9kaXY+CiAgICAgICAgIDwv
c2VjdGlvbj4KICAgICAgICAgPGhyPgogICAgIDwvbWFpbj4KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL2luZGV4Lmh0bWwKaW5kZXggYWQxMjc4ZC4uMWZkNDAxMCAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL2luZGV4Lmh0bWwKQEAgLTEsMTEgKzEsMTIgQEAKIDwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgPG1ldGEgbmFt
ZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgdXNlci1zY2FsYWJsZT1u
byI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcnVubmVyL2Fu
aW1vbWV0ZXIuY3NzIj4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3N0cmluZ3MuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiIGNoYXJzZXQ9InV0Zi04Ij48
L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpz
Ij48L3NjcmlwdD4KQEAgLTE3LDE2ICsxOCwxNiBAQAogICAgICAgICA8aHI+CiAgICAgICAgIDxz
ZWN0aW9uIGlkPSJpbnRybyIgY2xhc3M9InNlbGVjdGVkIj4KICAgICAgICAgICAgIDxoMT5Bbmlt
b21ldGVyPC9oMT4KLSAgICAgICAgICAgIDxwPkFuaW1vbWV0ZXIgaXMgYSBncmFwaGljcyBiZW5j
aG1hcmsgdGhhdCBkZXRlcm1pbmVzIHRoZSBtYXhpbXVtIGNvbXBsZXhpdHkgb2YgYW4gYW5pbWF0
ZWQgc2NlbmUgc3VjaCB0aGF0IHRoZSBicm93c2VyIGFjaGlldmVzIGEgdGFyZ2V0IGZyYW1lIHJh
dGUuPC9wPgorICAgICAgICAgICAgPHA+QW5pbW9tZXRlciBpcyBhIGdyYXBoaWNzIGJlbmNobWFy
ayB0aGF0IG1lYXN1cmVzIGEgYnJvd3NlcuKAmXMgY2FwYWJpbGl0eSB0byBhbmltYXRlIGNvbXBs
ZXggc2NlbmVzIGF0IGEgdGFyZ2V0IGZyYW1lIHJhdGUuPC9wPgogICAgICAgICAgICAgPGJ1dHRv
biBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0QmVuY2htYXJrKCkiPlJ1biBiZW5j
aG1hcms8L2J1dHRvbj4KICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICA8c2VjdGlvbiBpZD0i
dGVzdC1jb250YWluZXIiPgogICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgIDxzZWN0aW9uIGlk
PSJyZXN1bHRzIj4KICAgICAgICAgICAgIDxoMT5Bbmltb21ldGVyIHNjb3JlPC9oMT4KLSAgICAg
ICAgICAgIDxwIGlkPSJzY29yZSI+PC9wPgotICAgICAgICAgICAgPGRpdj4KLSAgICAgICAgICAg
ICAgICA8dGFibGUgaWQ9InJlc3VsdHMtZGF0YSI+PC90YWJsZT4KKyAgICAgICAgICAgIDxwIGNs
YXNzPSJzY29yZSI+PC9wPgorICAgICAgICAgICAgPGRpdiBpZD0icmVzdWx0cy10YWJsZXMiPgor
ICAgICAgICAgICAgICAgIDx0YWJsZSBpZD0icmVzdWx0cy1zY29yZSI+PC90YWJsZT4KICAgICAg
ICAgICAgICAgICA8dGFibGUgaWQ9InJlc3VsdHMtaGVhZGVyIj48L3RhYmxlPgogICAgICAgICAg
ICAgPC9kaXY+CiAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xs
ZXIuc3RhcnRCZW5jaG1hcmsoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPgpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRl
ci5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5l
ci9hbmltb21ldGVyLmNzcwppbmRleCA2NDBhZjE2Li43OGRkOGY5IDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVy
LmNzcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1
bm5lci9hbmltb21ldGVyLmNzcwpAQCAtMyw1MCArMywyOCBAQCBib2R5IHsKICAgICBjb2xvcjog
cmdiKDIzNSwgMjM1LCAyMzUpOwogfQogCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCdXR0b25zICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLWJ1dHRvbi5sYXJn
ZS1idXR0b24gewotICAgIGJvcmRlcjogM3B4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1KTsKLSAg
ICBib3JkZXItcmFkaXVzOiAxMHB4OwotICAgIG1pbi13aWR0aDogMjAwcHg7Ci0gICAgcGFkZGlu
ZzogLjVlbSAyZW07Ci0gICAgbWFyZ2luOiAwIDFlbTsKLSAgICBmb250LXNpemU6IDI1cHg7Ci0g
ICAgY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKLX0KLQotYnV0dG9uLmxhcmdlLWJ1dHRvbjph
Y3RpdmUgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKLSAgICBj
b2xvcjogcmdiKDQ2LCA1MSwgNTUpOwotICAgIGJvcmRlci1jb2xvcjogcmdiKDIzNSwgMjM1LCAy
MzUpICFpbXBvcnRhbnQ7CitoMSB7CisgICAgbWFyZ2luOiA1dmggMDsKIH0KIAotYnV0dG9uLmxh
cmdlLWJ1dHRvbjpkaXNhYmxlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDk2LCA5Niwg
OTYpOwotICAgIGNvbG9yOiByZ2IoMTI4LCAxMjgsIDEyOCk7CitidXR0b24geworICAgIGJvcmRl
cjogMnB4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1
LCAyMzUpOwogfQogCi1idXR0b24uc21hbGwtYnV0dG9uIHsKLSAgICBib3JkZXI6IDFweCBzb2xp
ZCBEYXJrQ3lhbjsKLSAgICBib3JkZXItcmFkaXVzOiAycHg7Ci0gICAgcGFkZGluZzogMXB4IDRw
eDsKLSAgICBtYXJnaW46IDAgNHB4OwotICAgIGZvbnQtc2l6ZTogOXB4OwotICAgIGNvbG9yOiBi
bGFjazsKK2J1dHRvbjpkaXNhYmxlZCB7CisgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDIzNSwgMjM1
LCAyMzUsIC41KTsKKyAgICBjb2xvcjogcmdiYSgyMzUsIDIzNSwgMjM1LCAuNSk7CiB9CiAKLWJ1
dHRvbi5zbWFsbC1idXR0b246YWN0aXZlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBEYXJrQ3lh
bjsKLSAgICBjb2xvcjogcmdiKDQ2LCA1MSwgNTUpOwotICAgIGJvcmRlci1jb2xvcjogRGFya0N5
YW4gIWltcG9ydGFudDsKK2J1dHRvbjpob3ZlciB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
YSgyNTUsIDI1NSwgMjU1LCAuMSk7CisgICAgY3Vyc29yOiBwb2ludGVyOwogfQogCi1AbWVkaWEg
c2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogNDE0cHgpIHsKLSAgICBidXR0b24ubGFyZ2Ut
YnV0dG9uIHsKLSAgICAgICAgbWFyZ2luOiAxZW0gMDsKLSAgICB9CitidXR0b246YWN0aXZlIHsK
KyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1
LCAyNTUsIC4yKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTEyNyw0NiArMTA1
LDYgQEAgbGFiZWwudHJlZS1sYWJlbCB7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0v
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdHMgVGFibGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLwotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotdGFibGUu
cmVzdWx0cy10YWJsZSB7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgYm9yZGVyOiAycHggc29saWQg
RGFya0N5YW47Ci0gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKLX0KLQotLnJlc3VsdHMt
dGFibGUgdGgsCi0ucmVzdWx0cy10YWJsZSB0ZCB7Ci0gICAgZm9udC1zaXplOiAxMXB4OwotICAg
IHBhZGRpbmc6IDNweCA0cHggMnB4IDRweDsKLX0KLQotLnJlc3VsdHMtdGFibGUgdGggewotICAg
IGJhY2tncm91bmQ6IERhcmtDeWFuOwotICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgTGlnaHRD
eWFuOwotICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIExpZ2h0Q3lhbjsKLSAgICBib3JkZXIt
dG9wOiAxcHggc29saWQgTGlnaHRDeWFuOwotfQotCi0ucmVzdWx0cy10YWJsZSB0ZCB7Ci0gICAg
YmFja2dyb3VuZDogd2hpdGU7Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKLSAgICBib3JkZXIt
bGVmdDogbm9uZTsKLSAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBEYXJrQ3lhbjsKLSAgICBi
b3JkZXItdG9wOiAxcHggc29saWQgRGFya0N5YW47Ci0gICAgY29sb3I6IGJsYWNrOwotfQotCi0u
cmVzdWx0cy10YWJsZSB0ZC5ub2lzeS1yZXN1bHRzIHsKLSAgICBjb2xvcjogcmVkOwotfQotCi0u
cmVzdWx0cy10YWJsZSB0ZC5zdWl0ZXMtc2VwYXJhdG9yIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9y
OiB5ZWxsb3c7Ci19Ci0gCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZXN1bHRzIEpTT04gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTE5MywxNiArMTMxLDYgQEAg
c2VjdGlvbi5zZWxlY3RlZCB7CiAgICAgZGlzcGxheTogZmxleDsKIH0KIAotc2VjdGlvbiA+IGhl
YWRlciwKLXNlY3Rpb24gPiBmb290ZXIgewotICAgIG1hcmdpbjogMTBweDsKLSAgICBwYWRkaW5n
OiAxMHB4OwotICAgIC13ZWJraXQtZmxleDogMCAxIDEwMCU7Ci0gICAgLW1zLWZsZXg6IDAgMSAx
MDAlOwotICAgIGZsZXg6IDAgMSAxMDAlOwotICAgIG1heC1oZWlnaHQ6IDE1JTsKLX0KLQogc2Vj
dGlvbiA+IGZvb3RlciB7CiAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgIGNsZWFyOiBib3Ro
OwpAQCAtMjYxLDI5ICsxODksMjYgQEAgc2VjdGlvbiA+IGZvb3RlciB7CiAvKiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSAqLwogCiAjaW50cm8gewotICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdzsK
LSAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKLSAgICBmbGV4LWRpcmVjdGlvbjogcm93Owot
ICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwOwotICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7Ci0g
ICAgZmxleC13cmFwOiB3cmFwOwotICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogY2VudGVyOwot
ICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyOwotICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgt
c3RhcnQ7CisgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6
IGZsZXgtc3RhcnQ7CisgICAgYWxpZ24tY29udGVudDogY2VudGVyOwogfQogCiAjaW50cm8gaDIg
eworICAgIG1hcmdpbi10b3A6IDA7CiAgICAgZm9udC1zaXplOiAxLjJlbTsKIH0KIAotI3N1aXRl
cywKLSNvcHRpb25zIHsKLSAgICBwYWRkaW5nOiAxMHB4OwotICAgIG1hcmdpbjogMTBweDsKKyNp
bnRybyA+IGRpdiB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgbWFyZ2luOiAyZW0gMDsKKyAgICBm
bGV4LWRpcmVjdGlvbjogcm93OworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgYWxpZ24tY29udGVu
dDogZmxleC1zdGFydDsKIH0KIAogI3N1aXRlcyB7Ci0gICAgcGFkZGluZy1sZWZ0OiA0MHB4Owor
ICAgIHBhZGRpbmctbGVmdDogMTV2dzsKICAgICAtd2Via2l0LWZsZXg6IDAgMSA0MCU7CiAgICAg
LW1zLWZsZXg6IDAgMSA0MCU7CiAgICAgZmxleDogMCAxIDQwJTsKQEAgLTI5NSwxMiArMjIwLDYg
QEAgc2VjdGlvbiA+IGZvb3RlciB7CiAgICAgZmxleDogMSAxIGF1dG87CiB9CiAKLSNpbnRybyA+
IGhlYWRlciA+IGgxIHsKLSAgICBtYXJnaW46IDAgYXV0bzsKLSAgICB3aWR0aDogNzAlOwotICAg
IHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQogI2ludHJvIGlucHV0W3R5cGU9Im51bWJlciJdIHsK
ICAgICB3aWR0aDogNTBweDsKIH0KQEAgLTM5NSwxNCArMzE0LDEyIEBAIHNlY3Rpb24gPiBmb290
ZXIgewogCiAuZGlzcGxheS1wcm9ncmVzcy1iYXIgI3Byb2dyZXNzIHsKICAgICBkaXNwbGF5OiBi
bG9jazsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAtNnB4OwotICAgIGxl
ZnQ6IDYwcHg7Ci0gICAgcmlnaHQ6IDYwcHg7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHRv
cDogMDsKKyAgICBsZWZ0OiAwOwogICAgIGhlaWdodDogNnB4OworICAgIHdpZHRoOiAxMDAlOwog
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKLSAgICBib3JkZXItbGVm
dDogNnB4IHNvbGlkIHJnYig0NiwgNTEsIDU1KTsKLSAgICBib3JkZXItcmlnaHQ6IDZweCBzb2xp
ZCByZ2IoNDYsIDUxLCA1NSk7CiB9CiAKIC5kaXNwbGF5LXByb2dyZXNzLWJhciAjcHJvZ3Jlc3Mt
Y29tcGxldGVkIHsKQEAgLTQzOSwzOCArMzU2LDg3IEBAIHNlY3Rpb24gPiBmb290ZXIgewogLyog
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRzIFNlY3Rpb24gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXNlY3Rpb24j
cmVzdWx0cywKLXNlY3Rpb24janNvbiwKLXNlY3Rpb24jdGVzdC1qc29uLAotc2VjdGlvbiN0ZXN0
LWdyYXBoIHsKLSAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3c7Ci0gICAgLW1zLWZsZXgt
ZGlyZWN0aW9uOiByb3c7CisjcmVzdWx0cyBoMSwgI3Rlc3QtZ3JhcGggaDEgeworICAgIGZvbnQt
c2l6ZTogMmVtOworfQorCisuc2NvcmUgeworICAgIGZvbnQtc2l6ZTogM2VtOworfQorCisubWVh
biB7CisgICAgbWFyZ2luLXRvcDogMDsKKyAgICBtYXJnaW4tYm90dG9tOiAxZW07CisgICAgZm9u
dC1zaXplOiAxLjVlbTsKKyAgICBmb250LXdlaWdodDogNDAwOworfQorCisjcmVzdWx0cy1kYXRh
IC5hdmVyYWdlIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDFlbTsKKyAgICB0ZXh0LWFsaWduOiByaWdo
dDsKK30KKworI3Jlc3VsdHMtZGF0YSAuc3RkZXYgeworICAgIHRleHQtYWxpZ246IGxlZnQ7Cisg
ICAgcGFkZGluZy1sZWZ0OiAuMjVlbTsKK30KKworI3Jlc3VsdHMtZGF0YSBidXR0b24uc21hbGwt
YnV0dG9uIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIzNSwgMjM1LCAyMzUsIC45KTsK
KyAgICBjb2xvcjogcmdiYSgyMzUsIDIzNSwgMjM1LCAuOSk7CisgICAgYm9yZGVyLXJhZGl1czog
MnB4OworICAgIHBhZGRpbmc6IDFweCA0cHg7CisgICAgbWFyZ2luOiAwIDAgMCAxZW07CisgICAg
Zm9udC1zaXplOiA5cHg7Cit9CisKKyNyZXN1bHRzLWRhdGEgYnV0dG9uLnNtYWxsLWJ1dHRvbjph
Y3RpdmUgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjM1LCAyMzUsIDIzNSwgLjIpOwor
ICAgIGNvbG9yOiBpbmhlcml0OworfQorCisjcmVzdWx0cy10YWJsZXMgdGQubm9pc3ktcmVzdWx0
cyB7CisgICAgY29sb3I6IHJnYigyNTUsIDEwNCwgMTA0KTsKK30KKworI3Jlc3VsdHMtdGFibGVz
IGRpdiB7CisgICAgZGlyZWN0aW9uOiBsdHI7CisgICAgZGlzcGxheTogZmxleDsKICAgICBmbGV4
LWRpcmVjdGlvbjogcm93OwotICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwOwotICAgIC1tcy1m
bGV4LXdyYXA6IHdyYXA7Ci0gICAgZmxleC13cmFwOiB3cmFwOwotICAgIC13ZWJraXQtanVzdGlm
eS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwotICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7Ci0g
ICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwotICAgIC13ZWJraXQtYWxpZ24tY29u
dGVudDogc3BhY2UtYmV0d2VlbjsKLSAgICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnk7Ci0g
ICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKLSAgICAtd2Via2l0LWFsaWduLWl0ZW1z
OiBmbGV4LXN0YXJ0OwotICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKLSAgICBhbGlnbi1pdGVt
czogZmxleC1zdGFydDsKLX0KLQotc2VjdGlvbiNyZXN1bHRzID4gZGF0YSwKLXNlY3Rpb24janNv
biA+IGRhdGEsCi1zZWN0aW9uI3Rlc3QtanNvbiA+IGRhdGEsCi1zZWN0aW9uI3Rlc3QtZ3JhcGgg
PiBkYXRhIHsKLSAgICBvdmVyZmxvdy15OiBzY3JvbGw7Ci0gICAgaGVpZ2h0OiA3MCU7Ci0gICAg
LXdlYmtpdC1mbGV4OiAwIDEgMTAwJTsKLSAgICAtbXMtZmxleDogMCAxIDEwMCU7Ci0gICAgZmxl
eDogMCAxIDEwMCU7Ci0gICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBzdHJldGNoOwotICAgIC1tcy1m
bGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2g7Cit9CisKKyNyZXN1bHRzLWpzb24geworICAgIG1hcmdp
bi1ib3R0b206IDNlbTsKK30KKworI3Jlc3VsdHMtanNvbiB0ZXh0YXJlYSB7CisgICAgdmVydGlj
YWwtYWxpZ246IHN1YjsKK30KKworI3Rlc3QtZ3JhcGggeworICAgIGZsZXg6IDEgMCBjYWxjKDEw
MCUgLSA0MHB4KTsKK30KKworI3Rlc3QtZ3JhcGggaDEgeworICAgIG1hcmdpbi1ib3R0b206IDA7
Cit9CisKKyN0ZXN0LWdyYXBoIGhlYWRlciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAg
IHdpZHRoOiAxMDAlOworfQorCisjdGVzdC1ncmFwaCBoZWFkZXIgYnV0dG9uIHsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAxLjVlbTsKKyAgICBsZWZ0OiAwOworICAgIGJvcmRl
ci13aWR0aDogMXB4OworICAgIGZvbnQtc2l6ZTogMWVtOworICAgIHBhZGRpbmc6IC41ZW0gMWVt
OworfQorCisjdGVzdC1ncmFwaC1kYXRhIHsKKyAgICBmbGV4OiAxIDEgYXV0bzsKICAgICBhbGln
bi1zZWxmOiBzdHJldGNoOwogfQogCkBAIC00NzgsMTIgKzQ0NCwxMiBAQCBzZWN0aW9uI3Rlc3Qt
Z3JhcGggPiBkYXRhIHsKIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGggU2VjdGlv
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSAqLwogCi1zZWN0aW9uI3Rlc3QtZ3JhcGggPiBkYXRhIHsKKyN0ZXN0LWdyYXBoLWRhdGEg
ewogICAgIGZvbnQ6IDEwcHggc2Fucy1zZXJpZjsKICAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAy
MzUpOwogfQogCi1zZWN0aW9uI3Rlc3QtZ3JhcGggPiBkYXRhID4gc3ZnIHsKKyN0ZXN0LWdyYXBo
LWRhdGEgPiBzdmcgewogICAgIGZpbGw6IG5vbmU7CiB9CiAKQEAgLTUxNywxMyArNDgzLDMgQEAg
c2VjdGlvbiN0ZXN0LWdyYXBoID4gZGF0YSA+IHN2ZyB7CiAgICAgc3Ryb2tlOiAjRkE0OTI1Owog
ICAgIG9wYWNpdHk6IC44OwogfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogICAgICAg
ICAgICAgICAgICAgICAgICAgICBKU09OIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLXNlY3Rpb24janNvbiA+IGRh
dGEsCi1zZWN0aW9uI3Rlc3QtanNvbiA+IGRhdGEgewotICAgIGJvcmRlcjogMXB4IHNvbGlkIHJn
YigyMzUsIDIzNSwgMjM1KTsKLSAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwotfQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIv
YW5pbW9tZXRlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVi
dWctcnVubmVyL2FuaW1vbWV0ZXIuanMKaW5kZXggOWQzOGZkYy4uNDhmZDA2NyAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5p
bW9tZXRlci5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2Rl
YnVnLXJ1bm5lci9hbmltb21ldGVyLmpzCkBAIC0xNSw2NyArMTUsOSBAQCBVdGlsaXRpZXMuZXh0
ZW5kT2JqZWN0KHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQsIHsKIH0pOwogCiBVdGlsaXRp
ZXMuZXh0ZW5kT2JqZWN0KHdpbmRvdy5zZWN0aW9uc01hbmFnZXIsIHsKLSAgICBfc2VjdGlvbkhl
YWRlckgxRWxlbWVudDogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIpCisgICAgc2V0U2VjdGlv
bkhlYWRlcjogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIsIHRpdGxlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiMiICsgc2VjdGlvbklkZW50aWZpZXIg
KyAiID4gaGVhZGVyID4gaDEiKTsKLSAgICB9LAotCi0gICAgX3NlY3Rpb25EYXRhRWxlbWVudDog
ZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIpCi0gICAgewotICAgICAgICByZXR1cm4gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigiIyIgKyBzZWN0aW9uSWRlbnRpZmllciArICIgPiBkYXRhIik7Ci0g
ICAgfSwKLSAgICAKLSAgICBfc2VjdGlvbkRhdGFEaXZFbGVtZW50OiBmdW5jdGlvbihzZWN0aW9u
SWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCIjIiArIHNlY3Rpb25JZGVudGlmaWVyICsgIiA+ICBkYXRhID4gZGl2Iik7Ci0gICAgfSwKLSAg
ICAKLSAgICBzaG93U2NvcmU6IGZ1bmN0aW9uKHNlY3Rpb25JZGVudGlmaWVyLCB0aXRsZSkKLSAg
ICB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fc2VjdGlvbkhlYWRlckgxRWxlbWVudChz
ZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0aXRsZSAr
ICI6IjsKLQotICAgICAgICB2YXIgc2NvcmUgPSBiZW5jaG1hcmtSdW5uZXJDbGllbnQucmVzdWx0
cy5zY29yZS50b0ZpeGVkKDIpOwotICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ICs9ICIgWyIg
KyBTdHJpbmdzLnRleHQuc2NvcmUgKyAiID0gIiArIHNjb3JlICsgIl0iOwotICAgIH0sCi0gICAg
Ci0gICAgc2hvd1Rlc3ROYW1lOiBmdW5jdGlvbihzZWN0aW9uSWRlbnRpZmllciwgdGl0bGUsIHRl
c3ROYW1lKQotICAgIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9zZWN0aW9uSGVhZGVy
SDFFbGVtZW50KHNlY3Rpb25JZGVudGlmaWVyKTsKLSAgICAgICAgZWxlbWVudC50ZXh0Q29udGVu
dCA9IHRpdGxlICsgIjoiOwotCi0gICAgICAgIGlmICghdGVzdE5hbWUubGVuZ3RoKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQg
Kz0gIiBbIiArIFN0cmluZ3MudGV4dC50ZXN0TmFtZSArICIgPSAiICsgdGVzdE5hbWUgKyAiXSI7
Ci0gICAgfSwKLSAgICAKLSAgICBzaG93SlNPTjogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIs
IGpzb24pCi0gICAgewotICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuX3NlY3Rpb25EYXRhRGl2
RWxlbWVudChzZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQg
PSBKU09OLnN0cmluZ2lmeShqc29uLCBmdW5jdGlvbihrZXksIHZhbHVlKSB7IAotICAgICAgICAg
ICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAibnVtYmVyIikKLSAgICAgICAgICAgICAgICByZXR1cm4g
dmFsdWUudG9GaXhlZCgyKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgfSwg
NCk7Ci0gICAgfSwKLSAgICAKLSAgICBzZWxlY3REYXRhOiBmdW5jdGlvbihzZWN0aW9uSWRlbnRp
ZmllcikKLSAgICB7Ci0gICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5n
ZXMoKTsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9zZWN0aW9uRGF0YUVsZW1lbnQoc2Vj
dGlvbklkZW50aWZpZXIpOwotICAgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOwotICAgICAgICByYW5nZS5zZWxlY3ROb2RlKGVsZW1lbnQpOwotICAgICAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOyAgCi0gICAgfSwKLSAgICAKLSAgICBzZWxl
Y3REYXRhQ29udGVudHM6IGZ1bmN0aW9uKHNlY3Rpb25JZGVudGlmaWVyKQotICAgIHsKLSAgICAg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOwotICAgICAgICB2YXIg
ZWxlbWVudCA9IHRoaXMuX3NlY3Rpb25EYXRhRGl2RWxlbWVudChzZWN0aW9uSWRlbnRpZmllcik7
Ci0gICAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Ci0gICAgICAgIHJh
bmdlLnNlbGVjdE5vZGVDb250ZW50cyhlbGVtZW50KTsKLSAgICAgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigi
IyIgKyBzZWN0aW9uSWRlbnRpZmllciArICIgaDEiKS50ZXh0Q29udGVudCA9IHRpdGxlOwogICAg
IH0KIH0pOwogCkBAIC0xODIsNyArMTI0LDcgQEAgd2luZG93LnN1aXRlc01hbmFnZXIgPQogICAg
IF91cGRhdGVTdGFydEJ1dHRvblN0YXRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIg
c3VpdGVzRWxlbWVudHMgPSB0aGlzLl9zdWl0ZXNFbGVtZW50cygpOwotICAgICAgICB2YXIgc3Rh
cnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjaW50cm8gPiBmb290ZXIgPiBidXR0
b24iKTsKKyAgICAgICAgdmFyIHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigi
I2ludHJvIGJ1dHRvbiIpOwogICAgICAgICAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
dWl0ZXNFbGVtZW50cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIHN1aXRlRWxlbWVu
dCA9IHN1aXRlc0VsZW1lbnRzW2ldOwpAQCAtMzg2LDQ3ICszMjgsMzQgQEAgVXRpbGl0aWVzLmV4
dGVuZE9iamVjdCh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlciwgewogICAgICAgICB0aGlzLl9z
dGFydEJlbmNobWFyayhzdWl0ZXMsIG9wdGlvbnMsICJydW5uaW5nLXRlc3QiKTsKICAgICB9LAog
Ci0gICAgc2VsZWN0UmVzdWx0czogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc2VjdGlvbnNN
YW5hZ2VyLnNlbGVjdERhdGEoInJlc3VsdHMiKTsKLSAgICB9LAotICAgIAogICAgIHNob3dSZXN1
bHRzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgcmVzdWx0c1RhYmxlID0gbmV3IFJl
c3VsdHNUYWJsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzZWN0aW9uI3Jlc3VsdHMgPiBkYXRh
ID4gdGFibGUiKSwgSGVhZGVycyk7Ci0KLSAgICAgICAgdmFyIGRhdGEgPSBiZW5jaG1hcmtSdW5u
ZXJDbGllbnQucmVzdWx0cy5kYXRhOwotICAgICAgICByZXN1bHRzVGFibGUuc2hvd0l0ZXJhdGlv
bnMoZGF0YVtTdHJpbmdzLmpzb24ucmVzdWx0cy5pdGVyYXRpb25zXSwgYmVuY2htYXJrUnVubmVy
Q2xpZW50Lm9wdGlvbnMpOwotICAgICAgICBiZW5jaG1hcmtDb250cm9sbGVyLnNob3dKU09OKCJq
c29uIiwgZGF0YVtTdHJpbmdzLmpzb24ucmVzdWx0cy5pdGVyYXRpb25zXVswXSk7Ci0gICAgICAg
IHN1aXRlc01hbmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbUpTT04oZGF0YVtTdHJpbmdzLmpz
b24ucmVzdWx0cy5pdGVyYXRpb25zXVswXSk7CisgICAgICAgIGlmICghdGhpcy5hZGRlZEtleUV2
ZW50KSB7CisgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlwcmVzcyIs
IHRoaXMuc2VsZWN0UmVzdWx0cywgZmFsc2UpOworICAgICAgICAgICAgdGhpcy5hZGRlZEtleUV2
ZW50ID0gdHJ1ZTsKKyAgICAgICAgfQogCi0gICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93U2Nv
cmUoInJlc3VsdHMiLCBTdHJpbmdzLnRleHQucmVzdWx0cy5yZXN1bHRzKTsKKyAgICAgICAgc2Vj
dGlvbnNNYW5hZ2VyLnNldFNlY3Rpb25TY29yZSgicmVzdWx0cyIsIGJlbmNobWFya1J1bm5lckNs
aWVudC5yZXN1bHRzLnNjb3JlLnRvRml4ZWQoMikpOworICAgICAgICB2YXIgZGF0YSA9IGJlbmNo
bWFya1J1bm5lckNsaWVudC5yZXN1bHRzLmRhdGFbU3RyaW5ncy5qc29uLnJlc3VsdHMuaXRlcmF0
aW9uc107CisgICAgICAgIHNlY3Rpb25zTWFuYWdlci5wb3B1bGF0ZVRhYmxlKCJyZXN1bHRzLWhl
YWRlciIsIEhlYWRlcnMudGVzdE5hbWUsIGRhdGEpOworICAgICAgICBzZWN0aW9uc01hbmFnZXIu
cG9wdWxhdGVUYWJsZSgicmVzdWx0cy1zY29yZSIsIEhlYWRlcnMuc2NvcmUsIGRhdGEpOworICAg
ICAgICBzZWN0aW9uc01hbmFnZXIucG9wdWxhdGVUYWJsZSgicmVzdWx0cy1kYXRhIiwgSGVhZGVy
cy5kZXRhaWxzLCBkYXRhKTsKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Jlc3Vs
dHMtanNvbiB0ZXh0YXJlYSIpLnRleHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnkoYmVuY2htYXJr
UnVubmVyQ2xpZW50LnJlc3VsdHMuZGF0YSwgZnVuY3Rpb24oa2V5LCB2YWx1ZSkgeworICAgICAg
ICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAibnVtYmVyIikKKyAgICAgICAgICAgICAgICByZXR1
cm4gdmFsdWUudG9GaXhlZCgyKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAg
fSk7CiAgICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93U2VjdGlvbigicmVzdWx0cyIsIHRydWUp
OwotICAgIH0sCi0gICAgCi0gICAgc2hvd0pTT046IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHNlY3Rpb25zTWFuYWdlci5zaG93U2NvcmUoImpzb24iLCBTdHJpbmdzLnRleHQucmVzdWx0cy5y
ZXN1bHRzKTsKLSAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNob3dTZWN0aW9uKCJqc29uIiwgdHJ1
ZSk7Ci0gICAgfSwKIAotICAgIHNob3dUZXN0R3JhcGg6IGZ1bmN0aW9uKHRlc3ROYW1lLCBheGVz
LCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpCi0gICAgewotICAgICAgICBzZWN0aW9uc01h
bmFnZXIuc2hvd1Rlc3ROYW1lKCJ0ZXN0LWdyYXBoIiwgU3RyaW5ncy50ZXh0LnJlc3VsdHMuZ3Jh
cGgsIHRlc3ROYW1lKTsKLSAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNob3dTZWN0aW9uKCJ0ZXN0
LWdyYXBoIiwgdHJ1ZSk7Ci0gICAgICAgIGdyYXBoKCJzZWN0aW9uI3Rlc3QtZ3JhcGggPiBkYXRh
IiwgbmV3IEluc2V0cygyMCwgNTAsIDIwLCA1MCksIGF4ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGlt
ZU9mZnNldCk7CisgICAgICAgIHN1aXRlc01hbmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbUpT
T04oZGF0YVswXSk7CiAgICAgfSwKIAotICAgIHNob3dUZXN0SlNPTjogZnVuY3Rpb24odGVzdE5h
bWUsIGpzb24pCisgICAgc2hvd1Rlc3RHcmFwaDogZnVuY3Rpb24odGVzdE5hbWUsIHNjb3JlLCBt
ZWFuLCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpCiAgICAgewotICAgICAgICBz
ZWN0aW9uc01hbmFnZXIuc2hvd1Rlc3ROYW1lKCJ0ZXN0LWpzb24iLCBTdHJpbmdzLnRleHQucmVz
dWx0cy5ncmFwaCwgdGVzdE5hbWUpOwotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd0pTT04o
InRlc3QtanNvbiIsIGpzb24pOwotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24o
InRlc3QtanNvbiIsIHRydWUpOwotICAgIH0sCi0gICAgCi0gICAgc2VsZWN0SlNPTjogZnVuY3Rp
b24oc2VjdGlvbklkZW50aWZpZXIpCi0gICAgewotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2Vs
ZWN0RGF0YUNvbnRlbnRzKHNlY3Rpb25JZGVudGlmaWVyKTsKKyAgICAgICAgc2VjdGlvbnNNYW5h
Z2VyLnNldFNlY3Rpb25IZWFkZXIoInRlc3QtZ3JhcGgiLCB0ZXN0TmFtZSk7CisgICAgICAgIHNl
Y3Rpb25zTWFuYWdlci5zZXRTZWN0aW9uU2NvcmUoInRlc3QtZ3JhcGgiLCBzY29yZSwgbWVhbik7
CisgICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93U2VjdGlvbigidGVzdC1ncmFwaCIsIHRydWUp
OworICAgICAgICBncmFwaCgiI3Rlc3QtZ3JhcGgtZGF0YSIsIG5ldyBJbnNldHMoMTAsIDIwLCAz
MCwgNDApLCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpOwogICAgIH0KIH0pOwog
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVn
LXJ1bm5lci90ZXN0cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZGVidWctcnVubmVyL3Rlc3RzLmpzCmluZGV4IDhlNmUxMmQuLmFiYWViNmIgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL3Rlc3Rz
LmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVu
bmVyL3Rlc3RzLmpzCkBAIC0xLDQ2ICsxLDcyIEBACi12YXIgSGVhZGVycyA9IFsKLSAgICB7Ci0g
ICAgICAgIHRleHQ6IFN0cmluZ3MudGV4dC50ZXN0TmFtZSwKLSAgICAgICAgd2lkdGg6IDI3LAot
ICAgICAgICBjaGlsZHJlbjogW10KLSAgICB9LAotICAgIHsKLSAgICAgICAgdGV4dDogU3RyaW5n
cy50ZXh0LnNjb3JlLAotICAgICAgICB3aWR0aDogNywKLSAgICAgICAgY2hpbGRyZW46IFtdCi0g
ICAgfSwKLSAgICB7Ci0gICAgICAgIHRleHQ6IFN0cmluZ3MudGV4dC5leHBlcmltZW50cy5jb21w
bGV4aXR5LAotICAgICAgICB3aWR0aDogMjcsCi0gICAgICAgIGNoaWxkcmVuOgotICAgICAgICBb
Ci0gICAgICAgICAgICB7IHRleHQ6IFN0cmluZ3MudGV4dC5tZWFzdXJlbWVudHMuYXZlcmFnZSwg
d2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAotICAgICAgICAgICAgeyB0ZXh0OiBTdHJpbmdzLnRl
eHQubWVhc3VyZW1lbnRzLmNvbmNlcm4sIHdpZHRoOiA3LCBjaGlsZHJlbjogW10gfSwKLSAgICAg
ICAgICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1lYXN1cmVtZW50cy5zdGRldiwgd2lkdGg6IDcs
IGNoaWxkcmVuOiBbXSB9LAotICAgICAgICAgICAgeyB0ZXh0OiBTdHJpbmdzLnRleHQubWVhc3Vy
ZW1lbnRzLnBlcmNlbnQsIHdpZHRoOiA2LCBjaGlsZHJlbjogW10gfSwKLSAgICAgICAgXQotICAg
IH0sCi0gICAgewotICAgICAgICB0ZXh0OiBTdHJpbmdzLnRleHQuZXhwZXJpbWVudHMuZnJhbWVS
YXRlLAotICAgICAgICB3aWR0aDogMjQsCi0gICAgICAgIGNoaWxkcmVuOgotICAgICAgICBbCi0g
ICAgICAgICAgICB7IHRleHQ6IFN0cmluZ3MudGV4dC5tZWFzdXJlbWVudHMuYXZlcmFnZSwgd2lk
dGg6IDYsIGNoaWxkcmVuOiBbXSB9LAotICAgICAgICAgICAgeyB0ZXh0OiBTdHJpbmdzLnRleHQu
bWVhc3VyZW1lbnRzLmNvbmNlcm4sIHdpZHRoOiA2LCBjaGlsZHJlbjogW10gfSwKLSAgICAgICAg
ICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1lYXN1cmVtZW50cy5zdGRldiwgd2lkdGg6IDYsIGNo
aWxkcmVuOiBbXSB9LAotICAgICAgICAgICAgeyB0ZXh0OiBTdHJpbmdzLnRleHQubWVhc3VyZW1l
bnRzLnBlcmNlbnQsIHdpZHRoOiA2LCBjaGlsZHJlbjogW10gfSwKLSAgICAgICAgXQotICAgIH0s
Ci0gICAgewotICAgICAgICB0ZXh0OiBTdHJpbmdzLnRleHQuc2FtcGxlcywKLSAgICAgICAgd2lk
dGg6IDE1LAotICAgICAgICBjaGlsZHJlbjoKLSAgICAgICAgWwotICAgICAgICAgICAgeyB0ZXh0
OiBTdHJpbmdzLnRleHQucmVzdWx0cy5ncmFwaCwgd2lkdGg6IDgsIGNoaWxkcmVuOiBbXSB9LAot
ICAgICAgICAgICAgeyB0ZXh0OiBTdHJpbmdzLnRleHQucmVzdWx0cy5qc29uLCB3aWR0aDogNywg
Y2hpbGRyZW46IFtdIH0sCi0gICAgICAgIF0KLSAgICB9Ci1dOworVXRpbGl0aWVzLmV4dGVuZE9i
amVjdChIZWFkZXJzLCB7CisgICAgZGV0YWlsczogWworICAgICAgICB7CisgICAgICAgICAgICB0
aXRsZTogU3RyaW5ncy50ZXh0LnJlc3VsdHMuZ3JhcGgKKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICAgdGl0bGU6IFN0cmluZ3MudGV4dC5leHBlcmltZW50cy5jb21wbGV4aXR5LAor
ICAgICAgICAgICAgY2hpbGRyZW46CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICB0ZXh0OiBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZGF0YVtTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0
eV1bU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5hdmVyYWdlXS50b0ZpeGVkKDIpOworICAgICAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJhdmVyYWdl
IgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICB0ZXh0OiBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICLCsSAiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFbU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmNvbXBsZXhpdHldW1N0
cmluZ3MuanNvbi5tZWFzdXJlbWVudHMucGVyY2VudF0udG9GaXhlZCgyKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiJSIKKyAgICAgICAgICAgICAgICAgICAgICAgIF0uam9pbigiIik7
CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTog
ZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9
ICJzdGRldiI7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW1N0cmluZ3MuanNv
bi5leHBlcmltZW50cy5jb21wbGV4aXR5XVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLnBlcmNl
bnRdID49IDEwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArPSAiIG5v
aXN5LXJlc3VsdHMiOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdGl0bGU6IFN0cmluZ3MudGV4dC5l
eHBlcmltZW50cy5mcmFtZVJhdGUsCisgICAgICAgICAgICBjaGlsZHJlbjoKKyAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHRleHQ6IGZ1bmN0aW9u
KGRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhW1N0cmluZ3MuanNv
bi5leHBlcmltZW50cy5mcmFtZVJhdGVdW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFn
ZV0udG9GaXhlZCgyKTsKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgY2xhc3NOYW1lOiBmdW5jdGlvbihkYXRhLCBvcHRpb25zKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgY2xhc3NOYW1lID0gImF2ZXJhZ2UiOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKE1hdGguYWJzKGRhdGFbU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZV1b
U3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5hdmVyYWdlXSAtIG9wdGlvbnNbImZyYW1lLXJhdGUi
XSkgPj0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUgKz0gIiBub2lz
eS1yZXN1bHRzIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGFzc05hbWU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dDogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIGZyYW1lUmF0ZURhdGEgPSBkYXRhW1N0cmluZ3MuanNvbi5leHBl
cmltZW50cy5mcmFtZVJhdGVdOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiwrEgIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmcmFtZVJhdGVEYXRhW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMucGVyY2VudF0udG9G
aXhlZCgyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIF0uam9pbigiIik7CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgIGNsYXNzTmFtZTogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGNsYXNzTmFtZSA9ICJzdGRldiI7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChkYXRhW1N0cmluZ3MuanNvbi5leHBlcmltZW50cy5mcmFtZVJhdGVdW1N0cmluZ3MuanNv
bi5tZWFzdXJlbWVudHMucGVyY2VudF0gPj0gMTApCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xhc3NOYW1lICs9ICIgbm9pc3ktcmVzdWx0cyI7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gY2xhc3NOYW1lOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgIF0KK30pCiAKIC8vLy8vLy8vLy8v
CiAvLyBTdWl0ZXMKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvZXh0ZW5zaW9ucy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZXh0ZW5zaW9ucy5qcwppbmRleCA4YjI2ZWRkLi4yYTQwYzQ3IDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCkBAIC0yNTgs
NiArMjU4LDE1IEBAIGZ1bmN0aW9uIFJlc3VsdHNUYWJsZShlbGVtZW50LCBoZWFkZXJzKQogewog
ICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgdGhpcy5faGVhZGVycyA9IGhlYWRlcnM7
CisKKyAgICB0aGlzLl9mbGF0dGVuZWRIZWFkZXJzID0gW107CisgICAgdGhpcy5faGVhZGVycy5m
b3JFYWNoKGZ1bmN0aW9uKGhlYWRlcikgeworICAgICAgICBpZiAoaGVhZGVyLmNoaWxkcmVuKQor
ICAgICAgICAgICAgdGhpcy5fZmxhdHRlbmVkSGVhZGVycyA9IHRoaXMuX2ZsYXR0ZW5lZEhlYWRl
cnMuY29uY2F0KGhlYWRlci5jaGlsZHJlbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRo
aXMuX2ZsYXR0ZW5lZEhlYWRlcnMucHVzaChoZWFkZXIpOworICAgIH0sIHRoaXMpOworCiAgICAg
dGhpcy5jbGVhcigpOwogfQogCkBAIC0yNjgsMTEyICsyNzcsNDkgQEAgUmVzdWx0c1RhYmxlLnBy
b3RvdHlwZSA9CiAgICAgICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSAiIjsKICAgICB9LAog
Ci0gICAgX3Nob3dIZWFkZXJSb3c6IGZ1bmN0aW9uKHJvdywgcXVldWUsIGhlYWRlcnMsIG1lc3Nh
Z2UpCi0gICAgewotICAgICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24gKGhlYWRlcikgewot
ICAgICAgICAgICAgdmFyIHRoID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidGgi
LCB7fSwgcm93KTsKLSAgICAgICAgICAgIHRoLnRleHRDb250ZW50ID0gaGVhZGVyLnRleHQ7Ci0g
ICAgICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgIT0gInVuZGVmaW5lZCIgJiYgbWVzc2FnZS5s
ZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aC5pbm5lckhUTUwgKz0gIjxicj4iICsgJ1snICsg
bWVzc2FnZSArJ10nOwotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiIjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmICgid2lkdGgiIGluIGhlYWRlcikKLSAgICAgICAgICAgICAgICB0
aC53aWR0aCA9IGhlYWRlci53aWR0aCArICIlIjsKLSAgICAgICAgICAgIHF1ZXVlLnB1c2goe2Vs
ZW1lbnQ6IHRoLCBoZWFkZXJzOiBoZWFkZXIuY2hpbGRyZW4gfSk7Ci0gICAgICAgIH0pOwotICAg
IH0sCi0KLSAgICBfc2hvd0hlYWRlcjogZnVuY3Rpb24obWVzc2FnZSkKKyAgICBfYWRkSGVhZGVy
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgdGhlYWQgPSBEb2N1bWVudEV4dGVuc2lv
bi5jcmVhdGVFbGVtZW50KCJ0aGVhZCIsIHt9LCB0aGlzLmVsZW1lbnQpOwogICAgICAgICB2YXIg
cm93ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidHIiLCB7fSwgdGhlYWQpOwog
Ci0gICAgICAgIHZhciBxdWV1ZSA9IFtdOwotICAgICAgICB0aGlzLl9zaG93SGVhZGVyUm93KHJv
dywgcXVldWUsIHRoaXMuX2hlYWRlcnMsIG1lc3NhZ2UpOwotCi0gICAgICAgIHdoaWxlIChxdWV1
ZS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciByb3cgPSBudWxsOwotICAgICAgICAgICAgdmFy
IGVudHJpZXMgPSBbXTsKLQotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHF1ZXVl
Lmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gcXVl
dWUuc2hpZnQoKTsKLQotICAgICAgICAgICAgICAgIGlmICghZW50cnkuaGVhZGVycyB8fCAhZW50
cnkuaGVhZGVycy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKGVu
dHJ5LmVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXJvdykKLSAgICAgICAgICAgICAgICAgICAg
cm93ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidHIiLCB7fSwgdGhlYWQpOwot
Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2hvd0hlYWRlclJvdyhyb3csIHF1ZXVlLCBlbnRyeS5o
ZWFkZXJzLCAiIik7Ci0gICAgICAgICAgICAgICAgZW50cnkuZWxlbWVudC5jb2xTcGFuID0gZW50
cnkuaGVhZGVycy5sZW5ndGg7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChyb3cp
IHsKLSAgICAgICAgICAgICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZW50cnkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgKytlbnRyeS5yb3dTcGFuOwotICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLSAgICAKLSAgICBfc2hvd0VtcHR5Q2Vs
bDogZnVuY3Rpb24ocm93LCBjbGFzc05hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gRG9jdW1l
bnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidGQiLCB7IGNsYXNzOiBjbGFzc05hbWUgfSwgcm93
KTsKLSAgICB9LAotCi0gICAgX3Nob3dUZXh0OiBmdW5jdGlvbihyb3csIHRleHQsIGNsYXNzTmFt
ZSkKLSAgICB7Ci0gICAgICAgIHZhciB0ZCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1l
bnQoInRkIiwgeyBjbGFzczogY2xhc3NOYW1lIH0sIHJvdyk7Ci0gICAgICAgIHRkLnRleHRDb250
ZW50ID0gdGV4dDsKKyAgICAgICAgdGhpcy5faGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uIChoZWFk
ZXIpIHsKKyAgICAgICAgICAgIHZhciB0aCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1l
bnQoInRoIiwge30sIHJvdyk7CisgICAgICAgICAgICBpZiAoaGVhZGVyLnRpdGxlICE9IFN0cmlu
Z3MudGV4dC5yZXN1bHRzLmdyYXBoKQorICAgICAgICAgICAgICAgIHRoLnRleHRDb250ZW50ID0g
aGVhZGVyLnRpdGxlOworICAgICAgICAgICAgaWYgKGhlYWRlci5jaGlsZHJlbikKKyAgICAgICAg
ICAgICAgICB0aC5jb2xTcGFuID0gaGVhZGVyLmNoaWxkcmVuLmxlbmd0aDsKKyAgICAgICAgfSk7
CiAgICAgfSwKIAotICAgIF9zaG93Rml4ZWROdW1iZXI6IGZ1bmN0aW9uKHJvdywgdmFsdWUsIGRp
Z2l0cywgY2xhc3NOYW1lKQotICAgIHsKLSAgICAgICAgdmFyIHRkID0gRG9jdW1lbnRFeHRlbnNp
b24uY3JlYXRlRWxlbWVudCgidGQiLCB7IGNsYXNzOiBjbGFzc05hbWUgfSwgcm93KTsKLSAgICAg
ICAgdGQudGV4dENvbnRlbnQgPSB2YWx1ZS50b0ZpeGVkKGRpZ2l0cyB8fCAyKTsKLSAgICB9LAot
ICAgIAotICAgIF9zaG93R3JhcGg6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUsIHRlc3RSZXN1bHRz
KQorICAgIF9hZGRHcmFwaEJ1dHRvbjogZnVuY3Rpb24odGQsIHRlc3ROYW1lLCB0ZXN0UmVzdWx0
cykKICAgICB7CiAgICAgICAgIHZhciBkYXRhID0gdGVzdFJlc3VsdHNbU3RyaW5ncy5qc29uLnNh
bXBsZXNdOwotICAgICAgICBpZiAoIWRhdGEpIHsKLSAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0
eUNlbGwocm93LCAiIik7CisgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmFyIHRkID0gRG9jdW1lbnRFeHRlbnNpb24u
Y3JlYXRlRWxlbWVudCgidGQiLCB7fSwgcm93KTsKICAgICAgICAgdmFyIGJ1dHRvbiA9IERvY3Vt
ZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIsIHsgY2xhc3M6ICJzbWFsbC1idXR0
b24iIH0sIHRkKTsKIAogICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgIHZhciBzYW1wbGVzID0gZGF0YVtTdHJpbmdzLmpzb24u
Z3JhcGgucG9pbnRzXTsKICAgICAgICAgICAgIHZhciBzYW1wbGluZ1RpbWVPZmZzZXQgPSBkYXRh
W1N0cmluZ3MuanNvbi5ncmFwaC5zYW1wbGluZ1RpbWVPZmZzZXRdOwogICAgICAgICAgICAgdmFy
IGF4ZXMgPSBbU3RyaW5ncy50ZXh0LmV4cGVyaW1lbnRzLmNvbXBsZXhpdHksIFN0cmluZ3MudGV4
dC5leHBlcmltZW50cy5mcmFtZVJhdGVdOwotICAgICAgICAgICAgYmVuY2htYXJrQ29udHJvbGxl
ci5zaG93VGVzdEdyYXBoKHRlc3ROYW1lLCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZz
ZXQpOworICAgICAgICAgICAgdmFyIHNjb3JlID0gdGVzdFJlc3VsdHNbU3RyaW5ncy5qc29uLnNj
b3JlXS50b0ZpeGVkKDIpOworICAgICAgICAgICAgdmFyIGNvbXBsZXhpdHkgPSB0ZXN0UmVzdWx0
c1tTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0eV07CisgICAgICAgICAgICB2YXIg
bWVhbiA9IFsKKyAgICAgICAgICAgICAgICAibWVhbjogIiwKKyAgICAgICAgICAgICAgICBjb21w
bGV4aXR5W1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFnZV0udG9GaXhlZCgyKSwKKyAg
ICAgICAgICAgICAgICAiIMKxICIsCisgICAgICAgICAgICAgICAgY29tcGxleGl0eVtTdHJpbmdz
Lmpzb24ubWVhc3VyZW1lbnRzLnN0ZGV2XS50b0ZpeGVkKDIpLAorICAgICAgICAgICAgICAgICIg
KCIsCisgICAgICAgICAgICAgICAgY29tcGxleGl0eVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRz
LnBlcmNlbnRdLnRvRml4ZWQoMiksCisgICAgICAgICAgICAgICAgIiUpLCB3b3JzdCA1JTogIiwK
KyAgICAgICAgICAgICAgICBjb21wbGV4aXR5W1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuY29u
Y2Vybl0udG9GaXhlZCgyKV0uam9pbigiIik7CisgICAgICAgICAgICBiZW5jaG1hcmtDb250cm9s
bGVyLnNob3dUZXN0R3JhcGgodGVzdE5hbWUsIHNjb3JlLCBtZWFuLCBheGVzLCBzYW1wbGVzLCBz
YW1wbGluZ1RpbWVPZmZzZXQpOwogICAgICAgICB9KTsKICAgICAgICAgICAgIAogICAgICAgICBi
dXR0b24udGV4dENvbnRlbnQgPSBTdHJpbmdzLnRleHQucmVzdWx0cy5ncmFwaCArICIuLi4iOwog
ICAgIH0sCiAKLSAgICBfc2hvd0pTT046IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUsIHRlc3RSZXN1
bHRzKQotICAgIHsKLSAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tTdHJpbmdzLmpzb24u
c2FtcGxlc107Ci0gICAgICAgIGlmICghZGF0YSkgewotICAgICAgICAgICAgdGhpcy5fc2hvd0Vt
cHR5Q2VsbChyb3csICIiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZhciB0ZCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoInRkIiwge30sIHJv
dyk7Ci0gICAgICAgIHZhciBidXR0b24gPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50
KCJidXR0b24iLCB7IGNsYXNzOiAic21hbGwtYnV0dG9uIiB9LCB0ZCk7Ci0KLSAgICAgICAgYnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBi
ZW5jaG1hcmtDb250cm9sbGVyLnNob3dUZXN0SlNPTih0ZXN0TmFtZSwgdGVzdFJlc3VsdHMpOwot
ICAgICAgICB9KTsKLSAgICAgICAgICAgIAotICAgICAgICBidXR0b24udGV4dENvbnRlbnQgPSBT
dHJpbmdzLnRleHQucmVzdWx0cy5qc29uICsgIi4uLiI7Ci0gICAgfSwKLSAgICAKICAgICBfaXNO
b2lzeU1lYXN1cmVtZW50OiBmdW5jdGlvbihqc29uRXhwZXJpbWVudCwgZGF0YSwgbWVhc3VyZW1l
bnQsIG9wdGlvbnMpCiAgICAgewogICAgICAgICBjb25zdCBwZXJjZW50VGhyZXNob2xkID0gMTA7
CkBAIC0zODgsOTkgKzMzNCw4NCBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0sCiAKLSAgICBfaXNOb2lzeVRlc3Q6IGZ1bmN0aW9uKHRlc3RS
ZXN1bHRzLCBvcHRpb25zKQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRl
eCA8IDI7ICsraW5kZXgpIHsKLSAgICAgICAgICAgIHZhciBqc29uRXhwZXJpbWVudCA9ICFpbmRl
eCA/IFN0cmluZ3MuanNvbi5leHBlcmltZW50cy5jb21wbGV4aXR5IDogU3RyaW5ncy5qc29uLmV4
cGVyaW1lbnRzLmZyYW1lUmF0ZTsKLSAgICAgICAgICAgIHZhciBkYXRhID0gdGVzdFJlc3VsdHNb
anNvbkV4cGVyaW1lbnRdOwotICAgICAgICAgICAgZm9yICh2YXIgbWVhc3VyZW1lbnQgaW4gZGF0
YSkgewotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pc05vaXN5TWVhc3VyZW1lbnQoanNvbkV4
cGVyaW1lbnQsIGRhdGEsIG1lYXN1cmVtZW50LCBvcHRpb25zKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0sCi0KLSAgICBfc2hvd0VtcHR5Q2VsbHM6IGZ1bmN0aW9uKHJvdywgaGVh
ZGVycykKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBoZWFkZXJz
Lmxlbmd0aDsgKytpbmRleCkgewotICAgICAgICAgICAgaWYgKCFoZWFkZXJzW2luZGV4XS5jaGls
ZHJlbiB8fCAhaGVhZGVyc1tpbmRleF0uY2hpbGRyZW4ubGVuZ3RoKQotICAgICAgICAgICAgICAg
IHRoaXMuX3Nob3dFbXB0eUNlbGwocm93LCAic3VpdGVzLXNlcGFyYXRvciIpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eUNlbGxzKHJvdywgaGVhZGVy
c1tpbmRleF0uY2hpbGRyZW4pOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9zaG93RW1wdHlS
b3c6IGZ1bmN0aW9uKCkKKyAgICBfYWRkRW1wdHlSb3c6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHZhciByb3cgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ0ciIsIHt9LCB0
aGlzLmVsZW1lbnQpOwotICAgICAgICB0aGlzLl9zaG93RW1wdHlDZWxscyhyb3csIHRoaXMuX2hl
YWRlcnMpOworICAgICAgICB0aGlzLl9mbGF0dGVuZWRIZWFkZXJzLmZvckVhY2goZnVuY3Rpb24g
KGhlYWRlcikgeworICAgICAgICAgICAgcmV0dXJuIERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVs
ZW1lbnQoInRkIiwgeyBjbGFzczogInN1aXRlcy1zZXBhcmF0b3IiIH0sIHJvdyk7CisgICAgICAg
IH0pOwogICAgIH0sCiAKLSAgICBfc2hvd1Rlc3Q6IGZ1bmN0aW9uKHRlc3ROYW1lLCB0ZXN0UmVz
dWx0cywgb3B0aW9ucykKKyAgICBfYWRkVGVzdDogZnVuY3Rpb24odGVzdE5hbWUsIHRlc3RSZXN1
bHRzLCBvcHRpb25zKQogICAgIHsKICAgICAgICAgdmFyIHJvdyA9IERvY3VtZW50RXh0ZW5zaW9u
LmNyZWF0ZUVsZW1lbnQoInRyIiwge30sIHRoaXMuZWxlbWVudCk7Ci0gICAgICAgIHZhciBjbGFz
c05hbWUgPSB0aGlzLl9pc05vaXN5VGVzdCh0ZXN0UmVzdWx0cywgb3B0aW9ucykgPyAibm9pc3kt
cmVzdWx0cyIgOiAiIjsKLSAgICAgICAgCi0gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5k
ZXggPCB0aGlzLl9oZWFkZXJzLmxlbmd0aDsgKytpbmRleCkgewotICAgICAgICAgICAgdmFyIGhl
YWRlciA9IHRoaXMuX2hlYWRlcnNbaW5kZXhdOwotCi0gICAgICAgICAgICBpZiAoaGVhZGVyLnRl
eHQgPT0gU3RyaW5ncy50ZXh0LnRlc3ROYW1lKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2hv
d1RleHQocm93LCB0ZXN0TmFtZSwgY2xhc3NOYW1lKTsKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaGVhZGVyLnRleHQgPT0gU3RyaW5ncy50ZXh0LnNj
b3JlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tTdHJpbmdzLmpz
b24uc2NvcmVdOwotICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dGaXhlZE51bWJlcihyb3csIGRh
dGEsIDIpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHZhciBpc05vaXN5
ID0gZmFsc2U7CisgICAgICAgIFtTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0eSwg
U3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZV0uZm9yRWFjaChmdW5jdGlvbiAoZXhw
ZXJpbWVudCkgeworICAgICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tleHBlcmltZW50
XTsKKyAgICAgICAgICAgIGZvciAodmFyIG1lYXN1cmVtZW50IGluIGRhdGEpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodGhpcy5faXNOb2lzeU1lYXN1cmVtZW50KGV4cGVyaW1lbnQsIGRhdGEsIG1l
YXN1cmVtZW50LCBvcHRpb25zKSkKKyAgICAgICAgICAgICAgICAgICAgaXNOb2lzeSA9IHRydWU7
CiAgICAgICAgICAgICB9CisgICAgICAgIH0sIHRoaXMpOwogCi0gICAgICAgICAgICBzd2l0Y2gg
KGluZGV4KSB7Ci0gICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBjYXNlIDM6Ci0gICAg
ICAgICAgICAgICAgdmFyIGpzb25FeHBlcmltZW50ID0gaW5kZXggPT0gMiA/IFN0cmluZ3MuanNv
bi5leHBlcmltZW50cy5jb21wbGV4aXR5IDogU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1l
UmF0ZTsKLSAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RSZXN1bHRzW2pzb25FeHBlcmlt
ZW50XTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBtZWFzdXJlbWVudCBpbiBkYXRhKQotICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9zaG93Rml4ZWROdW1iZXIocm93LCBkYXRhW21lYXN1cmVt
ZW50XSwgMiwgdGhpcy5faXNOb2lzeU1lYXN1cmVtZW50KGpzb25FeHBlcmltZW50LCBkYXRhLCBt
ZWFzdXJlbWVudCwgb3B0aW9ucykgPyBjbGFzc05hbWUgOiAiIik7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fc2hvd0dyYXBoKHJvdywgdGVzdE5hbWUsIHRlc3RSZXN1bHRzKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9zaG93SlNPTihyb3csIHRlc3ROYW1lLCB0ZXN0UmVzdWx0cyk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHRoaXMuX2ZsYXR0ZW5lZEhlYWRlcnMuZm9y
RWFjaChmdW5jdGlvbiAoaGVhZGVyKSB7CisgICAgICAgICAgICB2YXIgY2xhc3NOYW1lID0gIiI7
CisgICAgICAgICAgICBpZiAoaGVhZGVyLmNsYXNzTmFtZSkgeworICAgICAgICAgICAgICAgIGlm
ICh0eXBlb2YgaGVhZGVyLmNsYXNzTmFtZSA9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgICAg
ICAgICBjbGFzc05hbWUgPSBoZWFkZXIuY2xhc3NOYW1lKHRlc3RSZXN1bHRzLCBvcHRpb25zKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA9IGhl
YWRlci5jbGFzc05hbWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGhlYWRlci50aXRsZSA9PSBTdHJpbmdzLnRleHQudGVzdE5hbWUpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgdGl0bGVDbGFzc05hbWUgPSBjbGFzc05hbWU7CisgICAgICAgICAgICAgICAgaWYg
KGlzTm9pc3kpCisgICAgICAgICAgICAgICAgICAgIHRpdGxlQ2xhc3NOYW1lICs9ICIgbm9pc3kt
cmVzdWx0cyI7CisgICAgICAgICAgICAgICAgdmFyIHRkID0gRG9jdW1lbnRFeHRlbnNpb24uY3Jl
YXRlRWxlbWVudCgidGQiLCB7IGNsYXNzOiB0aXRsZUNsYXNzTmFtZSB9LCByb3cpOworICAgICAg
ICAgICAgICAgIHRkLnRleHRDb250ZW50ID0gdGVzdE5hbWU7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgdGQgPSBEb2N1bWVudEV4dGVu
c2lvbi5jcmVhdGVFbGVtZW50KCJ0ZCIsIHsgY2xhc3M6IGNsYXNzTmFtZSB9LCByb3cpOworICAg
ICAgICAgICAgaWYgKGhlYWRlci50aXRsZSA9PSBTdHJpbmdzLnRleHQucmVzdWx0cy5ncmFwaCkg
eworICAgICAgICAgICAgICAgIHRoaXMuX2FkZEdyYXBoQnV0dG9uKHRkLCB0ZXN0TmFtZSwgdGVz
dFJlc3VsdHMpOworICAgICAgICAgICAgfSBlbHNlIGlmICghKCJ0ZXh0IiBpbiBoZWFkZXIpKSB7
CisgICAgICAgICAgICAgICAgdGQudGV4dENvbnRlbnQgPSB0ZXN0UmVzdWx0c1toZWFkZXIudGl0
bGVdOworICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaGVhZGVyLnRleHQgPT0gInN0cmlu
ZyIpIHsKKyAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RSZXN1bHRzW2hlYWRlci50ZXh0
XTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT0gIm51bWJlciIpCisgICAgICAg
ICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnRvRml4ZWQoMik7CisgICAgICAgICAgICAgICAgdGQu
dGV4dENvbnRlbnQgPSBkYXRhOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB0ZC50ZXh0Q29udGVudCA9IGhlYWRlci50ZXh0KHRlc3RSZXN1bHRzLCB0ZXN0TmFtZSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0sIHRoaXMpOwogICAgIH0sCiAKLSAgICBfc2hvd1N1aXRl
OiBmdW5jdGlvbihzdWl0ZU5hbWUsIHN1aXRlUmVzdWx0cywgb3B0aW9ucykKKyAgICBfYWRkU3Vp
dGU6IGZ1bmN0aW9uKHN1aXRlTmFtZSwgc3VpdGVSZXN1bHRzLCBvcHRpb25zKQogICAgIHsKICAg
ICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gc3VpdGVSZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1
bHRzLnRlc3RzXSkgewotICAgICAgICAgICAgdGhpcy5fc2hvd1Rlc3QodGVzdE5hbWUsIHN1aXRl
UmVzdWx0c1tTdHJpbmdzLmpzb24ucmVzdWx0cy50ZXN0c11bdGVzdE5hbWVdLCBvcHRpb25zKTsK
KyAgICAgICAgICAgIHZhciB0ZXN0UmVzdWx0cyA9IHN1aXRlUmVzdWx0c1tTdHJpbmdzLmpzb24u
cmVzdWx0cy50ZXN0c11bdGVzdE5hbWVdOworICAgICAgICAgICAgdGhpcy5fYWRkVGVzdCh0ZXN0
TmFtZSwgdGVzdFJlc3VsdHMsIG9wdGlvbnMpOwogICAgICAgICB9CiAgICAgfSwKICAgICAKLSAg
ICBfc2hvd0l0ZXJhdGlvbiA6IGZ1bmN0aW9uKGl0ZXJhdGlvblJlc3VsdHMsIG9wdGlvbnMpCisg
ICAgX2FkZEl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uUmVzdWx0LCBvcHRpb25zKQogICAg
IHsKLSAgICAgICAgZm9yICh2YXIgc3VpdGVOYW1lIGluIGl0ZXJhdGlvblJlc3VsdHNbU3RyaW5n
cy5qc29uLnJlc3VsdHMuc3VpdGVzXSkgewotICAgICAgICAgICAgaWYgKHN1aXRlTmFtZSAhPSBP
YmplY3Qua2V5cyhpdGVyYXRpb25SZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1bHRzLnN1aXRlc10p
WzBdKQotICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eVJvdygpOwotICAgICAgICAgICAg
dGhpcy5fc2hvd1N1aXRlKHN1aXRlTmFtZSwgaXRlcmF0aW9uUmVzdWx0c1tTdHJpbmdzLmpzb24u
cmVzdWx0cy5zdWl0ZXNdW3N1aXRlTmFtZV0sIG9wdGlvbnMpOworICAgICAgICBmb3IgKHZhciBz
dWl0ZU5hbWUgaW4gaXRlcmF0aW9uUmVzdWx0W1N0cmluZ3MuanNvbi5yZXN1bHRzLnN1aXRlc10p
IHsKKyAgICAgICAgICAgIHRoaXMuX2FkZEVtcHR5Um93KCk7CisgICAgICAgICAgICB0aGlzLl9h
ZGRTdWl0ZShzdWl0ZU5hbWUsIGl0ZXJhdGlvblJlc3VsdFtTdHJpbmdzLmpzb24ucmVzdWx0cy5z
dWl0ZXNdW3N1aXRlTmFtZV0sIG9wdGlvbnMpOwogICAgICAgICB9CiAgICAgfSwKLSAgICAKLSAg
ICBzaG93UmVjb3JkOiBmdW5jdGlvbih0ZXN0TmFtZSwgbWVzc2FnZSwgdGVzdFJlc3VsdHMsIG9w
dGlvbnMpCi0gICAgewotICAgICAgICB0aGlzLmNsZWFyKCk7Ci0gICAgICAgIHRoaXMuX3Nob3dI
ZWFkZXIobWVzc2FnZSk7Ci0gICAgICAgIHRoaXMuX3Nob3dUZXN0KHRlc3ROYW1lLCB0ZXN0UmVz
dWx0cywgb3B0aW9ucyk7Ci0gICAgfSwKIAogICAgIHNob3dJdGVyYXRpb25zOiBmdW5jdGlvbihp
dGVyYXRpb25zUmVzdWx0cywgb3B0aW9ucykKICAgICB7CiAgICAgICAgIHRoaXMuY2xlYXIoKTsK
LSAgICAgICAgdGhpcy5fc2hvd0hlYWRlcigiIik7CisgICAgICAgIHRoaXMuX2FkZEhlYWRlcigp
OwogICAgICAgICAKLSAgICAgICAgaXRlcmF0aW9uc1Jlc3VsdHMuZm9yRWFjaChmdW5jdGlvbihp
dGVyYXRpb25SZXN1bHRzKSB7Ci0gICAgICAgICAgICB0aGlzLl9zaG93SXRlcmF0aW9uKGl0ZXJh
dGlvblJlc3VsdHMsIG9wdGlvbnMpOworICAgICAgICBpdGVyYXRpb25zUmVzdWx0cy5mb3JFYWNo
KGZ1bmN0aW9uKGl0ZXJhdGlvblJlc3VsdCkgeworICAgICAgICAgICAgdGhpcy5fYWRkSXRlcmF0
aW9uKGl0ZXJhdGlvblJlc3VsdCwgb3B0aW9ucyk7CiAgICAgICAgIH0sIHRoaXMpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVu
bmVyL2FuaW1vbWV0ZXIuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNl
cy9ydW5uZXIvYW5pbW9tZXRlci5jc3MKaW5kZXggNjBkMmVjNi4uNzRlNWVjZWMgMTAwNjQ0Ci0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0
ZXIuY3NzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVy
L2FuaW1vbWV0ZXIuY3NzCkBAIC01NCw2ICs1NCw4IEBAIGgxIHsKICAgICBmb250LXNpemU6IDNl
bTsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgZm9udC13ZWlnaHQ6IDUwMDsKKyAgICBt
YXJnaW46IDEwdmggMDsKKyAgICBmbGV4OiAwIDEgMWVtOwogfQogCiBidXR0b24gewpAQCAtNjIs
NyArNjQsNyBAQCBidXR0b24gewogICAgIGZsZXg6IDAgMCBhdXRvOwogICAgIGRpc3BsYXk6IGJs
b2NrOwogICAgIGZvbnQtc2l6ZTogMS41ZW07Ci0gICAgbWFyZ2luLWJvdHRvbTogMmVtOworICAg
IG1hcmdpbi1ib3R0b206IDEwdmg7CiAgICAgYm9yZGVyOiAycHggc29saWQgcmdiKDk2LCA5Niwg
OTYpOwogICAgIGNvbG9yOiByZ2IoOTYsIDk2LCA5Nik7CiAgICAgYmFja2dyb3VuZDogdHJhbnNw
YXJlbnQ7CkBAIC0xMDYsMjYgKzEwOCwyMiBAQCBidXR0b246YWN0aXZlIHsKIH0KIAogLyogSW50
cm8gc2VjdGlvbiAqLwotI2ludHJvIGgxIHsKLSAgICBtYXJnaW46IDFlbSAwOworI2ludHJvLnNl
bGVjdGVkIHsKKyAgICBmbGV4OiAxIDAgYXV0bzsKIH0KIAogI2ludHJvIHAgewogICAgIC13ZWJr
aXQtZmxleDogMSAwIGF1dG87CiAgICAgLW1zLWZsZXg6IDEgMCBhdXRvOwotICAgIGZsZXg6IDEg
MCBhdXRvOwotICAgIHBhZGRpbmc6IDN2dyAwOworICAgIGZsZXg6IDEgMSBhdXRvOworICAgIHBh
ZGRpbmc6IDAgMCAxMHZoIDA7CiAgICAgZm9udC1zaXplOiAyZW07CiB9CiAKIEBtZWRpYSBzY3Jl
ZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoOiAxMDI0cHgpIHsKLSAgICAjaW50cm8uc2VsZWN0ZWQg
ewotICAgICAgICBoZWlnaHQ6IDYwMHB4OwotICAgIH0KLQogICAgICNpbnRybyBwIHsKICAgICAg
ICAgbWF4LXdpZHRoOiA4MDBweDsKLSAgICAgICAgbWFyZ2luOiAwIGF1dG87CisgICAgICAgIG1h
cmdpbjogMDsKICAgICB9CiB9CiAKQEAgLTE2NCwxMiArMTYyLDE4IEBAIGJ1dHRvbjphY3RpdmUg
ewogI3Jlc3VsdHMgewogICAgIHRleHQtYWxpZ246IGNlbnRlcjsKIH0KLSNzY29yZSB7CisKKyNy
ZXN1bHRzLnNlbGVjdGVkIHsKKyAgICBmbGV4OiAxIDAgYXV0bzsKK30KKworLnNjb3JlIHsKICAg
ICBmb250LXNpemU6IDVlbTsKICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICBtYXJnaW46IDA7
CiB9Ci0jcmVzdWx0cyBkaXYgeworCisjcmVzdWx0cy10YWJsZXMgewogICAgIGRpcmVjdGlvbjog
cnRsOwogCiAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CkBAIC0xODcsMTkgKzE5MSwyNSBAQCBi
dXR0b246YWN0aXZlIHsKICAgICBtYXJnaW46IDNlbSAwOwogfQogCisjcmVzdWx0cyB0YWJsZSB7
CisgICAgZGlyZWN0aW9uOiBsdHI7CisgICAgYm9yZGVyLXNwYWNpbmc6IDA7Cit9CisKICNyZXN1
bHRzIHRoIHsKICAgICBwYWRkaW5nOiAuNWVtIDA7CiB9CiAKKyNyZXN1bHRzIHRyIHRkIHsKKyAg
ICBwYWRkaW5nOiAuMjVlbSAwOworfQorCiAjcmVzdWx0cy1oZWFkZXIgdGQsICNyZXN1bHRzLWhl
YWRlciB0aCB7CiAgICAgdGV4dC1hbGlnbjogbGVmdDsKIH0KICNyZXN1bHRzLWhlYWRlciB0ciB0
ZCB7Ci0gICAgcGFkZGluZzogLjI1ZW0gLjVlbSAuMjVlbSAwOworICAgIHBhZGRpbmctcmlnaHQ6
IDFlbTsKIH0KLSNyZXN1bHRzLWRhdGEgdGQsICNyZXN1bHRzLWRhdGEgdGggeworI3Jlc3VsdHMt
c2NvcmUgdGQsICNyZXN1bHRzLXNjb3JlIHRoIHsKICAgICB0ZXh0LWFsaWduOiByaWdodDsKIH0K
LSNyZXN1bHRzLWRhdGEgdHIgdGQgewotICAgIHBhZGRpbmc6IC4yNWVtIDA7Ci19CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21l
dGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5p
bW9tZXRlci5qcwppbmRleCA3NThlMGRlLi4wNDk4MTM1IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpzCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuanMK
QEAgLTQwLDYgKzQwLDE5IEBAIHdpbmRvdy5zZWN0aW9uc01hbmFnZXIgPQogCiAgICAgICAgIGlm
IChwdXNoU3RhdGUpCiAgICAgICAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7c2VjdGlvbjogc2Vj
dGlvbklkZW50aWZpZXJ9LCBkb2N1bWVudC50aXRsZSk7CisgICAgfSwKKworICAgIHNldFNlY3Rp
b25TY29yZTogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIsIHNjb3JlLCBtZWFuKQorICAgIHsK
KyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiIyIgKyBzZWN0aW9uSWRlbnRpZmllciAr
ICIgLnNjb3JlIikudGV4dENvbnRlbnQgPSBzY29yZTsKKyAgICAgICAgaWYgKG1lYW4pCisgICAg
ICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjIiArIHNlY3Rpb25JZGVudGlmaWVyICsg
IiAubWVhbiIpLmlubmVySFRNTCA9IG1lYW47CisgICAgfSwKKworICAgIHBvcHVsYXRlVGFibGU6
IGZ1bmN0aW9uKHRhYmxlSWRlbnRpZmllciwgaGVhZGVycywgZGF0YSkKKyAgICB7CisgICAgICAg
IHZhciB0YWJsZSA9IG5ldyBSZXN1bHRzVGFibGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFi
bGVJZGVudGlmaWVyKSwgaGVhZGVycyk7CisgICAgICAgIHRhYmxlLnNob3dJdGVyYXRpb25zKGRh
dGEsIGJlbmNobWFya1J1bm5lckNsaWVudC5vcHRpb25zKTsKICAgICB9CiB9OwogCkBAIC03Mywx
NiArODYsMTAgQEAgd2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIgPSB7CiAgICAgICAgICAgICB0
aGlzLmFkZGVkS2V5RXZlbnQgPSB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNjb3JlIikudGV4dENvbnRlbnQgPSBiZW5jaG1hcmtSdW5uZXJDbGll
bnQucmVzdWx0cy5zY29yZS50b0ZpeGVkKDIpOwotICAgICAgICB2YXIgZGF0YSA9IGJlbmNobWFy
a1J1bm5lckNsaWVudC5yZXN1bHRzLmRhdGE7Ci0gICAgICAgIHZhciB0YWJsZSA9IG5ldyBSZXN1
bHRzVGFibGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMtaGVhZGVyIiksCi0gICAg
ICAgICAgICBbeyB0ZXh0OiBTdHJpbmdzLnRleHQudGVzdE5hbWUgfV0pOwotICAgICAgICB0YWJs
ZS5zaG93SXRlcmF0aW9ucyhkYXRhW1N0cmluZ3MuanNvbi5yZXN1bHRzLml0ZXJhdGlvbnNdLCBi
ZW5jaG1hcmtSdW5uZXJDbGllbnQub3B0aW9ucyk7Ci0KLSAgICAgICAgdGFibGUgPSBuZXcgUmVz
dWx0c1RhYmxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzLWRhdGEiKSwKLSAgICAg
ICAgICAgIFt7IHRleHQ6IFN0cmluZ3MudGV4dC5zY29yZSB9XSk7Ci0gICAgICAgIHRhYmxlLnNo
b3dJdGVyYXRpb25zKGRhdGFbU3RyaW5ncy5qc29uLnJlc3VsdHMuaXRlcmF0aW9uc10sIGJlbmNo
bWFya1J1bm5lckNsaWVudC5vcHRpb25zKTsKLQorICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2V0
U2VjdGlvblNjb3JlKCJyZXN1bHRzIiwgYmVuY2htYXJrUnVubmVyQ2xpZW50LnJlc3VsdHMuc2Nv
cmUudG9GaXhlZCgyKSk7CisgICAgICAgIHZhciBkYXRhID0gYmVuY2htYXJrUnVubmVyQ2xpZW50
LnJlc3VsdHMuZGF0YVtTdHJpbmdzLmpzb24ucmVzdWx0cy5pdGVyYXRpb25zXTsKKyAgICAgICAg
c2VjdGlvbnNNYW5hZ2VyLnBvcHVsYXRlVGFibGUoInJlc3VsdHMtaGVhZGVyIiwgSGVhZGVycy50
ZXN0TmFtZSwgZGF0YSk7CisgICAgICAgIHNlY3Rpb25zTWFuYWdlci5wb3B1bGF0ZVRhYmxlKCJy
ZXN1bHRzLXNjb3JlIiwgSGVhZGVycy5zY29yZSwgZGF0YSk7CiAgICAgICAgIHNlY3Rpb25zTWFu
YWdlci5zaG93U2VjdGlvbigicmVzdWx0cyIsIHRydWUpOwogICAgIH0sCiAKQEAgLTk4LDE2ICsx
MDUsMTYgQEAgd2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIgPSB7CiAgICAgICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgIHN3aXRjaCAoZXZlbnQudGFyZ2V0
LnNlbGVjdFJhbmdlKSB7CiAgICAgICAgICAgICBjYXNlIDA6IHsKLSAgICAgICAgICAgICAgICBy
YW5nZS5zZXRTdGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2NvcmUiKSwgMCk7Ci0gICAg
ICAgICAgICAgICAgcmFuZ2Uuc2V0RW5kQWZ0ZXIoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Jl
c3VsdHMtZGF0YSA+IHRyOmxhc3Qtb2YtdHlwZSIpLCAwKTsKKyAgICAgICAgICAgICAgICByYW5n
ZS5zZXRTdGFydChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVzdWx0cyAuc2NvcmUiKSwgMCk7
CisgICAgICAgICAgICAgICAgcmFuZ2Uuc2V0RW5kQWZ0ZXIoZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiI3Jlc3VsdHMtc2NvcmUgPiB0cjpsYXN0LW9mLXR5cGUiKSwgMCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIDE6IHsKLSAgICAgICAg
ICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNjb3JlIikpOworICAgICAgICAgICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVzdWx0cyAuc2NvcmUiKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIDI6IHsKLSAgICAgICAgICAg
ICAgICByYW5nZS5zZWxlY3ROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzLWRh
dGEiKSk7CisgICAgICAgICAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0cy1zY29yZSIpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvcmVzb3VyY2VzL3J1bm5lci90ZXN0cy5qcwppbmRleCA5OTE5MGI4Li5mOTg0MTgxIDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci90ZXN0
cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci90
ZXN0cy5qcwpAQCAtMSwzICsxLDggQEAKK3ZhciBIZWFkZXJzID0geworICAgIHRlc3ROYW1lOiBb
eyB0aXRsZTogU3RyaW5ncy50ZXh0LnRlc3ROYW1lIH1dLAorICAgIHNjb3JlOiBbeyB0aXRsZTog
U3RyaW5ncy50ZXh0LnNjb3JlLCB0ZXh0OiBTdHJpbmdzLmpzb24uc2NvcmUgfV0KK307CisKIHZh
ciBTdWl0ZSA9IGZ1bmN0aW9uKG5hbWUsIHRlc3RzKSB7CiAgICAgdGhpcy5uYW1lID0gbmFtZTsK
ICAgICB0aGlzLnRlc3RzID0gdGVzdHM7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0No
YW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA1MjAzYzcuLjdmYzFk
ZDExYSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxNS0xMi0yMyAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgYmVuY2htYXJrIGludG8gdHdv
IGRpZmZlcmVudCBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUyNDU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGhhcm5lc3MuIFJlbW92ZSB0aGUg
SlNPTi1wZXItdGVzdCBidXQga2VlcAorICAgICAgICB0aGUgSlNPTiBvZiB0aGUgd2hvbGUgdGVz
dCBydW4uIFVzZSB0aGUgZnVsbCBwYWdlIGluIG9yZGVyIHRvIGRpc3BsYXkKKyAgICAgICAgdGhl
IGdyYXBoLgorCisgICAgICAgICogQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbDogVXBkYXRlIHNl
dmVyYWwgb2YgdGhlIEpTIGZpbGUgaW5jbHVkZXMgdG8gVVRGLTguIFJlbW92ZSBoZWFkZXIgYW5k
IGZvb3Rlci4gVGVzdCByZXN1bHRzIHNjcmVlbiBpbmNsdWRlcyBzY29yZSwKKyAgICAgICAgYXZl
cmFnZSwgYW5kIHdvcnN0IDUlIHN0YXRpc3RpY3MuCisgICAgICAgICogQW5pbW9tZXRlci9pbmRl
eC5odG1sOiBNYWtlIHN0cnVjdHVyZSBzaW1pbGFyIHRvIGRldmVsb3Blci5odG1sLgorICAgICAg
ICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzczogUmVt
b3ZlIG1vc3Qgb2YgdGhlCisgICAgICAgIGJ1dHRvbiBydWxlcyBzaW5jZSB0aGV5IGFyZSBzdXBl
cmZsdW91cy4gTW92ZSB0aGUgcHJvZ3Jlc3MgYmFyIHRvIHRoZQorICAgICAgICB0b3AsIGZpeGVk
LiBVcGRhdGUgdGhlIHJlc3VsdHMgcGFnZSBydWxlcy4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jl
c291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qczogUmVtb3ZlIG1vc3Qgb2YgdGhlCisg
ICAgICAgIGFkZGl0aW9ucyB0byBzZWN0aW9uc01hbmFnZXIgc2luY2UgdGhleSBhcmUgbm8gbG9u
Z2VyIG5lZWRlZC4KKyAgICAgICAgKHNldFNlY3Rpb25IZWFkZXIpOiBVcGRhdGVzIGhlYWRlciBv
ZiB0aGUgc2VjdGlvbi4KKyAgICAgICAgKHdpbmRvdy5zdWl0ZXNNYW5hZ2VyLl91cGRhdGVTdGFy
dEJ1dHRvblN0YXRlKTogVXBkYXRlIHNlbGVjdG9yLgorICAgICAgICAoc2hvd1Jlc3VsdHMpOiBB
ZGQga2V5cHJlc3MgZXZlbnQgZm9yIHNlbGVjdGluZyBkaWZmZXJlbnQgZGF0YSBmb3IKKyAgICAg
ICAgY29weS9wYXN0ZS4gVXBkYXRlIGhvdyB0aGUgcmVzdWx0cyBhcmUgcG9wdWxhdGVkLiBJbmNs
dWRlIGZ1bGwgdGVzdAorICAgICAgICBKU09OIGluIGEgdGV4dGFyZWEsIHJhdGhlciB0aGFuIHJl
cXVpcmluZyBhIGJ1dHRvbiBwcmVzcy4KKyAgICAgICAgKHNob3dUZXN0R3JhcGgpOgorICAgICAg
ICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qczogVXBkYXRlIHN0
cnVjdHVyZSBvZiBIZWFkZXJzLiBEZWZpbmUgZGlmZmVyZW50IGtpbmRzIG9mIGhlYWRlcnMuIEhl
YWRlcnMgY2FuIGNvbnRyb2wgdGhlaXIKKyAgICAgICAgdGl0bGUsIGFuZCB0aGUgdGV4dCB1c2Vk
IGFzIHRoZSBjZWxsIGNvbnRlbnRzLCBpbmNsdWRpbmcgY2xhc3MgbmFtZS4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgorICAgICAgICAoUmVzdWx0c1RhYmxl
KTogVXBkYXRlIHRvIGluY2x1ZGUgYSBmbGF0dGVuZWQgdmVyc2lvbiBvZiB0aGUgaGVhZGVycywK
KyAgICAgICAgdXNlZCB3aGlsZSBwb3B1bGF0aW5nIHRhYmxlIGNvbnRlbnRzLiBSZW1vdmUgdW5u
ZWVkZWQgaGVscGVyIGZ1bmN0aW9ucworICAgICAgICBmb3IgY3JlYXRpbmcgdGhlIHRhYmxlLiBS
ZW5hbWUgInNob3ciIHRvICJhZGQiLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1
bm5lci9hbmltb21ldGVyLmNzczogVXBkYXRlIHJ1bGVzIHRvCisgICAgICAgIGFjY29tbW9kYXRl
IHRoZSBuZXcgc3RydWN0dXJlLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5l
ci9hbmltb21ldGVyLmpzOgorICAgICAgICAod2luZG93LnNlY3Rpb25zTWFuYWdlci5zZXRTZWN0
aW9uU2NvcmUpOiBIZWxwZXIgZnVuY3Rpb24gdG8gc2V0IHRoZQorICAgICAgICBzY29yZSBhbmQg
bWVhbiBmb3IgYSBzZWN0aW9uLgorICAgICAgICAod2luZG93LnNlY3Rpb25zTWFuYWdlci5wb3B1
bGF0ZVRhYmxlKTogSGVscGVyIGZ1bmN0aW9uIHRvIHNldCB0aGUgdGFibGUuCisgICAgICAgICh3
aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVzdWx0cyk6IFJlZmFjdG9yLgorICAgICAg
ICAod2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIuc2VsZWN0UmVzdWx0cyk6IFVwZGF0ZSBzZWxl
Y3RvcnMuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzOiBT
ZXQgSGVhZGVycy4gRGVidWcgaGFybmVzcworICAgICAgICBleHRlbmRzIGl0LgorCiAyMDE1LTEy
LTE5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGxpdCBiZW5jaG1h
cmsgaW50byB0d28gZGlmZmVyZW50IHBhZ2VzCi0tIAoyLjUuNCAoQXBwbGUgR2l0LTYxKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267872</attachid>
            <date>2015-12-23 15:36:03 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>13. Get rid of prefixed flex properties for now.</desc>
            <filename>0013-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>6005</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBhNmUxZDk1Y2FiZDgwZjg5Yjk3MmRmMjRkMDE1YTkxMjQzYjhkNDZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBXZWQs
IDIzIERlYyAyMDE1IDAxOjIzOjA1IC0wODAwClN1YmplY3Q6IFtQQVRDSCAxMy8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpH
ZXQgcmlkIG9mIHByZWZpeGVkIGZsZXggcHJvcGVydGllcyBmb3Igbm93LgoKKiBBbmltb21ldGVy
L3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3M6CiogQW5pbW9tZXRlci9yZXNv
dXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzOgotLS0KIC4uLi9yZXNvdXJjZXMvZGVidWctcnVu
bmVyL2FuaW1vbWV0ZXIuY3NzICAgICAgICAgIHwgMjkgLS0tLS0tLS0tLS0tLS0KIC4uLi9Bbmlt
b21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3MgICAgIHwgNDQgKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAxMiArKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwg
NzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3MgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzcwppbmRleCA3
OGRkOGY5Li45NzBmMmUyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzcworKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzcwpAQCAt
MTI2LDIzICsxMjYsMTMgQEAgZGl2LnJlc3VsdHMtanNvbiB7CiB9CiAKIHNlY3Rpb24uc2VsZWN0
ZWQgewotICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwotICAgIGRpc3BsYXk6IC13ZWJraXQtZmxl
eDsKICAgICBkaXNwbGF5OiBmbGV4OwogfQogCiBzZWN0aW9uID4gZm9vdGVyIHsKICAgICB0ZXh0
LWFsaWduOiBjZW50ZXI7Ci0gICAgY2xlYXI6IGJvdGg7Ci0gICAgZGlzcGxheTogLW1zLWZsZXhi
b3g7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgIGRpc3BsYXk6IGZsZXg7Ci0gICAg
LW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7
Ci0gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICBhbGlnbi1pdGVtczogY2VudGVy
OwotICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ci0gICAgLW1zLWZsZXgtcGFj
azogY2VudGVyOwogICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogfQogCkBAIC0xNTksOCAr
MTQ5LDYgQEAgc2VjdGlvbiA+IGZvb3RlciB7CiAKIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtZGV2
aWNlLXdpZHRoOiA0MTRweCkgewogICAgIGhyIHsKLSAgICAgICAgLXdlYmtpdC1mbGV4OiAwIDAg
MDsKLSAgICAgICAgLW1zLWZsZXg6IDAgMCAwOwogICAgICAgICBmbGV4OiAwIDAgMDsKICAgICB9
CiAKQEAgLTE3Nyw4ICsxNjUsNiBAQCBzZWN0aW9uID4gZm9vdGVyIHsKICAgICB9CiAKICAgICBz
ZWN0aW9uID4gZm9vdGVyIHsKLSAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1u
OwotICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgZmxleC1kaXJl
Y3Rpb246IGNvbHVtbjsKICAgICAgICAgbWF4LWhlaWdodDogaW5pdGlhbDsKICAgICB9CkBAIC0y
MDksMTQgKzE5NSwxMCBAQCBzZWN0aW9uID4gZm9vdGVyIHsKIAogI3N1aXRlcyB7CiAgICAgcGFk
ZGluZy1sZWZ0OiAxNXZ3OwotICAgIC13ZWJraXQtZmxleDogMCAxIDQwJTsKLSAgICAtbXMtZmxl
eDogMCAxIDQwJTsKICAgICBmbGV4OiAwIDEgNDAlOwogfQogCiAjb3B0aW9ucyB7Ci0gICAgLXdl
YmtpdC1mbGV4OiAxIDEgYXV0bzsKLSAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgZmxleDog
MSAxIGF1dG87CiB9CiAKQEAgLTI3Miw4ICsyNTQsNiBAQCBzZWN0aW9uID4gZm9vdGVyIHsKICAg
ICAgICAgbWFyZ2luOiAwOwogICAgIH0KICAgICAjc3VpdGVzIHsKLSAgICAgICAgLXdlYmtpdC1m
bGV4OiAwIDEgMTAwJTsKLSAgICAgICAgLW1zLWZsZXg6IDAgMSAxMDAlOwogICAgICAgICBmbGV4
OiAwIDEgMTAwJTsKICAgICB9CiB9CkBAIC0yODcsMTcgKzI2Nyw4IEBAIHNlY3Rpb24gPiBmb290
ZXIgewogfQogCiAjcnVubmluZy10ZXN0IHsKLSAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKLSAg
ICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICAgZGlzcGxheTogZmxleDsKLQotICAgIC1tcy1m
bGV4LWFsaWduOiBjZW50ZXI7Ci0gICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwotICAg
IC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKLQot
ICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ci0gICAgLW1zLWZsZXgtcGFjazog
Y2VudGVyOwogICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogfQogCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNz
cyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0
ZXIuY3NzCmluZGV4IDc0ZTVlY2VjLi5iNmY1Y2QzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcworKysgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcwpA
QCAtMTQsMjYgKzE0LDE0IEBAIGJvZHkgewogbWFpbiB7CiAgICAgd2lkdGg6IDEwMCU7CiAgICAg
aGVpZ2h0OiAxMDAlOwotICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwotICAgIGRpc3BsYXk6IC13
ZWJraXQtZmxleDsKLSAgICBkaXNwbGF5OiBmbGV4OwogCi0gICAgLW1zLWZsZXgtYWxpZ246IGNl
bnRlcjsKLSAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0gICAgLXdlYmtpdC1ib3gt
YWxpZ246IGNlbnRlcjsKKyAgICBkaXNwbGF5OiBmbGV4OwogICAgIGFsaWduLWl0ZW1zOiBjZW50
ZXI7Ci0KLSAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKLSAgICAtbXMt
ZmxleC1wYWNrOiBmbGV4LXN0YXJ0OwogICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsK
LQotICAgIC13ZWJraXQtZmxleC1mbG93OiBjb2x1bW47CiAgICAgZmxleC1mbG93OiBjb2x1bW47
CiB9CiAKIGhyIHsKLSAgICAtd2Via2l0LWZsZXg6IDEgMCAyMHB4OwotICAgIC1tcy1mbGV4OiAx
IDAgMjBweDsKICAgICBmbGV4OiAxIDAgMjBweDsKICAgICB3aWR0aDogMXB4OwogICAgIGJvcmRl
cjogMDsKQEAgLTU5LDggKzQ3LDYgQEAgaDEgewogfQogCiBidXR0b24gewotICAgIC13ZWJraXQt
ZmxleDogMCAwIGF1dG87Ci0gICAgLW1zLWZsZXg6IDAgMCBhdXRvOwogICAgIGZsZXg6IDAgMCBh
dXRvOwogICAgIGRpc3BsYXk6IGJsb2NrOwogICAgIGZvbnQtc2l6ZTogMS41ZW07CkBAIC04OSwy
MCArNzUsOSBAQCBidXR0b246YWN0aXZlIHsKICAgICB9CiAKICAgICBzZWN0aW9uLnNlbGVjdGVk
IHsKLSAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7Ci0gICAgICAgIGRpc3BsYXk6IC13ZWJr
aXQtZmxleDsKICAgICAgICAgZGlzcGxheTogZmxleDsKLQotICAgICAgICAtbXMtZmxleC1hbGln
bjogY2VudGVyOwotICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0gICAgICAg
IC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7
Ci0KLSAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Ci0gICAgICAg
IC1tcy1mbGV4LXBhY2s6IGZsZXgtc3RhcnQ7CiAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxl
eC1zdGFydDsKLQotICAgICAgICAtd2Via2l0LWZsZXgtZmxvdzogY29sdW1uOwogICAgICAgICBm
bGV4LWZsb3c6IGNvbHVtbjsKICAgICB9CiB9CkBAIC0xMTMsOCArODgsNiBAQCBidXR0b246YWN0
aXZlIHsKIH0KIAogI2ludHJvIHAgewotICAgIC13ZWJraXQtZmxleDogMSAwIGF1dG87Ci0gICAg
LW1zLWZsZXg6IDEgMCBhdXRvOwogICAgIGZsZXg6IDEgMSBhdXRvOwogICAgIHBhZGRpbmc6IDAg
MCAxMHZoIDA7CiAgICAgZm9udC1zaXplOiAyZW07CkBAIC0xMjksMTcgKzEwMiw5IEBAIGJ1dHRv
bjphY3RpdmUgewogCiAvKiBSdW5uaW5nIHRlc3Qgc2VjdGlvbiAqLwogI3Rlc3QtY29udGFpbmVy
LnNlbGVjdGVkIHsKLSAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKLSAgICBkaXNwbGF5OiAtd2Vi
a2l0LWZsZXg7CiAgICAgZGlzcGxheTogZmxleDsKIAotICAgIC1tcy1mbGV4LWFsaWduOiBjZW50
ZXI7Ci0gICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwotICAgIC13ZWJraXQtYm94LWFs
aWduOiBjZW50ZXI7CiAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKLQotICAgIC13ZWJraXQtanVz
dGlmeS1jb250ZW50OiBjZW50ZXI7Ci0gICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgIGp1
c3RpZnktY29udGVudDogY2VudGVyOwogfQogCkBAIC0xNzYsMTYgKzE0MSw5IEBAIGJ1dHRvbjph
Y3RpdmUgewogI3Jlc3VsdHMtdGFibGVzIHsKICAgICBkaXJlY3Rpb246IHJ0bDsKIAotICAgIGRp
c3BsYXk6IC1tcy1mbGV4Ym94OwotICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICBkaXNw
bGF5OiBmbGV4OwogCi0gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LWFs
aWduLWl0ZW1zOiBjZW50ZXI7Ci0gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICBh
bGlnbi1pdGVtczogY2VudGVyOwotICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7
Ci0gICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgIGp1c3RpZnktY29udGVudDogY2VudGVy
OwogCiAgICAgbWFyZ2luOiAzZW0gMDsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2ZjMWRkMTFhLi43YmIw
MDM0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDE4IEBACiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgR2V0IHJpZCBvZiBwcmVmaXhlZCBmbGV4IHBy
b3BlcnRpZXMgZm9yIG5vdy4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVn
LXJ1bm5lci9hbmltb21ldGVyLmNzczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9y
dW5uZXIvYW5pbW9tZXRlci5jc3M6CisKKzIwMTUtMTItMjMgIEpvbiBMZWUgIDxqb25sZWVAYXBw
bGUuY29tPgorCisgICAgICAgIFNwbGl0IGJlbmNobWFyayBpbnRvIHR3byBkaWZmZXJlbnQgcGFn
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFVwZGF0
ZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBoYXJuZXNzLiBSZW1vdmUgdGhlIEpTT04tcGVyLXRlc3Qg
YnV0IGtlZXAKICAgICAgICAgdGhlIEpTT04gb2YgdGhlIHdob2xlIHRlc3QgcnVuLiBVc2UgdGhl
IGZ1bGwgcGFnZSBpbiBvcmRlciB0byBkaXNwbGF5CiAgICAgICAgIHRoZSBncmFwaC4KLS0gCjIu
NS40IChBcHBsZSBHaXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267873</attachid>
            <date>2015-12-23 15:37:05 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>14. Adjustment styles for iOS.</desc>
            <filename>0014-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>10099</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBmNGM5NDI2MGZmZjZmMjVmMDFmNjdlM2FhOThjM2QxYWU5NGY0YWU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBXZWQs
IDIzIERlYyAyMDE1IDE0OjA3OjM3IC0wODAwClN1YmplY3Q6IFtQQVRDSCAxNC8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpB
ZGp1c3RtZW50IHN0eWxlcyBmb3IgaU9TLgoKKiBBbmltb21ldGVyL2RldmVsb3Blci5odG1sOiBE
aWZmZXJlbnQgZGl2cyBjb250YWluIHRoZSBpZnJhbWUsIHNvIHVzZSBhIGNsYXNzIGluc3RlYWQg
YW5kCnVwZGF0ZSB0aGUgc3R5bGUgcnVsZXMuCiogQW5pbW9tZXRlci9pbmRleC5odG1sOgoqIEFu
aW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzczogUmVtb3ZlIGV4
dHJhbmVvdXMgcnVsZXMuCihAbWVkaWEgc2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0aDogMTgw
MHB4KSk6IE1vdmUgdGhpcyB1cC4KKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9t
ZXRlci5jc3M6IEFkZCBydWxlcyB0byBhY2NvbW9kYXRlIGlPUy4KLS0tCiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWwgICAgICAgICB8ICAgMiArLQogUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL2luZGV4Lmh0bWwgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9y
ZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzICAgICAgICAgIHwgMTE5ICsrKysr
LS0tLS0tLS0tLS0tLS0tLQogLi4uL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21l
dGVyLmNzcyAgICAgfCAgNzEgKysrKysrKysrKystCiBQZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNiArKysKIDUgZmlsZXMgY2hhbmdlZCwgMTEy
IGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9kZXZlbG9wZXIuaHRtbAppbmRleCA0YmRiNDNiLi44NmRlMTU0IDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL2RldmVsb3Blci5odG1sCkBAIC02Miw3ICs2Miw3IEBACiAgICAg
ICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRCZW5jaG1h
cmsoKSI+U3RhcnQgVGVzdDwvYnV0dG9uPgogICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgIDxz
ZWN0aW9uIGlkPSJ0ZXN0LWNvbnRhaW5lciI+Ci0gICAgICAgICAgICA8ZGl2IGlkPSJydW5uaW5n
LXRlc3QiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0icnVubmluZy10ZXN0IiBjbGFzcz0i
ZnJhbWUtY29udGFpbmVyIj48L2Rpdj4KICAgICAgICAgICAgIDxkaXYgaWQ9InByb2dyZXNzIj4K
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcy1jb21wbGV0ZWQiPjwvZGl2PgogICAg
ICAgICAgICAgPC9kaXY+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
aW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9pbmRleC5odG1sCmluZGV4
IDFmZDQwMTAuLjBjMzAxZTMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9pbmRleC5odG1s
CkBAIC0yMSw3ICsyMSw3IEBACiAgICAgICAgICAgICA8cD5Bbmltb21ldGVyIGlzIGEgZ3JhcGhp
Y3MgYmVuY2htYXJrIHRoYXQgbWVhc3VyZXMgYSBicm93c2Vy4oCZcyBjYXBhYmlsaXR5IHRvIGFu
aW1hdGUgY29tcGxleCBzY2VuZXMgYXQgYSB0YXJnZXQgZnJhbWUgcmF0ZS48L3A+CiAgICAgICAg
ICAgICA8YnV0dG9uIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRCZW5jaG1hcmso
KSI+UnVuIGJlbmNobWFyazwvYnV0dG9uPgogICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgIDxz
ZWN0aW9uIGlkPSJ0ZXN0LWNvbnRhaW5lciI+CisgICAgICAgIDxzZWN0aW9uIGlkPSJ0ZXN0LWNv
bnRhaW5lciIgY2xhc3M9ImZyYW1lLWNvbnRhaW5lciI+CiAgICAgICAgIDwvc2VjdGlvbj4KICAg
ICAgICAgPHNlY3Rpb24gaWQ9InJlc3VsdHMiPgogICAgICAgICAgICAgPGgxPkFuaW1vbWV0ZXIg
c2NvcmU8L2gxPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291
cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzcwppbmRleCA5NzBmMmUy
Li5iNGY4MmJlIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzcwpAQCAtMjcsNiAr
MjcsMTMgQEAgYnV0dG9uOmFjdGl2ZSB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUs
IDI1NSwgMjU1LCAuMik7CiB9CiAKK0BtZWRpYSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRo
OiAxODAwcHgpIHsKKyAgICBzZWN0aW9uIHsKKyAgICAgICAgd2lkdGg6IDE2MDBweDsKKyAgICAg
ICAgaGVpZ2h0OiA4MDBweDsKKyAgICB9Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAv
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmVlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTEwNSw3
MiArMTEyLDYgQEAgbGFiZWwudHJlZS1sYWJlbCB7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
ICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdHMgSlNPTiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQot
ZGl2LnJlc3VsdHMtanNvbiB7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgYmFja2dyb3VuZC1jb2xv
cjogcmdiKDEyOCwgMTI4LCAxMjgpOwotICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Ci0g
ICAgd2hpdGUtc3BhY2U6IHByZTsKLSAgICBmb250LXNpemU6IDEycHg7Ci19Ci0KLS8qIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4g
TGF5b3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gKi8KLQotI2ludHJvIHsKLSAgICBtaW4taGVpZ2h0OiA2MDBweDsKLSAgICBoZWlnaHQ6
IGF1dG87Ci19Ci0KLXNlY3Rpb24uc2VsZWN0ZWQgewotICAgIGRpc3BsYXk6IGZsZXg7Ci19Ci0K
LXNlY3Rpb24gPiBmb290ZXIgewotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBkaXNwbGF5
OiBmbGV4OwotICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0gICAganVzdGlmeS1jb250ZW50OiBj
ZW50ZXI7Ci19Ci0KLUBtZWRpYSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoOiAxODAwcHgp
IHsKLSAgICBzZWN0aW9uIHsKLSAgICAgICAgd2lkdGg6IDE2MDBweDsKLSAgICAgICAgaGVpZ2h0
OiA4MDBweDsKLSAgICB9Ci0KLSAgICAjaW50cm8gewotICAgICAgICBtaW4taGVpZ2h0OiA4MDBw
eDsKLSAgICB9Ci19Ci0KLUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0MTRw
eCkgewotICAgIGhyIHsKLSAgICAgICAgZmxleDogMCAwIDA7Ci0gICAgfQotCi0gICAgc2VjdGlv
biB7Ci0gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgICAgIHdpZHRoOiAxMDAl
OwotICAgICAgICBoZWlnaHQ6IDEwMCU7Ci0gICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7Ci0g
ICAgICAgIHBhZGRpbmc6IDAgNXB4OwotICAgIH0KLQotICAgICNpbnRybyB7Ci0gICAgICAgIG1p
bi1oZWlnaHQ6IDEwMCU7Ci0gICAgfQotCi0gICAgc2VjdGlvbiA+IGZvb3RlciB7Ci0gICAgICAg
IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Ci0gICAgICAgIG1heC1oZWlnaHQ6IGluaXRpYWw7Ci0g
ICAgfQotfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbnRybyBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTE3OCw2ICsxMTksOSBAQCBzZWN0aW9u
ID4gZm9vdGVyIHsKICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgIGp1c3RpZnktY29u
dGVudDogZmxleC1zdGFydDsKICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisKKyAgICBtaW4t
aGVpZ2h0OiA2MDBweDsKKyAgICBoZWlnaHQ6IGF1dG87CiB9CiAKICNpbnRybyBoMiB7CkBAIC0y
NDcsMTQgKzE5MSwyNiBAQCBzZWN0aW9uID4gZm9vdGVyIHsKICAgICBwYWRkaW5nOiAuMWVtIDA7
CiB9CiAKK0BtZWRpYSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoOiAxODAwcHgpIHsKKyAg
ICAjaW50cm8geworICAgICAgICBtaW4taGVpZ2h0OiA4MDBweDsKKyAgICB9Cit9CisKIEBtZWRp
YSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0MTRweCkgeworICAgICNpbnRybyB7Cisg
ICAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7CisgICAgfQorCisgICAgI2ludHJvID4gZGl2IHsKKyAg
ICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKKyAgICB9CisKICAgICAjc3VpdGVzLAogICAg
ICNvcHRpb25zIHsKICAgICAgICAgcGFkZGluZzogMCA1cHg7CiAgICAgICAgIG1hcmdpbjogMDsK
LSAgICB9Ci0gICAgI3N1aXRlcyB7Ci0gICAgICAgIGZsZXg6IDAgMSAxMDAlOworICAgICAgICBm
bGV4OiAwIDAgYXV0bzsKICAgICB9CiB9CiAKQEAgLTI3MiwxMyArMjI4LDYgQEAgc2VjdGlvbiA+
IGZvb3RlciB7CiAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiB9CiAKLSNydW5uaW5nLXRl
c3QgPiBpZnJhbWUgewotICAgIHdpZHRoOiAxMjAwcHg7Ci0gICAgaGVpZ2h0OiA2MDBweDsKLSAg
ICBib3JkZXI6IDBweCBub25lOwotICAgIG92ZXJmbG93OiBoaWRkZW47Ci19Ci0KICNwcm9ncmVz
cyB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KQEAgLTI5OSwzMCArMjQ4LDE2IEBAIHNlY3Rpb24g
PiBmb290ZXIgewogICAgIGxlZnQ6IDA7CiAgICAgaGVpZ2h0OiA2cHg7CiAgICAgd2lkdGg6IDA7
Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGJhY2tncm91
bmQtY29sb3I6IHJnYigyMzUsIDk2LCAzMik7CiB9CiAKIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4t
ZGV2aWNlLXdpZHRoOiAxODAwcHgpIHsKLSAgICAjcnVubmluZy10ZXN0ID4gaWZyYW1lIHsKKyAg
ICAuZnJhbWUtY29udGFpbmVyID4gaWZyYW1lIHsKICAgICAgICAgd2lkdGg6IDE2MDBweDsKICAg
ICAgICAgaGVpZ2h0OiA4MDBweDsKICAgICB9CiB9CiAKLUBtZWRpYSBzY3JlZW4gYW5kIChtYXgt
ZGV2aWNlLXdpZHRoOiA0MTRweCkgewotICAgICN0ZXN0LWNvbnRhaW5lciB7Ci0gICAgICAgIHBh
ZGRpbmc6IDA7Ci0gICAgfQotCi0gICAgI3J1bm5pbmctdGVzdCB7Ci0gICAgICAgIG92ZXJmbG93
OiBoaWRkZW47Ci0gICAgfQotCi0gICAgI3J1bm5pbmctdGVzdCA+IGlmcmFtZSB7Ci0gICAgICAg
IHdpZHRoOiBjYWxjKDEwMCUpOwotICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSk7Ci0gICAgfQot
fQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVzdWx0cyBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAqLwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcwppbmRleCBiNmY1Y2QzLi5j
NjkyMDllIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2Vz
L3J1bm5lci9hbmltb21ldGVyLmNzcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcwpAQCAtNDEsNyArNDEsNyBAQCBzZWN0aW9u
LnNlbGVjdGVkIHsKIGgxIHsKICAgICBmb250LXNpemU6IDNlbTsKICAgICB0ZXh0LWFsaWduOiBj
ZW50ZXI7Ci0gICAgZm9udC13ZWlnaHQ6IDUwMDsKKyAgICBmb250LXdlaWdodDogNjAwOwogICAg
IG1hcmdpbjogMTB2aCAwOwogICAgIGZsZXg6IDAgMSAxZW07CiB9CkBAIC04Miw2ICs4MiwyNCBA
QCBidXR0b246YWN0aXZlIHsKICAgICB9CiB9CiAKK0BtZWRpYSBzY3JlZW4gYW5kIChtYXgtZGV2
aWNlLXdpZHRoOiA0MTRweCkgeworICAgIGgxIHsKKyAgICAgICAgZm9udC1zaXplOiAyLjVlbTsK
KyAgICB9CisKKyAgICBociB7CisgICAgICAgIGZsZXg6IDAgMCAwOworICAgIH0KKworICAgIHNl
Y3Rpb24geworICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgICB3aWR0aDog
MTAwJTsKKyAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNo
OworICAgICAgICBwYWRkaW5nOiAwIDVweDsKKyAgICB9Cit9CisKIC8qIEludHJvIHNlY3Rpb24g
Ki8KICNpbnRyby5zZWxlY3RlZCB7CiAgICAgZmxleDogMSAwIGF1dG87CkBAIC0xMDAsNiArMTE4
LDIxIEBAIGJ1dHRvbjphY3RpdmUgewogICAgIH0KIH0KIAorQG1lZGlhIHNjcmVlbiBhbmQgKG1h
eC1kZXZpY2Utd2lkdGg6IDQxNHB4KSB7CisgICAgI2ludHJvLnNlbGVjdGVkIHsKKyAgICAgICAg
ZGlzcGxheTogZmxleDsKKyAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKyAgICAgICAganVz
dGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OworICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbjsKKyAg
ICB9CisKKyAgICAjaW50cm8gcCB7CisgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDsKKyAgICAg
ICAgcGFkZGluZy1yaWdodDogMjBweDsKKyAgICAgICAgZm9udC1zaXplOiAxLjVlbTsKKyAgICB9
Cit9CisKIC8qIFJ1bm5pbmcgdGVzdCBzZWN0aW9uICovCiAjdGVzdC1jb250YWluZXIuc2VsZWN0
ZWQgewogICAgIGRpc3BsYXk6IGZsZXg7CkBAIC0xMDgsOCArMTQxLDcgQEAgYnV0dG9uOmFjdGl2
ZSB7CiAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiB9CiAKLQotI3Rlc3QtY29udGFpbmVy
IGlmcmFtZSB7CisuZnJhbWUtY29udGFpbmVyID4gaWZyYW1lIHsKICAgICB3aWR0aDogMTIwMHB4
OwogICAgIGhlaWdodDogNjAwcHg7CiAgICAgYm9yZGVyOiAwOwpAQCAtMTE3LDEyICsxNDksMjkg
QEAgYnV0dG9uOmFjdGl2ZSB7CiB9CiAKIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdp
ZHRoOiAxODAwcHgpIHsKLSAgICAjdGVzdC1jb250YWluZXIgaWZyYW1lIHsKKyAgICAuZnJhbWUt
Y29udGFpbmVyID4gaWZyYW1lIHsKICAgICAgICAgd2lkdGg6IDE2MDBweDsKICAgICAgICAgaGVp
Z2h0OiA4MDBweDsKICAgICB9CiB9CiAKK0BtZWRpYSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdp
ZHRoOiA0MTRweCkgeworICAgICN0ZXN0LWNvbnRhaW5lciB7CisgICAgICAgIHBhZGRpbmc6IDA7
CisgICAgfQorCisgICAgLmZyYW1lLWNvbnRhaW5lciB7CisgICAgICAgIHdpZHRoOiAxMDAlOwor
ICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgfQor
CisgICAgLmZyYW1lLWNvbnRhaW5lciA+IGlmcmFtZSB7CisgICAgICAgIHdpZHRoOiBjYWxjKDEw
MCUpOworICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSk7CisgICAgfQorfQorCiAvKiBSZXN1bHRz
IHNlY3Rpb24gKi8KICNyZXN1bHRzIHsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CkBAIC0xNzEs
MyArMjIwLDE3IEBAIGJ1dHRvbjphY3RpdmUgewogI3Jlc3VsdHMtc2NvcmUgdGQsICNyZXN1bHRz
LXNjb3JlIHRoIHsKICAgICB0ZXh0LWFsaWduOiByaWdodDsKIH0KKworQG1lZGlhIHNjcmVlbiBh
bmQgKG1heC1kZXZpY2Utd2lkdGg6IDQxNHB4KSB7CisgICAgI3Jlc3VsdHMuc2VsZWN0ZWQgewor
ICAgICAgICBwYWRkaW5nOiAwIDIwcHg7CisgICAgICAgIGRpc3BsYXk6IGZsZXg7CisgICAgICAg
IGFsaWduLWl0ZW1zOiBjZW50ZXI7CisgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFy
dDsKKyAgICAgICAgZmxleC1mbG93OiBjb2x1bW47CisgICAgfQorCisgICAgLnNjb3JlIHsKKyAg
ICAgICAgZm9udC1zaXplOiAzZW07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCA3YmIwMDM0
Li42NjI5ZTNkIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDIyIEBACiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgQWRqdXN0bWVudCBzdHlsZXMgZm9y
IGlPUy4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWw6IERpZmZlcmVudCBk
aXZzIGNvbnRhaW4gdGhlIGlmcmFtZSwgc28gdXNlIGEgY2xhc3MgaW5zdGVhZCBhbmQKKyAgICAg
ICAgdXBkYXRlIHRoZSBzdHlsZSBydWxlcy4KKyAgICAgICAgKiBBbmltb21ldGVyL2luZGV4Lmh0
bWw6CisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0
ZXIuY3NzOiBSZW1vdmUgZXh0cmFuZW91cyBydWxlcy4KKyAgICAgICAgKEBtZWRpYSBzY3JlZW4g
YW5kIChtaW4tZGV2aWNlLXdpZHRoOiAxODAwcHgpKTogTW92ZSB0aGlzIHVwLgorICAgICAgICAq
IEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzczogQWRkIHJ1bGVzIHRv
IGFjY29tb2RhdGUgaU9TLgorCisyMDE1LTEyLTIzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNv
bT4KKworICAgICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlmZmVyZW50IHBhZ2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI0NTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBHZXQgcmlkIG9m
IHByZWZpeGVkIGZsZXggcHJvcGVydGllcyBmb3Igbm93LgogCiAgICAgICAgICogQW5pbW9tZXRl
ci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzOgotLSAKMi41LjQgKEFwcGxl
IEdpdC02MSkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267874</attachid>
            <date>2015-12-23 15:37:26 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>15. Adjust styles for iPad.</desc>
            <filename>0015-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>2465</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSAyYWVjZjc2NTAwZDMwODE5OWVjYTk2MmE2OTE4ZTU5NzJmMTA2MGIwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBXZWQs
IDIzIERlYyAyMDE1IDE0OjMwOjA3IC0wODAwClN1YmplY3Q6IFtQQVRDSCAxNS8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpB
ZGp1c3Qgc3R5bGVzIGZvciBpUGFkLgoKKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5p
bW9tZXRlci5jc3M6CihAbWVkaWEgc2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0aDogNzY4cHgp
KTogQXBwbHkgdG8gaVBhZCBhcyB3ZWxsLgooQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1kZXZpY2Ut
d2lkdGg6IDEwMjRweCkpOiBVcGRhdGUgd2lkdGggZm9yIGlQYWRzLgotLS0KIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzIHwgMTAgKysr
KysrKystLQogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAxMyArKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDIxIGluc2Vy
dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3MgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcwppbmRleCBjNjky
MDllLi5kOGY2MzRhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVz
b3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcwpAQCAtNjksNyArNjksNyBAQCBi
dXR0b246YWN0aXZlIHsKIH0KIAogCi1AbWVkaWEgc2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0
aDogMTAyNHB4KSB7CitAbWVkaWEgc2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0aDogNzY4cHgp
IHsKICAgICBzZWN0aW9uIHsKICAgICAgICAgcGFkZGluZzogMCAyMHB4OwogICAgIH0KQEAgLTEx
MSw3ICsxMTEsNyBAQCBidXR0b246YWN0aXZlIHsKICAgICBmb250LXNpemU6IDJlbTsKIH0KIAot
QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6IDEwMjRweCkgeworQG1lZGlhIHNj
cmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6IDc2OHB4KSB7CiAgICAgI2ludHJvIHAgewogICAg
ICAgICBtYXgtd2lkdGg6IDgwMHB4OwogICAgICAgICBtYXJnaW46IDA7CkBAIC0xNzIsNiArMTcy
LDEyIEBAIGJ1dHRvbjphY3RpdmUgewogICAgIH0KIH0KIAorQG1lZGlhIHNjcmVlbiBhbmQgKG1h
eC1kZXZpY2Utd2lkdGg6IDEwMjRweCkgeworICAgIC5mcmFtZS1jb250YWluZXIgPiBpZnJhbWUg
eworICAgICAgICB3aWR0aDogOTAwcHg7CisgICAgfQorfQorCiAvKiBSZXN1bHRzIHNlY3Rpb24g
Ki8KICNyZXN1bHRzIHsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDY2MjllM2QuLmY3NzZjOGMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC01LDYgKzUsMTkgQEAKIAogICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBBZGp1c3Qgc3R5bGVz
IGZvciBpUGFkLgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1v
bWV0ZXIuY3NzOgorICAgICAgICAoQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6
IDc2OHB4KSk6IEFwcGx5IHRvIGlQYWQgYXMgd2VsbC4KKyAgICAgICAgKEBtZWRpYSBzY3JlZW4g
YW5kIChtYXgtZGV2aWNlLXdpZHRoOiAxMDI0cHgpKTogVXBkYXRlIHdpZHRoIGZvciBpUGFkcy4K
KworMjAxNS0xMi0yMyAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3Bs
aXQgYmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDU4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgQWRqdXN0bWVudCBzdHlsZXMgZm9yIGlPUy4K
IAogICAgICAgICAqIEFuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWw6IERpZmZlcmVudCBkaXZzIGNv
bnRhaW4gdGhlIGlmcmFtZSwgc28gdXNlIGEgY2xhc3MgaW5zdGVhZCBhbmQKLS0gCjIuNS40IChB
cHBsZSBHaXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267875</attachid>
            <date>2015-12-23 15:37:47 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>16. Move Array functions to extensions.js</desc>
            <filename>0016-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>4038</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBlZjhiN2UwZDFiNTEwMDE4ODA3MDU1NTg2NDdlZjc2NGRiMWUzNmQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBXZWQs
IDIzIERlYyAyMDE1IDE1OjExOjU2IC0wODAwClN1YmplY3Q6IFtQQVRDSCAxNi8xNl0gU3BsaXQg
YmVuY2htYXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpN
b3ZlIEFycmF5IGZ1bmN0aW9ucyB0byBleHRlbnNpb25zLmpzIHNpbmNlIHRoYXQgaXMgaW5jbHVk
ZWQgYnkgdGhlIGhhcm5lc3MuCkFkZCBFUzYgQXJyYXkgcG9seWZpbGxzLgoKKiBBbmltb21ldGVy
L3Jlc291cmNlcy9hbGdvcml0aG0uanM6CihBcnJheS5wcm90b3R5cGUuc3dhcCk6IE1vdmVkIHRv
IGV4dGVuc2lvbnMuanMuCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qczoKKEFy
cmF5LnByb3RvdHlwZS5zd2FwKToKKEFycmF5LnByb3RvdHlwZS5maWxsKTogQWRkZWQuCihBcnJh
eS5wcm90b3R5cGUuZmluZCk6IEFkZGVkLgotLS0KIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIHwgIDggLS0tLQogLi4uL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2V4dGVuc2lvbnMuanMgICAgICAgICAgICAgfCA0OCArKysrKysrKysrKysrKysrKysrKysr
CiBQZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8IDE3
ICsrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9h
bGdvcml0aG0uanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29y
aXRobS5qcwppbmRleCAzZDM5NzFmLi4wZWYyMWE5IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5qcworKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5qcwpAQCAtMSwxMSArMSwzIEBACi1B
cnJheS5wcm90b3R5cGUuc3dhcCA9IGZ1bmN0aW9uKGksIGopCi17Ci0gICAgdmFyIHQgPSB0aGlz
W2ldOwotICAgIHRoaXNbaV0gPSB0aGlzW2pdOwotICAgIHRoaXNbal0gPSB0OwotICAgIHJldHVy
biB0aGlzOwotfQotCiBmdW5jdGlvbiBIZWFwKG1heFNpemUsIGNvbXBhcmUpCiB7CiAgICAgdGhp
cy5fbWF4U2l6ZSA9IG1heFNpemU7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKaW5kZXggMmE0MGM0Ny4uZmY0MzM0YiAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpz
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5q
cwpAQCAtMSwzICsxLDUxIEBACitBcnJheS5wcm90b3R5cGUuc3dhcCA9IGZ1bmN0aW9uKGksIGop
Cit7CisgICAgdmFyIHQgPSB0aGlzW2ldOworICAgIHRoaXNbaV0gPSB0aGlzW2pdOworICAgIHRo
aXNbal0gPSB0OworICAgIHJldHVybiB0aGlzOworfQorCitpZiAoIUFycmF5LnByb3RvdHlwZS5m
aWxsKSAgeworICAgIEFycmF5LnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24odmFsdWUpIHsKKwor
ICAgICAgICB2YXIgb2JqZWN0ID0gT2JqZWN0KHRoaXMpOworICAgICAgICB2YXIgbGVuID0gcGFy
c2VJbnQob2JqZWN0Lmxlbmd0aCwgMTApOworICAgICAgICB2YXIgc3RhcnQgPSBhcmd1bWVudHNb
MV07CisgICAgICAgIHZhciByZWxhdGl2ZVN0YXJ0ID0gcGFyc2VJbnQoc3RhcnQsIDEwKSB8fCAw
OworICAgICAgICB2YXIgayA9IHJlbGF0aXZlU3RhcnQgPCAwID8gTWF0aC5tYXgobGVuICsgcmVs
YXRpdmVTdGFydCwgMCkgOiBNYXRoLm1pbihyZWxhdGl2ZVN0YXJ0LCBsZW4pOworICAgICAgICB2
YXIgZW5kID0gYXJndW1lbnRzWzJdOworICAgICAgICB2YXIgcmVsYXRpdmVFbmQgPSBlbmQgPT09
IHVuZGVmaW5lZCA/IGxlbiA6IChwYXJzZUludChlbmQpIHx8IDApIDsKKyAgICAgICAgdmFyIGZp
bmFsID0gcmVsYXRpdmVFbmQgPCAwID8gTWF0aC5tYXgobGVuICsgcmVsYXRpdmVFbmQsIDApIDog
TWF0aC5taW4ocmVsYXRpdmVFbmQsIGxlbik7CisKKyAgICAgICAgZm9yICg7IGsgPCBmaW5hbDsg
aysrKSB7CisgICAgICAgICAgICBvYmplY3Rba10gPSB2YWx1ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBvYmplY3Q7CisgICAgfTsKK30KKworaWYgKCFBcnJheS5wcm90b3R5cGUuZmlu
ZCkgeworICAgIEFycmF5LnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7Cisg
ICAgICAgIGlmICh0aGlzID09PSBudWxsKQorICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJv
cignQXJyYXkucHJvdG90eXBlLmZpbmQgY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkJyk7Cisg
ICAgICAgIGlmICh0eXBlb2YgcHJlZGljYXRlICE9PSAnZnVuY3Rpb24nKQorICAgICAgICAgICAg
dGhyb3cgbmV3IFR5cGVFcnJvcigncHJlZGljYXRlIG11c3QgYmUgYSBmdW5jdGlvbicpOworICAg
ICAgICB2YXIgbGlzdCA9IE9iamVjdCh0aGlzKTsKKyAgICAgICAgdmFyIGxlbmd0aCA9IGxpc3Qu
bGVuZ3RoID4+PiAwOworICAgICAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50c1sxXTsKKyAgICAg
ICAgdmFyIHZhbHVlOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgICAgIHZhbHVlID0gbGlzdFtpXTsKKyAgICAgICAgICAgIGlmIChwcmVkaWNh
dGUuY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaSwgbGlzdCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgfTsKK30K
KwogZnVuY3Rpb24gUG9pbnQoeCwgeSkKIHsKICAgICB0aGlzLnggPSB4OwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpp
bmRleCBmNzc2YzhjLi40MjllMTgwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5n
ZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDIzIEBACiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgTW92ZSBBcnJh
eSBmdW5jdGlvbnMgdG8gZXh0ZW5zaW9ucy5qcyBzaW5jZSB0aGF0IGlzIGluY2x1ZGVkIGJ5IHRo
ZSBoYXJuZXNzLgorICAgICAgICBBZGQgRVM2IEFycmF5IHBvbHlmaWxscy4KKworICAgICAgICAq
IEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5qczoKKyAgICAgICAgKEFycmF5LnByb3Rv
dHlwZS5zd2FwKTogTW92ZWQgdG8gZXh0ZW5zaW9ucy5qcy4KKyAgICAgICAgKiBBbmltb21ldGVy
L3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgorICAgICAgICAoQXJyYXkucHJvdG90eXBlLnN3YXAp
OgorICAgICAgICAoQXJyYXkucHJvdG90eXBlLmZpbGwpOiBBZGRlZC4KKyAgICAgICAgKEFycmF5
LnByb3RvdHlwZS5maW5kKTogQWRkZWQuCisKKzIwMTUtMTItMjMgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IGJlbmNobWFyayBpbnRvIHR3byBkaWZmZXJlbnQg
cGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIEFk
anVzdCBzdHlsZXMgZm9yIGlQYWQuCiAKICAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9y
dW5uZXIvYW5pbW9tZXRlci5jc3M6Ci0tIAoyLjUuNCAoQXBwbGUgR2l0LTYxKQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267878</attachid>
            <date>2015-12-23 16:48:36 -0800</date>
            <delta_ts>2015-12-23 16:48:36 -0800</delta_ts>
            <desc>17. Follow-up patch</desc>
            <filename>0001-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>10277</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBjZWRlMmU3YTZkMDNlYTUyMGU1OTkzODE1ZmFlOTJkNmRmZjBkNDlhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBXZWQs
IDIzIERlYyAyMDE1IDE2OjQ2OjU0IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gU3BsaXQgYmVuY2ht
YXJrIGludG8gdHdvIGRpZmZlcmVudCBwYWdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MjQ1OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpBZGRyZXNz
IGNvbW1lbnRzLgoKKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJr
LXJ1bm5lci5qczoKKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRlc3RBbmRSZWNvcmRS
ZXN1bHRzKTogV2hlbiB0aGUgdGVzdGluZyBpcyBjb21wbGV0ZSB0aGUgZnJhbWUgb3duaW5nIHRo
ZQpzYW1wbGVyIGdvZXMgYXdheSwgYW5kIGEgbGF0ZXIgY2FsbCB0byBnZXQgdGhlIEpTT04gZGF0
YSBpcyBubyBsb25nZXIgYXZhaWxhYmxlLiBQcm9jZXNzIHRoZSBkYXRhCnJpZ2h0IGhlcmUsIGlu
c3RlYWQsIGFuZCBqdXN0IHJlZmVyZW5jZSBpdCB3aGVuIGRpc3BsYXlpbmcgdGhlIHJlc3VsdHMg
aW4gUmVzdWx0c0Rhc2hib2FyZC5wcm90b3R5cGUuX3Byb2Nlc3NEYXRhLgoqIEFuaW1vbWV0ZXIv
cmVzb3VyY2VzL2V4dGVuc2lvbnMuanM6CihBcnJheS5wcm90b3R5cGUuZmlsbC5BcnJheS5wcm90
b3R5cGUuZmlsbCk6IEFkZCBhIG51bGwgY2hlY2suIFJlbW92ZSBicmFjZXMgYXJvdW5kIHNpbmds
ZS1saW5lIGNsYXVzZS4KKEFycmF5LnByb3RvdHlwZS5maW5kLkFycmF5LnByb3RvdHlwZS5maW5k
KTogVXBkYXRlIHRoZSBudWxsIGNoZWNrLgooUmVzdWx0c0Rhc2hib2FyZC5wcm90b3R5cGUuX3By
b2Nlc3NEYXRhKTogVXNlIHRoZSBhbHJlYWR5LXByb2Nlc3NlZCBkYXRhLgoqIEFuaW1vbWV0ZXIv
cmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzczoKKC5mcmFtZS1jb250YWluZXIgPiBpZnJh
bWUpOiBSZW1vdmUgY2FsYygpLgoqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9j
YW52YXMtdGVzdHMuanM6IE9wZW5pbmcgYnJhY2VzIG9uIG5ldyBsaW5lcy4KLS0tCiAuLi4vcmVz
b3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzICAgICB8ICA1ICsrLS0KIC4u
Li9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzICAgICAgICAgICAgIHwgMTcgKysr
KysrLS0tLS0tCiAuLi4vQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3Nz
ICAgICB8ICA0ICstLQogLi4uL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpz
ICAgICAgICAgfCAzMCArKysrKysrKysrKysrKy0tLS0tLS0tCiBQZXJmb3JtYW5jZVRlc3RzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8IDIxICsrKysrKysrKysrKysrKwogNSBm
aWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9i
ZW5jaG1hcmstcnVubmVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNl
cy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcwppbmRleCA0YmExNTU0Li4wZjc5M2M1
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVn
LXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMKQEAgLTEwNCw5
ICsxMDQsOCBAQCBCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVz
dWx0cyA9IGZ1bmN0aW9uKHN0YXRlKQogICAgIHZhciBzZWxmID0gdGhpczsKIAogICAgIHN1aXRl
LnJ1bihjb250ZW50V2luZG93LCB0ZXN0LCB0aGlzLl9jbGllbnQub3B0aW9ucywgdGhpcy5fY2xp
ZW50LnByb2dyZXNzQmFyKS50aGVuKGZ1bmN0aW9uKHNhbXBsZXIpIHsKLSAgICAgICAgdmFyIHNh
bXBsZXJzID0gc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gfHwgW107Ci0gICAgICAg
IAotICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2FtcGxlcjsKKyAgICAgICAgdmFyIHNh
bXBsZXJzID0gc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gfHwge307CisgICAgICAg
IHNhbXBsZXJzW3Rlc3QubmFtZV0gPSBzYW1wbGVyLnRvSlNPTih0cnVlLCB0cnVlKTsKICAgICAg
ICAgc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gPSBzYW1wbGVyczsKIAogICAgICAg
ICBpZiAoc2VsZi5fY2xpZW50ICYmIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0KQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCmluZGV4
IGZmNDMzNGIuLjczOGFiNDQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKQEAgLTYsOCArNiwxMCBAQCBBcnJheS5wcm90b3R5
cGUuc3dhcCA9IGZ1bmN0aW9uKGksIGopCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLWlmICghQXJy
YXkucHJvdG90eXBlLmZpbGwpICB7CitpZiAoIUFycmF5LnByb3RvdHlwZS5maWxsKSB7CiAgICAg
QXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICBpZiAodGhp
cyA9PSBudWxsKQorICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJyYXkucHJvdG90
eXBlLmZpbGwgY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkJyk7CiAKICAgICAgICAgdmFyIG9i
amVjdCA9IE9iamVjdCh0aGlzKTsKICAgICAgICAgdmFyIGxlbiA9IHBhcnNlSW50KG9iamVjdC5s
ZW5ndGgsIDEwKTsKQEAgLTE4LDkgKzIwLDggQEAgaWYgKCFBcnJheS5wcm90b3R5cGUuZmlsbCkg
IHsKICAgICAgICAgdmFyIHJlbGF0aXZlRW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiAo
cGFyc2VJbnQoZW5kKSB8fCAwKSA7CiAgICAgICAgIHZhciBmaW5hbCA9IHJlbGF0aXZlRW5kIDwg
MCA/IE1hdGgubWF4KGxlbiArIHJlbGF0aXZlRW5kLCAwKSA6IE1hdGgubWluKHJlbGF0aXZlRW5k
LCBsZW4pOwogCi0gICAgICAgIGZvciAoOyBrIDwgZmluYWw7IGsrKykgeworICAgICAgICBmb3Ig
KDsgayA8IGZpbmFsOyBrKyspCiAgICAgICAgICAgICBvYmplY3Rba10gPSB2YWx1ZTsKLSAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfTsKQEAgLTI4LDEwICsyOSwxMSBA
QCBpZiAoIUFycmF5LnByb3RvdHlwZS5maWxsKSAgewogCiBpZiAoIUFycmF5LnByb3RvdHlwZS5m
aW5kKSB7CiAgICAgQXJyYXkucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHsK
LSAgICAgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIGlmICh0aGlzID09IG51bGwpCiAg
ICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcnJheS5wcm90b3R5cGUuZmluZCBjYWxs
ZWQgb24gbnVsbCBvciB1bmRlZmluZWQnKTsKICAgICAgICAgaWYgKHR5cGVvZiBwcmVkaWNhdGUg
IT09ICdmdW5jdGlvbicpCiAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwcmVkaWNh
dGUgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7CisKICAgICAgICAgdmFyIGxpc3QgPSBPYmplY3QodGhp
cyk7CiAgICAgICAgIHZhciBsZW5ndGggPSBsaXN0Lmxlbmd0aCA+Pj4gMDsKICAgICAgICAgdmFy
IHRoaXNBcmcgPSBhcmd1bWVudHNbMV07CkBAIC0yNjAsMTQgKzI2MiwxMyBAQCBSZXN1bHRzRGFz
aGJvYXJkLnByb3RvdHlwZSA9CiAgICAgICAgIAogICAgICAgICAgICAgZm9yICh2YXIgc3VpdGVO
YW1lIGluIGl0ZXJhdGlvblNhbXBsZXJzKSB7CiAgICAgICAgICAgICAgICAgdmFyIHN1aXRlID0g
c3VpdGVGcm9tTmFtZShzdWl0ZU5hbWUpOwotICAgICAgICAgICAgICAgIHZhciBzdWl0ZVNhbXBs
ZXJzID0gaXRlcmF0aW9uU2FtcGxlcnNbc3VpdGVOYW1lXTsKKyAgICAgICAgICAgICAgICB2YXIg
c3VpdGVTYW1wbGVyRGF0YSA9IGl0ZXJhdGlvblNhbXBsZXJzW3N1aXRlTmFtZV07CiAKICAgICAg
ICAgICAgICAgICB2YXIgdGVzdHNSZXN1bHRzID0ge307CiAgICAgICAgICAgICAgICAgdmFyIHRl
c3RzU2NvcmVzID0gW107CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZm9yICh2
YXIgdGVzdE5hbWUgaW4gc3VpdGVTYW1wbGVycykgewotICAgICAgICAgICAgICAgICAgICB2YXIg
c2FtcGxlciA9IHN1aXRlU2FtcGxlcnNbdGVzdE5hbWVdOwotICAgICAgICAgICAgICAgICAgICB0
ZXN0c1Jlc3VsdHNbdGVzdE5hbWVdID0gc2FtcGxlci50b0pTT04oc3RhdGlzdGljcywgZ3JhcGgp
OworICAgICAgICAgICAgICAgIGZvciAodmFyIHRlc3ROYW1lIGluIHN1aXRlU2FtcGxlckRhdGEp
IHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdHNSZXN1bHRzW3Rlc3ROYW1lXSA9IHN1aXRlU2Ft
cGxlckRhdGFbdGVzdE5hbWVdOwogICAgICAgICAgICAgICAgICAgICB0ZXN0c1Njb3Jlcy5wdXNo
KHRlc3RzUmVzdWx0c1t0ZXN0TmFtZV1bU3RyaW5ncy5qc29uLnNjb3JlXSk7CiAgICAgICAgICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL3J1bm5lci9hbmltb21ldGVyLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
ZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzCmluZGV4IGQ4ZjYzNGEuLmVkNDQyODIgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2Fu
aW1vbWV0ZXIuY3NzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMv
cnVubmVyL2FuaW1vbWV0ZXIuY3NzCkBAIC0xNjcsOCArMTY3LDggQEAgYnV0dG9uOmFjdGl2ZSB7
CiAgICAgfQogCiAgICAgLmZyYW1lLWNvbnRhaW5lciA+IGlmcmFtZSB7Ci0gICAgICAgIHdpZHRo
OiBjYWxjKDEwMCUpOwotICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSk7CisgICAgICAgIHdpZHRo
OiAxMDAlOworICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMt
dGVzdHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291
cmNlcy9jYW52YXMtdGVzdHMuanMKaW5kZXggYjgwNGVjNy4uNTY0YjU4YSAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFz
LXRlc3RzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIv
cmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcwpAQCAtMiw3ICsyLDggQEAKIAogLy8gPT09IFBBSU5U
IE9CSkVDVFMgPT09CiAKLWZ1bmN0aW9uIENhbnZhc0xpbmVTZWdtZW50KHN0YWdlKSB7CitmdW5j
dGlvbiBDYW52YXNMaW5lU2VnbWVudChzdGFnZSkKK3sKICAgICB2YXIgY2lyY2xlID0gc3RhZ2Uu
cmFuZG9tSW50KDAsIDIpOwogICAgIHRoaXMuX2NvbG9yID0gWyIjZTAxMDQwIiwgIiMxMGMwMzAi
LCAiI2UwNTAxMCJdW2NpcmNsZV07CiAgICAgdGhpcy5fbGluZVdpZHRoID0gTWF0aC5wb3coTWF0
aC5yYW5kb20oKSwgMTIpICogMjAgKyAzOwpAQCAtMTYsNyArMTcsOCBAQCBmdW5jdGlvbiBDYW52
YXNMaW5lU2VnbWVudChzdGFnZSkgewogICAgIHRoaXMuX3NlZ21lbnREaXJlY3Rpb24gPSBNYXRo
LnJhbmRvbSgpID4gMC41ID8gLTEgOiAxOwogfQogCi1DYW52YXNMaW5lU2VnbWVudC5wcm90b3R5
cGUuZHJhdyA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKK0NhbnZhc0xpbmVTZWdtZW50LnByb3RvdHlw
ZS5kcmF3ID0gZnVuY3Rpb24oY29udGV4dCkKK3sKICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0g
dGhpcy5fY29sb3I7CiAgICAgY29udGV4dC5saW5lV2lkdGggPSB0aGlzLl9saW5lV2lkdGg7CiAK
QEAgLTI5LDcgKzMxLDggQEAgQ2FudmFzTGluZVNlZ21lbnQucHJvdG90eXBlLmRyYXcgPSBmdW5j
dGlvbihjb250ZXh0KSB7CiAgICAgY29udGV4dC5zdHJva2UoKTsKIH07CiAKLWZ1bmN0aW9uIENh
bnZhc0FyYyhzdGFnZSkgeworZnVuY3Rpb24gQ2FudmFzQXJjKHN0YWdlKQorewogICAgIHZhciBt
YXhYID0gNiwgbWF4WSA9IDM7CiAgICAgdmFyIGRpc3RhbmNlWCA9IHN0YWdlLnNpemUueCAvIG1h
eFg7CiAgICAgdmFyIGRpc3RhbmNlWSA9IHN0YWdlLnNpemUueSAvIChtYXhZICsgMSk7CkBAIC01
MCw3ICs1Myw4IEBAIGZ1bmN0aW9uIENhbnZhc0FyYyhzdGFnZSkgewogICAgIHRoaXMuX2RvU3Ry
b2tlID0gc3RhZ2UucmFuZG9tSW50KDAsIDMpICE9IDA7CiB9OwogCi1DYW52YXNBcmMucHJvdG90
eXBlLmRyYXcgPSBmdW5jdGlvbihjb250ZXh0KSB7CitDYW52YXNBcmMucHJvdG90eXBlLmRyYXcg
PSBmdW5jdGlvbihjb250ZXh0KQorewogICAgIHRoaXMuX3N0YXJ0QW5nbGUgKz0gdGhpcy5fb21l
Z2E7CiAgICAgdGhpcy5fZW5kQW5nbGUgKz0gdGhpcy5fb21lZ2EgLyAyOwogCkBAIC03MCw3ICs3
NCw4IEBAIENhbnZhc0FyYy5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKICAg
ICB9CiB9OwogCi1mdW5jdGlvbiBDYW52YXNMaW5lUG9pbnQoc3RhZ2UsIGNvb3JkaW5hdGVNYXhp
bXVtKSB7CitmdW5jdGlvbiBDYW52YXNMaW5lUG9pbnQoc3RhZ2UsIGNvb3JkaW5hdGVNYXhpbXVt
KQorewogICAgIHZhciBYX0xPT1BTID0gNDA7CiAgICAgdmFyIFlfTE9PUFMgPSAyMDsKIApAQCAt
MTA3LDE0ICsxMTIsMTYgQEAgZnVuY3Rpb24gQ2FudmFzTGluZVBvaW50KHN0YWdlLCBjb29yZGlu
YXRlTWF4aW11bSkgewogCiB9CiAKLUNhbnZhc0xpbmVQb2ludC5wcm90b3R5cGUuZHJhdyA9IGZ1
bmN0aW9uKGNvbnRleHQsIHN0YWdlKSB7CitDYW52YXNMaW5lUG9pbnQucHJvdG90eXBlLmRyYXcg
PSBmdW5jdGlvbihjb250ZXh0LCBzdGFnZSkKK3sKICAgICBjb250ZXh0LmxpbmVUbyh0aGlzLl9w
b2ludC54LCB0aGlzLl9wb2ludC55KTsKIH07CiAKIAogLy8gPT09IFNUQUdFUyA9PT0KIAotZnVu
Y3Rpb24gU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlKGVsZW1lbnQsIG9wdGlvbnMsIGNhbnZh
c09iamVjdCkgeworZnVuY3Rpb24gU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlKGVsZW1lbnQs
IG9wdGlvbnMsIGNhbnZhc09iamVjdCkKK3sKICAgICBTaW1wbGVDYW52YXNTdGFnZS5jYWxsKHRo
aXMsIGVsZW1lbnQsIG9wdGlvbnMsIGNhbnZhc09iamVjdCk7CiAgICAgdGhpcy5jb250ZXh0Lmxp
bmVDYXAgPSBvcHRpb25zWyJsaW5lQ2FwIl0gfHwgImJ1dHQiOwogICAgIHRoaXMuY29udGV4dC5s
aW5lSm9pbiA9IG9wdGlvbnNbImxpbmVKb2luIl0gfHwgImJldmVsIjsKQEAgLTE1Nyw3ICsxNjQs
OCBAQCBmdW5jdGlvbiBDYW52YXNMaW5lU2VnbWVudFN0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCiB9
CiBDYW52YXNMaW5lU2VnbWVudFN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2ltcGxl
Q2FudmFzU3RhZ2UucHJvdG90eXBlKTsKIENhbnZhc0xpbmVTZWdtZW50U3RhZ2UucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gQ2FudmFzTGluZVNlZ21lbnRTdGFnZTsKLUNhbnZhc0xpbmVTZWdtZW50
U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsKK0NhbnZhc0xpbmVTZWdtZW50
U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCit7CiAgICAgdmFyIGNvbnRleHQg
PSB0aGlzLmNvbnRleHQ7CiAgICAgdmFyIHN0YWdlID0gdGhpczsKIApAQCAtMTg3LDcgKzE5NSw4
IEBAIENhbnZhc0xpbmVQYXRoU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2FudmFzTGlu
ZVBhdGhTdGFnZTsKIAogLy8gPT09IEJFTkNITUFSSyA9PT0KIAotZnVuY3Rpb24gQ2FudmFzUGF0
aEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpIHsKK2Z1bmN0aW9u
IENhbnZhc1BhdGhCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQor
ewogICAgIFNpbXBsZUNhbnZhc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCBwcm9ncmVzc0Jhcik7CiB9CiBDYW52YXNQYXRoQmVuY2htYXJrLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoU2ltcGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZSk7CkBAIC0yMDQsNyAr
MjEzLDggQEAgQ2FudmFzUGF0aEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5j
dGlvbihlbGVtZW50KQogICAgIH0KIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUg
PSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpIHsKK3dpbmRvdy5i
ZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHBy
b2dyZXNzQmFyKQorewogICAgIHJldHVybiBuZXcgQ2FudmFzUGF0aEJlbmNobWFyayhzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQyOWUx
ODAuLjNiMjQyY2EgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC01LDYgKzUsMjcgQEAKIAogICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBBZGRyZXNzIGNvbW1lbnRzLgor
CisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1y
dW5uZXIuanM6CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5k
UmVjb3JkUmVzdWx0cyk6IFdoZW4gdGhlIHRlc3RpbmcgaXMgY29tcGxldGUgdGhlIGZyYW1lIG93
bmluZyB0aGUKKyAgICAgICAgc2FtcGxlciBnb2VzIGF3YXksIGFuZCBhIGxhdGVyIGNhbGwgdG8g
Z2V0IHRoZSBKU09OIGRhdGEgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS4gUHJvY2VzcyB0aGUgZGF0
YQorICAgICAgICByaWdodCBoZXJlLCBpbnN0ZWFkLCBhbmQganVzdCByZWZlcmVuY2UgaXQgd2hl
biBkaXNwbGF5aW5nIHRoZSByZXN1bHRzIGluIFJlc3VsdHNEYXNoYm9hcmQucHJvdG90eXBlLl9w
cm9jZXNzRGF0YS4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpz
OgorICAgICAgICAoQXJyYXkucHJvdG90eXBlLmZpbGwuQXJyYXkucHJvdG90eXBlLmZpbGwpOiBB
ZGQgYSBudWxsIGNoZWNrLiBSZW1vdmUgYnJhY2VzIGFyb3VuZCBzaW5nbGUtbGluZSBjbGF1c2Uu
CisgICAgICAgIChBcnJheS5wcm90b3R5cGUuZmluZC5BcnJheS5wcm90b3R5cGUuZmluZCk6IFVw
ZGF0ZSB0aGUgbnVsbCBjaGVjay4KKyAgICAgICAgKFJlc3VsdHNEYXNoYm9hcmQucHJvdG90eXBl
Ll9wcm9jZXNzRGF0YSk6IFVzZSB0aGUgYWxyZWFkeS1wcm9jZXNzZWQgZGF0YS4KKyAgICAgICAg
KiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3M6CisgICAgICAgICgu
ZnJhbWUtY29udGFpbmVyID4gaWZyYW1lKTogUmVtb3ZlIGNhbGMoKS4KKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzOiBPcGVuaW5nIGJy
YWNlcyBvbiBuZXcgbGluZXMuCisKKzIwMTUtMTItMjMgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUu
Y29tPgorCisgICAgICAgIFNwbGl0IGJlbmNobWFyayBpbnRvIHR3byBkaWZmZXJlbnQgcGFnZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjQ1OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIE1vdmUgQXJy
YXkgZnVuY3Rpb25zIHRvIGV4dGVuc2lvbnMuanMgc2luY2UgdGhhdCBpcyBpbmNsdWRlZCBieSB0
aGUgaGFybmVzcy4KICAgICAgICAgQWRkIEVTNiBBcnJheSBwb2x5ZmlsbHMuCiAKLS0gCjIuNS40
IChBcHBsZSBHaXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267881</attachid>
            <date>2015-12-23 17:17:50 -0800</date>
            <delta_ts>2015-12-23 17:26:04 -0800</delta_ts>
            <desc>Patch to commit; harness</desc>
            <filename>0001-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>496268</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBlZWI1MWZkNzM0NmU2NmEzZDE4ZjE0YjhmZjg5ZDhmMzBmOGYyOTBlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBXZWQs
IDIzIERlYyAyMDE1IDE3OjE0OjI5IC0wODAwClN1YmplY3Q6IFtQQVRDSCAxLzJdIFNwbGl0IGJl
bmNobWFyayBpbnRvIHR3byBkaWZmZXJlbnQgcGFnZXMKIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTI0NTgKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQWRk
cmVzcyBjb21tZW50cy4KCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNo
bWFyay1ydW5uZXIuanM6CihCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5kUmVj
b3JkUmVzdWx0cyk6IFdoZW4gdGhlIHRlc3RpbmcgaXMgY29tcGxldGUgdGhlIGZyYW1lIG93bmlu
ZyB0aGUKc2FtcGxlciBnb2VzIGF3YXksIGFuZCBhIGxhdGVyIGNhbGwgdG8gZ2V0IHRoZSBKU09O
IGRhdGEgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS4gUHJvY2VzcyB0aGUgZGF0YQpyaWdodCBoZXJl
LCBpbnN0ZWFkLCBhbmQganVzdCByZWZlcmVuY2UgaXQgd2hlbiBkaXNwbGF5aW5nIHRoZSByZXN1
bHRzIGluIFJlc3VsdHNEYXNoYm9hcmQucHJvdG90eXBlLl9wcm9jZXNzRGF0YS4KKiBBbmltb21l
dGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgooQXJyYXkucHJvdG90eXBlLmZpbGwuQXJyYXku
cHJvdG90eXBlLmZpbGwpOiBBZGQgYSBudWxsIGNoZWNrLiBSZW1vdmUgYnJhY2VzIGFyb3VuZCBz
aW5nbGUtbGluZSBjbGF1c2UuCihBcnJheS5wcm90b3R5cGUuZmluZC5BcnJheS5wcm90b3R5cGUu
ZmluZCk6IFVwZGF0ZSB0aGUgbnVsbCBjaGVjay4KKFJlc3VsdHNEYXNoYm9hcmQucHJvdG90eXBl
Ll9wcm9jZXNzRGF0YSk6IFVzZSB0aGUgYWxyZWFkeS1wcm9jZXNzZWQgZGF0YS4KKiBBbmltb21l
dGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3M6CiguZnJhbWUtY29udGFpbmVyID4g
aWZyYW1lKTogUmVtb3ZlIGNhbGMoKS4KCk1vdmUgQXJyYXkgZnVuY3Rpb25zIHRvIGV4dGVuc2lv
bnMuanMgc2luY2UgdGhhdCBpcyBpbmNsdWRlZCBieSB0aGUgaGFybmVzcy4KQWRkIEVTNiBBcnJh
eSBwb2x5ZmlsbHMuCgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5qczoKKEFycmF5
LnByb3RvdHlwZS5zd2FwKTogTW92ZWQgdG8gZXh0ZW5zaW9ucy5qcy4KKiBBbmltb21ldGVyL3Jl
c291cmNlcy9leHRlbnNpb25zLmpzOgooQXJyYXkucHJvdG90eXBlLnN3YXApOgooQXJyYXkucHJv
dG90eXBlLmZpbGwpOiBBZGRlZC4KKEFycmF5LnByb3RvdHlwZS5maW5kKTogQWRkZWQuCgpBZGp1
c3Qgc3R5bGVzIGZvciBpUGFkLgoKKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9t
ZXRlci5jc3M6CihAbWVkaWEgc2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0aDogNzY4cHgpKTog
QXBwbHkgdG8gaVBhZCBhcyB3ZWxsLgooQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lk
dGg6IDEwMjRweCkpOiBVcGRhdGUgd2lkdGggZm9yIGlQYWRzLgoKQWRqdXN0bWVudCBzdHlsZXMg
Zm9yIGlPUy4KCiogQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbDogRGlmZmVyZW50IGRpdnMgY29u
dGFpbiB0aGUgaWZyYW1lLCBzbyB1c2UgYSBjbGFzcyBpbnN0ZWFkIGFuZAp1cGRhdGUgdGhlIHN0
eWxlIHJ1bGVzLgoqIEFuaW1vbWV0ZXIvaW5kZXguaHRtbDoKKiBBbmltb21ldGVyL3Jlc291cmNl
cy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3M6IFJlbW92ZSBleHRyYW5lb3VzIHJ1bGVzLgoo
QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6IDE4MDBweCkpOiBNb3ZlIHRoaXMg
dXAuCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzOiBBZGQgcnVs
ZXMgdG8gYWNjb21vZGF0ZSBpT1MuCgpHZXQgcmlkIG9mIHByZWZpeGVkIGZsZXggcHJvcGVydGll
cyBmb3Igbm93LgoKKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRl
ci5jc3M6CiogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzOgoKVXBk
YXRlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGhhcm5lc3MuIFJlbW92ZSB0aGUgSlNPTi1wZXItdGVz
dCBidXQga2VlcAp0aGUgSlNPTiBvZiB0aGUgd2hvbGUgdGVzdCBydW4uIFVzZSB0aGUgZnVsbCBw
YWdlIGluIG9yZGVyIHRvIGRpc3BsYXkKdGhlIGdyYXBoLgoKKiBBbmltb21ldGVyL2RldmVsb3Bl
ci5odG1sOiBVcGRhdGUgc2V2ZXJhbCBvZiB0aGUgSlMgZmlsZSBpbmNsdWRlcyB0byBVVEYtOC4g
UmVtb3ZlIGhlYWRlciBhbmQgZm9vdGVyLiBUZXN0IHJlc3VsdHMgc2NyZWVuIGluY2x1ZGVzIHNj
b3JlLAphdmVyYWdlLCBhbmQgd29yc3QgNSUgc3RhdGlzdGljcy4KKiBBbmltb21ldGVyL2luZGV4
Lmh0bWw6IE1ha2Ugc3RydWN0dXJlIHNpbWlsYXIgdG8gZGV2ZWxvcGVyLmh0bWwuCiogQW5pbW9t
ZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzOiBSZW1vdmUgbW9zdCBv
ZiB0aGUKYnV0dG9uIHJ1bGVzIHNpbmNlIHRoZXkgYXJlIHN1cGVyZmx1b3VzLiBNb3ZlIHRoZSBw
cm9ncmVzcyBiYXIgdG8gdGhlCnRvcCwgZml4ZWQuIFVwZGF0ZSB0aGUgcmVzdWx0cyBwYWdlIHJ1
bGVzLgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzOiBS
ZW1vdmUgbW9zdCBvZiB0aGUKYWRkaXRpb25zIHRvIHNlY3Rpb25zTWFuYWdlciBzaW5jZSB0aGV5
IGFyZSBubyBsb25nZXIgbmVlZGVkLgooc2V0U2VjdGlvbkhlYWRlcik6IFVwZGF0ZXMgaGVhZGVy
IG9mIHRoZSBzZWN0aW9uLgood2luZG93LnN1aXRlc01hbmFnZXIuX3VwZGF0ZVN0YXJ0QnV0dG9u
U3RhdGUpOiBVcGRhdGUgc2VsZWN0b3IuCihzaG93UmVzdWx0cyk6IEFkZCBrZXlwcmVzcyBldmVu
dCBmb3Igc2VsZWN0aW5nIGRpZmZlcmVudCBkYXRhIGZvcgpjb3B5L3Bhc3RlLiBVcGRhdGUgaG93
IHRoZSByZXN1bHRzIGFyZSBwb3B1bGF0ZWQuIEluY2x1ZGUgZnVsbCB0ZXN0CkpTT04gaW4gYSB0
ZXh0YXJlYSwgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGEgYnV0dG9uIHByZXNzLgooc2hvd1Rlc3RH
cmFwaCk6CiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL3Rlc3RzLmpzOiBVcGRh
dGUgc3RydWN0dXJlIG9mIEhlYWRlcnMuIERlZmluZSBkaWZmZXJlbnQga2luZHMgb2YgaGVhZGVy
cy4gSGVhZGVycyBjYW4gY29udHJvbCB0aGVpcgp0aXRsZSwgYW5kIHRoZSB0ZXh0IHVzZWQgYXMg
dGhlIGNlbGwgY29udGVudHMsIGluY2x1ZGluZyBjbGFzcyBuYW1lLgoqIEFuaW1vbWV0ZXIvcmVz
b3VyY2VzL2V4dGVuc2lvbnMuanM6CihSZXN1bHRzVGFibGUpOiBVcGRhdGUgdG8gaW5jbHVkZSBh
IGZsYXR0ZW5lZCB2ZXJzaW9uIG9mIHRoZSBoZWFkZXJzLAp1c2VkIHdoaWxlIHBvcHVsYXRpbmcg
dGFibGUgY29udGVudHMuIFJlbW92ZSB1bm5lZWRlZCBoZWxwZXIgZnVuY3Rpb25zCmZvciBjcmVh
dGluZyB0aGUgdGFibGUuIFJlbmFtZSAic2hvdyIgdG8gImFkZCIuCiogQW5pbW9tZXRlci9yZXNv
dXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzOiBVcGRhdGUgcnVsZXMgdG8KYWNjb21tb2RhdGUg
dGhlIG5ldyBzdHJ1Y3R1cmUuCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0
ZXIuanM6Cih3aW5kb3cuc2VjdGlvbnNNYW5hZ2VyLnNldFNlY3Rpb25TY29yZSk6IEhlbHBlciBm
dW5jdGlvbiB0byBzZXQgdGhlCnNjb3JlIGFuZCBtZWFuIGZvciBhIHNlY3Rpb24uCih3aW5kb3cu
c2VjdGlvbnNNYW5hZ2VyLnBvcHVsYXRlVGFibGUpOiBIZWxwZXIgZnVuY3Rpb24gdG8gc2V0IHRo
ZSB0YWJsZS4KKHdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyLnNob3dSZXN1bHRzKTogUmVmYWN0
b3IuCih3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5zZWxlY3RSZXN1bHRzKTogVXBkYXRlIHNl
bGVjdG9ycy4KKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanM6IFNldCBIZWFk
ZXJzLiBEZWJ1ZyBoYXJuZXNzCmV4dGVuZHMgaXQuCgpVcGRhdGUgZGVidWcgcnVubmVyIHRvIGhh
dmUgc2ltaWxhciBuYW1lcyB0byB0aGUgYmFzaWMgcnVubmVyLiBJbmNsdWRlCnRoYXQgcGFnZSdz
IENTUyBhbmQgcmVtb3ZlIGV4dHJhbmVvdXMgQ1NTIHJ1bGVzLgoKR2V0IHJpZCBvZiB0aGUgc3Rh
dGlzdGljcyB0YWJsZSAjcmVjb3JkLgoKKiBBbmltb21ldGVyL2RldmVsb3Blci5odG1sOiBSZW5h
bWUgI2hvbWUgdG8gI2ludHJvLiBSZW5hbWUgLnNwYWNlciB0byBoci4KKiBBbmltb21ldGVyL3Jl
c291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3M6IFNldCB0byBmbGV4Ym94IHdoZW4g
c2VsZWN0ZWQuCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIu
anM6IFJlbW92ZSByZWNvcmRUYWJsZS4KKHdpbmRvdy5zdWl0ZXNNYW5hZ2VyLl91cGRhdGVTdGFy
dEJ1dHRvblN0YXRlKTogVXBkYXRlIHNlbGVjdG9yIHRvICNpbnRyby4KKHNldHVwUnVubmluZ1Nl
Y3Rpb25TdHlsZSk6IERlbGV0ZWQuCgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmlt
b21ldGVyLmNzczoKKCN0ZXN0LWNvbnRhaW5lci5zZWxlY3RlZCk6IENoYW5nZSB0byBmbGV4LWJv
eCBvbmx5IHdoZW4gdmlzaWJsZS4KClJlbW92ZSByZWNvcmRUYWJsZS4KKiBBbmltb21ldGVyL3Jl
c291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczoKKEJlbmNobWFya1J1bm5l
ci5wcm90b3R5cGUuX3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzKToKKiBBbmltb21ldGVyL3Jlc291
cmNlcy9ydW5uZXIvdGVzdHMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanM6CiogQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMu
anM6CiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLWNhbnZhcy1zaGFwZXMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanM6CiogQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRp
Y2xlcy5qczoKKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMv
Ym91bmNpbmctc3ZnLWltYWdlcy5qczoKKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qczoKKiBBbmltb21ldGVyL3Rlc3Rz
L2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzOgoqIEFuaW1vbWV0ZXIvdGVz
dHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qczoKKiBBbmltb21ldGVyL3Rlc3Rz
L21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuanM6CiogQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvbWFpbi5qczoKKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFn
ZS5qczoKKFN0YWdlQmVuY2htYXJrKTogUmVtb3ZlIF9yZWNvcmRUYWJsZS4KKiBBbmltb21ldGVy
L3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRocy5qczoKKiBBbmltb21l
dGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qczoKKiBBbmltb21ldGVy
L3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanM6CiogQW5pbW9tZXRl
ci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzOgoqIEFuaW1vbWV0ZXIv
dGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qczoKKiBBbmltb21ldGVyL3Rl
c3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanM6CgoqIEFuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzOgood2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24p
OiBGaXggc2VsZWN0b3IsIHNpbmNlIHJlc3VsdHMtdGFibGUgaXMgdXNlZAppbiBtdWx0aXBsZSBw
bGFjZXMsIHNvIGl0IGNhbm5vdCBiZSBhbiBpZC4KCk1ha2UgaXQgcG9zc2libGUgdG8gc2VsZWN0
IHRoZSBzY29yZXMsIG9yIHRoZSB3aG9sZSB0YWJsZSBkYXRhLApieSBjeWNsaW5nIHRocm91Z2gg
ZGlmZmVyZW50IHNlbGVjdGlvbnMgdGhyb3VnaCBrZXkgcHJlc3Mgb2YgJ3MnLgoKKiBBbmltb21l
dGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5qczoKKHdpbmRvdy5iZW5jaG1hcmtDb250
cm9sbGVyLnNob3dSZXN1bHRzKTogQXR0YWNoIGEga2V5cHJlc3MgaGFuZGxlcgppZiBpdCBoYXNu
J3QgYmVlbiBhZGRlZCBhbHJlYWR5Lgood2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIuc2VsZWN0
UmVzdWx0cyk6CiogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzOiBDeWNsZSB0
aHJvdWdoIGRpZmZlcmVudApyYW5nZXMuCgpGaXggYSBmZXcgZmx5LWJ5IGVycm9ycy4KCiogQW5p
bW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanM6CihCZW5j
aG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUucHJlcGFyZUN1cnJlbnRUZXN0KTogVXBkYXRlIHRo
ZSBmcmFtZSByZWxhdGl2ZSBwYXRoCnNpbmNlIHRoZSBmaWxlcyBhcmUgbm93IGluIHRoZSB0b3Ag
ZGlyZWN0b3J5IGluc3RlYWQgb2YgaW5zaWRlIHJ1bm5lci8uCihCZW5jaG1hcmtSdW5uZXIucHJv
dG90eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyk6IEluY29ycmVjdCByZWZlcmVuY2UgdG8g
ZnVuY3Rpb24uCihCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnN0ZXApOiBNZW1iZXIgdmFyaWFi
bGUgaXMgbmV2ZXIgdXNlZC4KCkEgbGl0dGxlIHN0eWxpc3RpYyBjbGVhbnVwLgoKKiBBbmltb21l
dGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczoKKiBBbmltb21l
dGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgood2luZG93LkRvY3VtZW50RXh0ZW5zaW9uLmNy
ZWF0ZUVsZW1lbnQpOgoqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanM6CihCZW5j
aG1hcmsucHJvdG90eXBlLnJlY29yZCk6CiogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3Rh
Z2UuanM6CihTdGFnZUJlbmNobWFyay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMpOiBSZXZlcnNlIHBy
b2dyZXNzIGFuZCBtZXNzYWdlLgpUaGUgbWVzc2FnZSBhcHBlYXJzIGxlc3MgZnJlcXVlbnRseSB0
aGFuIHRoZSBwcm9ncmVzcy4KKiBBbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2lt
cGxlLWNhbnZhcy5qczoKKFNpbXBsZUNhbnZhc0JlbmNobWFyayk6IFJlbW92ZSB1bnVzZWQgb3B0
aW9ucy4KCkFkZCBuZXdlciB2ZXJzaW9uIG9mIGhhcm5lc3MgaW4gYSBuZXcgcGFnZS4gQ29uc29s
aWRhdGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvCnBhZ2VzLgoKKiBBbmltb21ldGVyL2Rl
dmVsb3Blci5odG1sOiBJbmNsdWRlIHJ1bm5lci9hbmltb21ldGVyLmpzLiBSZW5hbWUgdGhlIEpT
IGZ1bmN0aW9uCnRvIHJ1biB0aGUgYmVuY2htYXJrIHRvIHN0YXJ0QmVuY2htYXJrKCkgaW5zdGVh
ZCBvZiBzdGFydFRlc3QoKS4gUmVuYW1lICNydW5uaW5nIHRvCiogQW5pbW9tZXRlci9pbmRleC5o
dG1sOiBBZGRlZC4gU2ltaWxhcmx5IGNhbGxzIHN0YXJ0QmVuY2htYXJrKCkgYW5kIGhhcyAjdGVz
dC1jb250YWluZXIuCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0
ZXIuY3NzOiBNYWtlIHRoZSBjYW52YXMgMjoxICgxMjAwcHggeCA4MDBweCkKaW5zdGVhZCBvZiA0
OjMuCgpTcGxpdCBvdXQgYmVuY2htYXJrUnVubmVyQ2xpZW50IGFuZCBiZW5jaG1hcmtDb250cm9s
bGVyLgoKKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qczog
TW92ZSBuZWVkZWQgZnVuY3Rpb25zIG91dCBvZgpiZW5jaG1hcmtSdW5uZXJDbGllbnQsIGFuZCBs
ZWF2ZSB0aGUgcmVzdCBoZXJlIHRvIGV4dGVuZCB0aGF0IG9iamVjdC4gR2V0IHJpZCBvZiBfcmVz
dWx0c1RhYmxlCmFuZCBtb3ZlIHBvcHVsYXRpbmcgdGhlIHJlc3VsdHMgdGFibGUgaW50byBiZW5j
aG1hcmtDb250cm9sbGVyLiBSZW5hbWUgX3Jlc3VsdHNEYXNoYm9hcmQKdG8gcmVzdWx0cyBhbmQg
bWFrZSBpdCBhY2Nlc3NpYmxlIGZvciBvdGhlciBvYmplY3RzIHRvIHVzZS4KKHdpbGxBZGRUZXN0
RnJhbWUpOiBUaGlzIGlzIHVubmVjZXNzYXJ5LiBSZW1vdmUuCgood2luZG93LnNlY3Rpb25zTWFu
YWdlci5zaG93U2NvcmUpOiBHcmFiIGl0IGZyb20gdGhlIHJlc3VsdHMgb2JqZWN0IGluc3RlYWQg
b2YKYmVuY2htYXJrUnVubmVyQ2xpZW50Lgood2luZG93LnNlY3Rpb25zTWFuYWdlci5zaG93U2Vj
dGlvbik6IERlbGV0ZWQuIE1vdmVkIHRvIHJ1bm5lci9hbmltb21ldGVyLmpzLgoKKHdpbmRvdy5i
ZW5jaG1hcmtDb250cm9sbGVyLl9ydW5CZW5jaG1hcmspOiBEZWxldGVkLiBNb3N0bHkgbW92ZWQg
aW50byBfc3RhcnRCZW5jaG1hcmsuCih3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5zdGFydEJl
bmNobWFyayk6IFJlZmFjdG9yIHRvIGNhbGwgX3N0YXJ0QmVuY2htYXJrLgood2luZG93LmJlbmNo
bWFya0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMpOiBJbmNsdWRlIG1vc3Qgb2YgYmVuY2htYXJrUnVu
bmVyQ2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24oKQpoZXJlLgoKKiBBbmltb21ldGVyL3Jl
c291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczoKKEJlbmNobWFya1J1bm5l
ci5wcm90b3R5cGUuX2FwcGVuZEZyYW1lKTogUmVtb3ZlIHVubmVlZGVkIGNhbGwgdG8gd2lsbEFk
ZFRlc3RGcmFtZS4KKiBBbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgooUmVzdWx0
c0Rhc2hib2FyZCk6IENoYW5nZSB0aGUgY2xhc3MgdG8gcHJvY2VzcyB0aGUgc2FtcGxlciBkYXRh
IG9uLWRlbWFuZCBhbmQgaG9sZCBvbnRvIHRoYXQgZGF0YQpmb3IgbGF0ZXIgcmVmZXJlbmNpbmcu
CihSZXN1bHRzRGFzaGJvYXJkLnByb3RvdHlwZS50b0pTT04pOiBEZWxldGVkLgooUmVzdWx0c0Rh
c2hib2FyZC5wcm90b3R5cGUuX3Byb2Nlc3NEYXRhKTogUmVuYW1lIHRvSlNPTiB0byBfcHJvY2Vz
c0RhdGEgc2luY2UgaXQncyBub3QgcmVhbGx5Cm91dHB1dHRpbmcgSlNPTi4gU3RvcmUgdGhlIHBy
b2Nlc3NlZCBkYXRhIGludG8gYSBtZW1iZXIgdmFyaWFibGUgdGhhdCBjYW4gYmUgcmVmZXJlbmNl
ZCBsYXRlci4KKFJlc3VsdHNEYXNoYm9hcmQucHJvdG90eXBlLmdldCBkYXRhKTogUHJvY2VzcyB0
aGUgZGF0YSBpZiBpdCBoYXNuJ3QgYWxyZWFkeS4KKFJlc3VsdHNEYXNoYm9hcmQucHJvdG90eXBl
LmdldCBzY29yZSk6IFByb2Nlc3MgdGhlIGRhdGEgaWYgaXQgaGFzbid0IGFscmVhZHksIHRoZW4g
cmV0dXJuIHRoZQphZ2dyZWdhdGUgc2NvcmUuCihSZXN1bHRzVGFibGUucHJvdG90eXBlLl9zaG93
SGVhZGVyKTogV2hlbiBvdXRwdXR0aW5nIHRoZSByZXN1bHRzIHRvIGEgdGFibGUsIGRvbid0IGZv
cmNlIHRoZQpuZWVkIGZvciBhbiBlbXB0eSBjaGlsZHJlbiBhcnJheS4gVGhpcyB3YXMgdG8gYWxs
b3cgZm9yIGEgaGVhZGVyIHJvdyBpbiB0aGUgdGFibGUgdGhhdCBzcGFubmVkCm11bHRpcGxlIGNv
bHVtbnMuIEluIHRoZSBzaW1wbGVyIGhhcm5lc3MsIHRoaXMgaXMgbm90IG5lZWRlZC4KKFJlc3Vs
dHNUYWJsZS5wcm90b3R5cGUuX3Nob3dFbXB0eUNlbGxzKToKKFJlc3VsdHNUYWJsZS5wcm90b3R5
cGUuX3Nob3dUZXN0KTogVGhpcyBoYXJkY29kZWQgdGhlIGNvbHVtbnMuIEF0IGxlYXN0IGZvciB0
aGUgbmFtZSBhbmQgc2NvcmUsCndoaWNoIGlzIHRoZSBiYXJlIG1pbmltdW0gbmVlZGVkIGZvciB0
aGUgc2ltcGxlciBoYXJuZXNzLCBrZXkgb2ZmIG9mIHRoZSBoZWFkZXIgbmFtZSBwcm92aWRlZC4K
KiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3M6IEFkZGVkLiBVc2Ug
YSBzaW1pbGFyIDI6MSByYXRpby4gVGhlIHNjb3JlIHRhYmxlcyBhcmUKc3BsaXQgaW50byB0aGUg
ZGF0YSBhbmQgdGhlIGhlYWRlcnMsIGFuZCBhcmUgYWxzbyBkaXNwbGF5ZWQgUlRMIHNvIHRoYXQg
YSBsYXRlciBwYXRjaCBhbGxvd3MgYQp1c2VyIHRvIGNvcHktcGFzdGUgdGhlIGRhdGEgZWFzaWx5
LgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpzOiBBZGRlZC4gVXNl
IGEgc2ltcGxlciB2ZXJzaW9uIG9mIGJlbmNobWFya1J1bm5lckNsaWVudC4KVGhlIGRlYnVnIGhh
cm5lc3Mgd2lsbCBleHRlbmQgdGhlc2UgY2xhc3Nlcy4KKHdpbmRvdy5iZW5jaG1hcmtDb250cm9s
bGVyLl9zdGFydEJlbmNobWFyayk6IFVzZWQgYnkgYm90aCBoYXJuZXNzZXMuCih3aW5kb3cuYmVu
Y2htYXJrQ29udHJvbGxlci5zdGFydEJlbmNobWFyayk6IFNldCBoYXJkLWNvZGVkIG9wdGlvbnMu
Cih3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVzdWx0cyk6IEluY2x1ZGVzIG1vc3Qg
b2YgYmVuY2htYXJrUnVubmVyQ2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24oKQpoZXJlLgoK
R2V0IHJpZCBvZiB1dGlsaXRpZXMuanMuIE1vdmUgaXQgYWxsIGludG8gZXh0ZW5zaW9ucy5qcy4K
CiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qczoKKiBBbmltb21ldGVyL3Rlc3Rz
L3Jlc291cmNlcy91dGlsaXRpZXMuanM6IFJlbW92ZWQuCgoqIEFuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbDogUmVtb3ZlIHNjcmlw
dCBsaW5rLgoqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNh
bnZhcy1zaGFwZXMuaHRtbDogRGl0dG8uCiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sOiBEaXR0by4KKiBBbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw6IERpdHRvLgoqIEFu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRt
bDogRGl0dG8uCiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
c3ZnLXNoYXBlcy5odG1sOiBEaXR0by4KKiBBbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZh
cy1lbGVjdHJvbnMuaHRtbDogRGl0dG8uCiogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52
YXMtc3RhcnMuaHRtbDogRGl0dG8uCiogQW5pbW9tZXRlci90ZXN0cy9taXNjL2NvbXBvc2l0aW5n
LXRyYW5zZm9ybXMuaHRtbDogRGl0dG8uCiogQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvc2ltcGxl
LWNhbnZhcy1wYXRocy5odG1sOiBEaXR0by4KKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Rl
bXBsYXRlLWNhbnZhcy5odG1sOiBEaXR0by4KKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Rl
bXBsYXRlLWNzcy5odG1sOiBEaXR0by4KKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBs
YXRlLXN2Zy5odG1sOiBEaXR0by4KKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4
dC5odG1sOiBEaXR0by4KClNwbGl0IHRlc3RzLmpzIGludG8gdHdvLiBBZGQgYSBuZXcgc3VpdGUg
dG8gcnVubmVyL3Rlc3RzLmpzLgoKKiBBbmltb21ldGVyL2RldmVsb3Blci5odG1sOiBVcGRhdGUg
dGhlIHNjcmlwdCBvcmRlci4gU2NyaXB0cyBmcm9tCmRlYnVnLXJ1bm5lci8gd2lsbCBhbHdheXMg
YnVpbGQgb24gdGhvc2UgZnJvbSBydW5uZXIvLCBhbmQgaGF2ZSB0aGUKc2FtZSBuYW1lLgoqIEFu
aW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qczogTW92ZSAiY29tcGxleCBl
eGFtcGxlcyIKc3VpdGUgaW50byAibWlzY2VsbGFuZW91cyB0ZXN0cyIuCihTdWl0ZSk6IERlbGV0
ZWQuCihTdWl0ZS5wcm90b3R5cGUucHJlcGFyZSk6IERlbGV0ZWQuCihTdWl0ZS5wcm90b3R5cGUu
cnVuKTogRGVsZXRlZC4KKHN1aXRlRnJvbU5hbWUpOiBEZWxldGVkLgoqIEFuaW1vbWV0ZXIvcmVz
b3VyY2VzL3J1bm5lci90ZXN0cy5qczogQWRkZWQuIFRha2UgZGVmaW5pdGlvbnMgYW5kCmZ1bmN0
aW9ucyBuZWVkZWQgYnkgdGhlIHRlc3QgaGFybmVzcy4gTGVhdmUgdGhlIHRlc3Qgc3VpdGVzIGJl
aGluZC4KKFN1aXRlKTogTW92ZWQgZnJvbSBkZWJ1ZyBzY3JpcHQuCihTdWl0ZS5wcm90b3R5cGUu
cHJlcGFyZSk6IERpdHRvLgooU3VpdGUucHJvdG90eXBlLnJ1bik6IERpdHRvLgooc3VpdGVGcm9t
TmFtZSk6IERpdHRvLgoodGVzdEZyb21OYW1lKTogRGl0dG8uCgpNb3ZlIGJlbmNobWFyayByZXNv
dXJjZXMgb3V0IGludG8gcmVzb3VyY2VzL2RlYnVnLXJ1bm5lciwgYW5kIHVwZGF0ZSBVUkxzLgoK
KiBBbmltb21ldGVyL2RldmVsb3Blci5odG1sOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwuCiogQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MuCiogQW5pbW9t
ZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanM6IFJlbmFtZWQgZnJvbSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpz
LgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpz
OiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJj
ZXMvYmVuY2htYXJrLXJ1bm5lci5qcy4KKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5u
ZXIvZDMubWluLmpzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1
bm5lci9yZXNvdXJjZXMvZDMubWluLmpzLgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1
bm5lci9ncmFwaC5qczogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
dW5uZXIvcmVzb3VyY2VzL2dyYXBoLmpzLgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1
bm5lci90ZXN0cy5qczogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
dW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzLgotLS0KIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9kZXZlbG9wZXIuaHRtbCAgICAgICAgIHwgIDk5ICsrKysKIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9pbmRleC5odG1sICAgICAgICAgICAgIHwgIDM4ICsrCiBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5qcyB8ICAgOCAtCiAuLi4vcmVzb3VyY2Vz
L2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzcyAgICAgICAgICB8IDM5MSArKysrKysrKysrKysr
KwogLi4uL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qcyAgICAgICAgICAgfCAz
NjIgKysrKysrKysrKysrKwogLi4uL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1
bm5lci5qcyAgICAgfCAxODQgKysrKysrKwogLi4uL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVn
LXJ1bm5lci9kMy5taW4uanMgICAgfCAgIDUgKwogLi4uL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2Rl
YnVnLXJ1bm5lci9ncmFwaC5qcyAgICAgfCAxNDIgKysrKysKIC4uLi9Bbmltb21ldGVyL3Jlc291
cmNlcy9kZWJ1Zy1ydW5uZXIvdGVzdHMuanMgICAgIHwgMjUzICsrKysrKysrKwogLi4uL0FuaW1v
bWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMgICAgICAgICAgICAgfCAzNjcgKysrKysrKy0t
LS0tLQogLi4uL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcyAgICAg
fCAyNDIgKysrKysrKysrCiAuLi4vQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0
ZXIuanMgICAgICB8IDEyMyArKysrKwogLi4uL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci90
ZXN0cy5qcyAgICAgICAgICAgfCAgMzYgKysKIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
dW5uZXIvYW5pbW9tZXRlci5odG1sIHwgMTI1IC0tLS0tCiAuLi4vQW5pbW9tZXRlci9ydW5uZXIv
cmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzICAgICB8IDU5OSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IC4uLi9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcyAgICAgIHwgNDk3
IC0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVy
LmpzICAgICAgICAgICB8IDE4OSAtLS0tLS0tCiAuLi4vQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL2QzLm1pbi5qcyAgICAgICAgICB8ICAgNSAtCiAuLi4vQW5pbW9tZXRlci9ydW5uZXIvcmVz
b3VyY2VzL2dyYXBoLmpzICAgICAgICAgICB8IDE0MiAtLS0tLQogLi4uL0FuaW1vbWV0ZXIvcnVu
bmVyL3Jlc291cmNlcy90ZXN0cy5qcyAgICAgICAgICAgfCAyNTYgLS0tLS0tLS0tCiAuLi4vYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbCB8ICAgMSAtCiAuLi4v
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbCB8ICAgMSAtCiAu
Li4vYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbCAgICB8ICAgMSAt
CiAuLi4vYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbCAgICB8ICAg
MSAtCiAuLi4vYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbCAgICB8
ICAgMSAtCiAuLi4vYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbCAg
ICB8ICAgMSAtCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMgICAgICAg
ICAgICB8ICAgOCArLQogLi4uL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpz
ICAgICAgICAgfCAgIDQgKy0KIC4uLi9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5q
cyAgICAgICAgICAgIHwgICA4ICstCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMu
anMgICAgICAgICAgICAgICB8ICAgOCArLQogLi4uL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hh
cGVzLmpzICAgICAgICAgICAgICAgfCAgIDggKy0KIC4uLi9yZXNvdXJjZXMvYm91bmNpbmctcGFy
dGljbGVzLmpzICAgICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5n
LXN2Zy1pbWFnZXMuanMgICAgICAgICAgICAgICB8ICAgOCArLQogLi4uL3Jlc291cmNlcy9ib3Vu
Y2luZy1zdmctc2hhcGVzLmpzICAgICAgICAgICAgICAgfCAgIDggKy0KIC4uLi90ZXN0cy9leGFt
cGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWwgICAgICAgICAgIHwgICAxIC0KIC4uLi9Bbmltb21l
dGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sICAgIHwgICAxIC0KIC4uLi90ZXN0
cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcyAgIHwgICA4ICstCiAuLi4v
dGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcyAgICAgICB8ICAgOCArLQog
Li4uL3Rlc3RzL21pc2MvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5odG1sICAgICAgICAgfCAgIDEg
LQogLi4uL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuanMgfCAg
IDggKy0KIC4uLi9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzICAgICAgICAgICAg
IHwgICA2ICstCiAuLi4vQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMgICAgICAg
ICAgICB8ICAxMCArLQogLi4uL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5q
cyAgICAgICAgfCAgNDMgLS0KIC4uLi90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52
YXMtcGF0aHMuanMgIHwgICA4ICstCiAuLi4vdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUt
Y2FudmFzLmpzICAgICAgICB8ICAgNyArLQogLi4uL3Rlc3RzL3NpbXBsZS9zaW1wbGUtY2FudmFz
LXBhdGhzLmh0bWwgICAgICAgICAgfCAgIDEgLQogLi4uL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNl
cy90ZW1wbGF0ZS1jYW52YXMuanMgICAgfCAgIDggKy0KIC4uLi90ZXN0cy90ZW1wbGF0ZS9yZXNv
dXJjZXMvdGVtcGxhdGUtY3NzLmpzICAgICAgIHwgICA4ICstCiAuLi4vdGVzdHMvdGVtcGxhdGUv
cmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qcyAgICAgICB8ICAgOCArLQogLi4uL0FuaW1vbWV0ZXIv
dGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWwgfCAgIDEgLQogLi4uL0FuaW1vbWV0
ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY3NzLmh0bWwgICAgfCAgIDEgLQogLi4uL0FuaW1v
bWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwgICAgfCAgIDEgLQogLi4uL0Fu
aW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWwgICAgICAgfCAgIDEgLQogLi4u
L3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMgICAgICAgICAgfCAgIDggKy0K
IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjYy
ICsrKysrKysrKwogNTUgZmlsZXMgY2hhbmdlZCwgMjQwNyBpbnNlcnRpb25zKCspLCAyMTE4IGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9kZXZlbG9wZXIuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9pbmRleC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3MKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1
bm5lci9hbmltb21ldGVyLmpzCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcwogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVi
dWctcnVubmVyL2QzLm1pbi5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2dyYXBoLmpzCiBjcmVhdGUgbW9kZSAx
MDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIv
dGVzdHMuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcwogY3JlYXRlIG1vZGUgMTAwNjQ0IFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuanMKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1
bm5lci90ZXN0cy5qcwogZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9ydW5uZXIvYW5pbW9tZXRlci5odG1sCiBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNl
cy9hbmltb21ldGVyLmpzCiBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwogZGVsZXRlIG1vZGUg
MTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2QzLm1p
bi5qcwogZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5u
ZXIvcmVzb3VyY2VzL2dyYXBoLmpzCiBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMKIGRlbGV0ZSBtb2RlIDEwMDY0
NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5q
cwoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRt
bCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmRlMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2RldmVsb3Blci5odG1sCkBAIC0wLDAgKzEsOTkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5j
c3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2RlYnVnLXJ1
bm5lci9hbmltb21ldGVyLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdHJpbmdz
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NhbXBsZXIuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyIgY2hhcnNl
dD0idXRmLTgiPjwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ydW5uZXIv
dGVzdHMuanMiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qcyIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanMi
Pjwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVu
Y2htYXJrLXJ1bm5lci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9k
ZWJ1Zy1ydW5uZXIvZDMubWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2RlYnVnLXJ1bm5lci9ncmFwaC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
ICA8bWFpbj4KKyAgICAgICAgPGhyPgorICAgICAgICA8c2VjdGlvbiBpZD0iaW50cm8iIGNsYXNz
PSJzZWxlY3RlZCI+CisgICAgICAgICAgICA8aDE+QW5pbW9tZXRlcjwvaDE+CisgICAgICAgICAg
ICA8ZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgaWQ9InN1aXRlcyI+CisgICAgICAgICAgICAg
ICAgICAgIDxoMj5TdWl0ZXM6PC9oMj4KKyAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0
cmVlIj48L3VsPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYg
aWQ9Im9wdGlvbnMiPgorICAgICAgICAgICAgICAgICAgICA8aDI+T3B0aW9uczo8L2gyPgorICAg
ICAgICAgICAgICAgICAgICA8Zm9ybSBuYW1lPSJiZW5jaG1hcmstb3B0aW9ucyI+CisgICAgICAg
ICAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAg
ICAgICAgICAgICAgPGxhYmVsPlRlc3QgbGVuZ3RoOiA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0i
dGVzdC1pbnRlcnZhbCIgdmFsdWU9IjEwIj4gc2Vjb25kcyBlYWNoPC9sYWJlbD4KKyAgICAgICAg
ICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAg
ICAgICAgICAgICAgPGgzPkRpc3BsYXk6PC9oMz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1
bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1lPSJk
aXNwbGF5IiB0eXBlPSJyYWRpbyIgdmFsdWU9Im1pbmltYWwiIGNoZWNrZWQ+IE1pbmltYWw8L2xh
YmVsPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQg
bmFtZT0iZGlzcGxheSIgdHlwZT0icmFkaW8iIHZhbHVlPSJwcm9ncmVzcy1iYXIiIGNoZWNrZWQ+
IFByb2dyZXNzIGJhcjwvbGFiZWw+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+
CisgICAgICAgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgICAgICAgICAgIDxsaT4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIDxoMz5BZGp1c3RpbmcgdGhlIHRlc3QgY29tcGxleGl0eTo8
L2gzPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxsaT48bGFiZWw+PGlucHV0IG5hbWU9ImFkanVzdG1lbnQiIHR5cGU9InJhZGlvIiB2
YWx1ZT0iZml4ZWQiPiBLZWVwIGNvbnN0YW50PC9sYWJlbD48L2xpPgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0IG5hbWU9ImFkanVzdG1lbnQiIHR5cGU9InJh
ZGlvIiB2YWx1ZT0iZml4ZWQtYWZ0ZXItd2FybXVwIj4gS2VlcCBjb25zdGFudCBhZnRlciB3YXJt
dXAgdG8gdGFyZ2V0IEZQUzwvbGFiZWw+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1lPSJhZGp1c3RtZW50IiB0eXBlPSJyYWRpbyIgdmFsdWU9
ImFkYXB0aXZlIiBjaGVja2VkPiBNYWludGFpbiB0YXJnZXQgRlBTPC9sYWJlbD48L2xpPgorICAg
ICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAg
ICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlRh
cmdldCBmcmFtZSByYXRlOiA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0iZnJhbWUtcmF0ZSIgdmFs
dWU9IjUwIj4gRlBTPC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAg
ICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCB0
eXBlPSJjaGVja2JveCIgaWQ9ImVzdGltYXRlZC1mcmFtZS1yYXRlIiBjaGVja2VkPiBGaWx0ZXIg
ZnJhbWUgcmF0ZSBjYWxjdWxhdGlvbjwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAgIDwvbGk+
CisgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4K
KyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAg
PGJ1dHRvbiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0QmVuY2htYXJrKCkiPlN0
YXJ0IFRlc3Q8L2J1dHRvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8c2VjdGlvbiBp
ZD0idGVzdC1jb250YWluZXIiPgorICAgICAgICAgICAgPGRpdiBpZD0icnVubmluZy10ZXN0IiBj
bGFzcz0iZnJhbWUtY29udGFpbmVyIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgaWQ9InByb2dy
ZXNzIj4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcy1jb21wbGV0ZWQiPjwvZGl2
PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPHNlY3Rp
b24gaWQ9InJlc3VsdHMiPgorICAgICAgICAgICAgPGgxPkFuaW1vbWV0ZXIgc2NvcmU8L2gxPgor
ICAgICAgICAgICAgPHAgY2xhc3M9InNjb3JlIj48L3A+CisgICAgICAgICAgICA8ZGl2IGlkPSJy
ZXN1bHRzLXRhYmxlcyI+CisgICAgICAgICAgICAgICAgPGRpdj4KKyAgICAgICAgICAgICAgICAg
ICAgPHRhYmxlIGlkPSJyZXN1bHRzLXNjb3JlIj48L3RhYmxlPgorICAgICAgICAgICAgICAgICAg
ICA8dGFibGUgaWQ9InJlc3VsdHMtZGF0YSI+PC90YWJsZT4KKyAgICAgICAgICAgICAgICA8L2Rp
dj4KKyAgICAgICAgICAgICAgICA8dGFibGUgaWQ9InJlc3VsdHMtaGVhZGVyIj48L3RhYmxlPgor
ICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJyZXN1bHRzLWpzb24iPgor
ICAgICAgICAgICAgICAgIEpTT046CisgICAgICAgICAgICAgICAgPHRleHRhcmVhIHJvd3M9MSBv
bmNsaWNrPSJ0aGlzLmZvY3VzKCk7dGhpcy5zZWxlY3QoKSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4K
KyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJiZW5jaG1h
cmtDb250cm9sbGVyLnN0YXJ0QmVuY2htYXJrKCkiPlRlc3QgQWdhaW48L2J1dHRvbj4KKyAgICAg
ICAgICAgIDxwPidzJzogU2VsZWN0IGRpZmZlcmVudCBkYXRhIGZvciBjb3B5L3Bhc3RlPC9wPgor
ICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxzZWN0aW9uIGlkPSJ0ZXN0LWdyYXBoIj4KKyAg
ICAgICAgICAgIDxoZWFkZXI+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJiZW5j
aG1hcmtDb250cm9sbGVyLnNob3dSZXN1bHRzKCkiPiZsdDsgUmVzdWx0czwvYnV0dG9uPgorICAg
ICAgICAgICAgICAgIDxoMT5HcmFwaDo8L2gxPgorICAgICAgICAgICAgPC9oZWFkZXI+CisgICAg
ICAgICAgICA8cCBjbGFzcz0ic2NvcmUiPjwvcD4KKyAgICAgICAgICAgIDxwIGNsYXNzPSJtZWFu
Ij48L3A+CisgICAgICAgICAgICA8ZGl2IGlkPSJ0ZXN0LWdyYXBoLWRhdGEiPjwvZGl2PgorICAg
ICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxocj4KKyAgICA8L21haW4+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvaW5kZXguaHRtbCBi
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjBjMzAxZTMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvaW5kZXguaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIHVzZXItc2Nh
bGFibGU9bm8iPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3J1
bm5lci9hbmltb21ldGVyLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdHJpbmdz
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NhbXBsZXIuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyIgY2hhcnNl
dD0idXRmLTgiPjwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ydW5uZXIv
dGVzdHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcnVubmVyL2Fu
aW1vbWV0ZXIuanMiPjwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWJ1
Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgICA8bWFpbj4KKyAgICAgICAgPGhyPgorICAgICAgICA8c2VjdGlvbiBpZD0iaW50cm8iIGNs
YXNzPSJzZWxlY3RlZCI+CisgICAgICAgICAgICA8aDE+QW5pbW9tZXRlcjwvaDE+CisgICAgICAg
ICAgICA8cD5Bbmltb21ldGVyIGlzIGEgZ3JhcGhpY3MgYmVuY2htYXJrIHRoYXQgbWVhc3VyZXMg
YSBicm93c2Vy4oCZcyBjYXBhYmlsaXR5IHRvIGFuaW1hdGUgY29tcGxleCBzY2VuZXMgYXQgYSB0
YXJnZXQgZnJhbWUgcmF0ZS48L3A+CisgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImJlbmNo
bWFya0NvbnRyb2xsZXIuc3RhcnRCZW5jaG1hcmsoKSI+UnVuIGJlbmNobWFyazwvYnV0dG9uPgor
ICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxzZWN0aW9uIGlkPSJ0ZXN0LWNvbnRhaW5lciIg
Y2xhc3M9ImZyYW1lLWNvbnRhaW5lciI+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPHNl
Y3Rpb24gaWQ9InJlc3VsdHMiPgorICAgICAgICAgICAgPGgxPkFuaW1vbWV0ZXIgc2NvcmU8L2gx
PgorICAgICAgICAgICAgPHAgY2xhc3M9InNjb3JlIj48L3A+CisgICAgICAgICAgICA8ZGl2IGlk
PSJyZXN1bHRzLXRhYmxlcyI+CisgICAgICAgICAgICAgICAgPHRhYmxlIGlkPSJyZXN1bHRzLXNj
b3JlIj48L3RhYmxlPgorICAgICAgICAgICAgICAgIDx0YWJsZSBpZD0icmVzdWx0cy1oZWFkZXIi
PjwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxidXR0b24gb25jbGlj
az0iYmVuY2htYXJrQ29udHJvbGxlci5zdGFydEJlbmNobWFyaygpIj5UZXN0IEFnYWluPC9idXR0
b24+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPGhyPgorICAgIDwvbWFpbj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvYWxnb3JpdGhtLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNl
cy9hbGdvcml0aG0uanMKaW5kZXggM2QzOTcxZi4uMGVmMjFhOSAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9hbGdvcml0aG0uanMKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9hbGdvcml0aG0uanMKQEAgLTEsMTEgKzEs
MyBAQAotQXJyYXkucHJvdG90eXBlLnN3YXAgPSBmdW5jdGlvbihpLCBqKQotewotICAgIHZhciB0
ID0gdGhpc1tpXTsKLSAgICB0aGlzW2ldID0gdGhpc1tqXTsKLSAgICB0aGlzW2pdID0gdDsKLSAg
ICByZXR1cm4gdGhpczsKLX0KLQogZnVuY3Rpb24gSGVhcChtYXhTaXplLCBjb21wYXJlKQogewog
ICAgIHRoaXMuX21heFNpemUgPSBtYXhTaXplOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3MgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVy
LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGY4MmJlCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1y
dW5uZXIvYW5pbW9tZXRlci5jc3MKQEAgLTAsMCArMSwzOTEgQEAKK2JvZHkgeworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYig5NiwgOTYsIDk2KTsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAy
MzUpOworfQorCitoMSB7CisgICAgbWFyZ2luOiA1dmggMDsKK30KKworYnV0dG9uIHsKKyAgICBi
b3JkZXI6IDJweCBzb2xpZCByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgY29sb3I6IHJnYigyMzUs
IDIzNSwgMjM1KTsKK30KKworYnV0dG9uOmRpc2FibGVkIHsKKyAgICBib3JkZXItY29sb3I6IHJn
YmEoMjM1LCAyMzUsIDIzNSwgLjUpOworICAgIGNvbG9yOiByZ2JhKDIzNSwgMjM1LCAyMzUsIC41
KTsKK30KKworYnV0dG9uOmhvdmVyIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwg
MjU1LCAyNTUsIC4xKTsKKyAgICBjdXJzb3I6IHBvaW50ZXI7Cit9CisKK2J1dHRvbjphY3RpdmUg
eworICAgIGNvbG9yOiBpbmhlcml0OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAy
NTUsIDI1NSwgLjIpOworfQorCitAbWVkaWEgc2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0aDog
MTgwMHB4KSB7CisgICAgc2VjdGlvbiB7CisgICAgICAgIHdpZHRoOiAxNjAwcHg7CisgICAgICAg
IGhlaWdodDogODAwcHg7CisgICAgfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJlZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy50cmVlIHsK
KyAgICBwYWRkaW5nOiAwOworICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKK30KKworLnRyZWUg
LmV4cGFuZC1idXR0b24geworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBjbGlwOiByZWN0
KDAsIDAsIDAsIDApOworfQorCisudHJlZSAuZXhwYW5kLWJ1dHRvbiB+IHVsIHsKKyAgICBkaXNw
bGF5OiBub25lOworfQorCisudHJlZSAuZXhwYW5kLWJ1dHRvbjpjaGVja2VkIH4gdWwgeworICAg
IGRpc3BsYXk6IGJsb2NrOworfQorCisudHJlZSB1bCB7CisgICAgbGlzdC1zdHlsZS10eXBlOm5v
bmU7Cit9CisKKy50cmVlIGxpIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgcGFkZGlu
ZzogMCAwIDFlbSAxZW07Cit9CisKKy50cmVlIHVsIGxpIHsKKyAgICBsaXN0LXN0eWxlOm5vbmU7
CisgICAgcGFkZGluZzogMWVtIDAgMCAwZW07Cit9CisKKy50cmVlID4gbGk6bGFzdC1jaGlsZCB7
CisgICAgcGFkZGluZy1ib3R0b206IDA7Cit9CisKKy50cmVlLWxhYmVsIHsKKyAgcG9zaXRpb246
IHJlbGF0aXZlOworICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cit9CisKK2xhYmVsLnRyZWUtbGFi
ZWwgeworICAgIGN1cnNvcjogcG9pbnRlcjsKK30KKworLnRyZWUgPiBsaSA+IGxhYmVsLnRyZWUt
bGFiZWw6YmVmb3JlIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgei1pbmRleDogMTsK
KyAgICBmbG9hdDogbGVmdDsKKyAgICBtYXJnaW46IDAgMCAwIC0yZW07CisgICAgd2lkdGg6IDFl
bTsKKyAgICBoZWlnaHQ6IDFlbTsKKyAgICBjb250ZW50OiAnXDI1QkEnOworICAgIHRleHQtYWxp
Z246IGNlbnRlcjsKKyAgICBsaW5lLWhlaWdodDogMi41ZW07CisgICAgZm9udC1zaXplOiAuNWVt
OworfQorCisudHJlZSA+IGxpID4gOmNoZWNrZWQgfiBsYWJlbC50cmVlLWxhYmVsOmJlZm9yZSB7
CisgICAgY29udGVudDogJ1wyNUJDJzsKK30KKworQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1kZXZp
Y2Utd2lkdGg6IDQxNHB4KSB7CisgICAgLnRyZWUgeworICAgICAgICBwYWRkaW5nLWxlZnQ6IDFl
bTsKKyAgICB9CisgICAgLnRyZWUgPiBsaSA+IGxhYmVsLnRyZWUtbGFiZWw6YmVmb3JlIHsKKyAg
ICAgICAgZm9udC1zaXplOiAxZW07CisgICAgICAgIG1hcmdpbi1sZWZ0OiAtMS43NWVtOworICAg
ICAgICBsaW5lLWhlaWdodDogMWVtOworICAgIH0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
Ki8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50cm8gU2VjdGlvbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisj
aW50cm8geworICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CisgICAganVzdGlmeS1jb250ZW50
OiBmbGV4LXN0YXJ0OworICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKKworICAgIG1pbi1oZWln
aHQ6IDYwMHB4OworICAgIGhlaWdodDogYXV0bzsKK30KKworI2ludHJvIGgyIHsKKyAgICBtYXJn
aW4tdG9wOiAwOworICAgIGZvbnQtc2l6ZTogMS4yZW07Cit9CisKKyNpbnRybyA+IGRpdiB7Cisg
ICAgd2lkdGg6IDEwMCU7CisgICAgbWFyZ2luOiAyZW0gMDsKKyAgICBmbGV4LWRpcmVjdGlvbjog
cm93OworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDsK
K30KKworI3N1aXRlcyB7CisgICAgcGFkZGluZy1sZWZ0OiAxNXZ3OworICAgIGZsZXg6IDAgMSA0
MCU7Cit9CisKKyNvcHRpb25zIHsKKyAgICBmbGV4OiAxIDEgYXV0bzsKK30KKworI2ludHJvIGlu
cHV0W3R5cGU9Im51bWJlciJdIHsKKyAgICB3aWR0aDogNTBweDsKK30KKyAKKyNzdWl0ZXMgaW5w
dXRbdHlwZT0ibnVtYmVyIl0geworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgZmxvYXQ6IHJpZ2h0
OworfQorCisjc3VpdGVzIGlucHV0W3R5cGU9Im51bWJlciJdLnNlbGVjdGVkIHsKKyAgICBkaXNw
bGF5OiBpbmxpbmU7CisgICAgbWFyZ2luOiAwOworfQorCisjc3VpdGVzIHVsIHVsIHsKKyAgICBm
b250LXNpemU6IC44ZW07CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDAgMCAwIDFlbTsK
K30KKworI29wdGlvbnMgdWwgeworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworICAg
IGxpc3Qtc3R5bGU6IG5vbmU7Cit9CisKKyNvcHRpb25zIGgzIHsKKyAgICBmb250LXNpemU6IDFl
bTsKKyAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICBtYXJnaW46IDAgMCAuM2VtIDA7Cisg
ICAgcGFkZGluZzogMDsKK30KKworI29wdGlvbnMgPiBmb3JtID4gdWwgPiBsaSB7CisgICAgcGFk
ZGluZzogMCAwIDFlbSAwOworfQorCisjb3B0aW9ucyB1bCB1bCB7CisgICAgcGFkZGluZzogMDsK
K30KKworI29wdGlvbnMgbGkgeworICAgIHBhZGRpbmc6IC4xZW0gMDsKK30KKworQG1lZGlhIHNj
cmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6IDE4MDBweCkgeworICAgICNpbnRybyB7CisgICAg
ICAgIG1pbi1oZWlnaHQ6IDgwMHB4OworICAgIH0KK30KKworQG1lZGlhIHNjcmVlbiBhbmQgKG1h
eC1kZXZpY2Utd2lkdGg6IDQxNHB4KSB7CisgICAgI2ludHJvIHsKKyAgICAgICAgbWluLWhlaWdo
dDogMTAwJTsKKyAgICB9CisKKyAgICAjaW50cm8gPiBkaXYgeworICAgICAgICBmbGV4LWRpcmVj
dGlvbjogY29sdW1uOworICAgIH0KKworICAgICNzdWl0ZXMsCisgICAgI29wdGlvbnMgeworICAg
ICAgICBwYWRkaW5nOiAwIDVweDsKKyAgICAgICAgbWFyZ2luOiAwOworICAgICAgICBmbGV4OiAw
IDAgYXV0bzsKKyAgICB9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJ1bm5pbmcgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI3Rlc3QtY29udGFpbmVy
IHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKyNydW5uaW5nLXRlc3QgeworICAgIGRp
c3BsYXk6IGZsZXg7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKyAgICBqdXN0aWZ5LWNvbnRl
bnQ6IGNlbnRlcjsKK30KKworI3Byb2dyZXNzIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisu
ZGlzcGxheS1wcm9ncmVzcy1iYXIgI3Byb2dyZXNzIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAg
ICBwb3NpdGlvbjogZml4ZWQ7CisgICAgdG9wOiAwOworICAgIGxlZnQ6IDA7CisgICAgaGVpZ2h0
OiA2cHg7CisgICAgd2lkdGg6IDEwMCU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEyOCwg
MTI4LCAxMjgpOworfQorCisuZGlzcGxheS1wcm9ncmVzcy1iYXIgI3Byb2dyZXNzLWNvbXBsZXRl
ZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOwor
ICAgIGhlaWdodDogNnB4OworICAgIHdpZHRoOiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHJn
YigyMzUsIDk2LCAzMik7Cit9CisKK0BtZWRpYSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRo
OiAxODAwcHgpIHsKKyAgICAuZnJhbWUtY29udGFpbmVyID4gaWZyYW1lIHsKKyAgICAgICAgd2lk
dGg6IDE2MDBweDsKKyAgICAgICAgaGVpZ2h0OiA4MDBweDsKKyAgICB9Cit9CisKKy8qIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdHMgU2Vj
dGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gKi8KKworI3Jlc3VsdHMgaDEsICN0ZXN0LWdyYXBoIGgxIHsKKyAgICBmb250LXNpemU6
IDJlbTsKK30KKworLnNjb3JlIHsKKyAgICBmb250LXNpemU6IDNlbTsKK30KKworLm1lYW4gewor
ICAgIG1hcmdpbi10b3A6IDA7CisgICAgbWFyZ2luLWJvdHRvbTogMWVtOworICAgIGZvbnQtc2l6
ZTogMS41ZW07CisgICAgZm9udC13ZWlnaHQ6IDQwMDsKK30KKworI3Jlc3VsdHMtZGF0YSAuYXZl
cmFnZSB7CisgICAgcGFkZGluZy1sZWZ0OiAxZW07CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9
CisKKyNyZXN1bHRzLWRhdGEgLnN0ZGV2IHsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworICAgIHBh
ZGRpbmctbGVmdDogLjI1ZW07Cit9CisKKyNyZXN1bHRzLWRhdGEgYnV0dG9uLnNtYWxsLWJ1dHRv
biB7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMzUsIDIzNSwgMjM1LCAuOSk7CisgICAg
Y29sb3I6IHJnYmEoMjM1LCAyMzUsIDIzNSwgLjkpOworICAgIGJvcmRlci1yYWRpdXM6IDJweDsK
KyAgICBwYWRkaW5nOiAxcHggNHB4OworICAgIG1hcmdpbjogMCAwIDAgMWVtOworICAgIGZvbnQt
c2l6ZTogOXB4OworfQorCisjcmVzdWx0cy1kYXRhIGJ1dHRvbi5zbWFsbC1idXR0b246YWN0aXZl
IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzNSwgMjM1LCAyMzUsIC4yKTsKKyAgICBj
b2xvcjogaW5oZXJpdDsKK30KKworI3Jlc3VsdHMtdGFibGVzIHRkLm5vaXN5LXJlc3VsdHMgewor
ICAgIGNvbG9yOiByZ2IoMjU1LCAxMDQsIDEwNCk7Cit9CisKKyNyZXN1bHRzLXRhYmxlcyBkaXYg
eworICAgIGRpcmVjdGlvbjogbHRyOworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgZmxleC1kaXJl
Y3Rpb246IHJvdzsKK30KKworI3Jlc3VsdHMtanNvbiB7CisgICAgbWFyZ2luLWJvdHRvbTogM2Vt
OworfQorCisjcmVzdWx0cy1qc29uIHRleHRhcmVhIHsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogc3Vi
OworfQorCisjdGVzdC1ncmFwaCB7CisgICAgZmxleDogMSAwIGNhbGMoMTAwJSAtIDQwcHgpOwor
fQorCisjdGVzdC1ncmFwaCBoMSB7CisgICAgbWFyZ2luLWJvdHRvbTogMDsKK30KKworI3Rlc3Qt
Z3JhcGggaGVhZGVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgd2lkdGg6IDEwMCU7
Cit9CisKKyN0ZXN0LWdyYXBoIGhlYWRlciBidXR0b24geworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICB0b3A6IDEuNWVtOworICAgIGxlZnQ6IDA7CisgICAgYm9yZGVyLXdpZHRoOiAxcHg7
CisgICAgZm9udC1zaXplOiAxZW07CisgICAgcGFkZGluZzogLjVlbSAxZW07Cit9CisKKyN0ZXN0
LWdyYXBoLWRhdGEgeworICAgIGZsZXg6IDEgMSBhdXRvOworICAgIGFsaWduLXNlbGY6IHN0cmV0
Y2g7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdyYXBoIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
LworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI3Rlc3QtZ3JhcGgtZGF0YSB7CisgICAgZm9u
dDogMTBweCBzYW5zLXNlcmlmOworICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Cit9CisK
KyN0ZXN0LWdyYXBoLWRhdGEgPiBzdmcgeworICAgIGZpbGw6IG5vbmU7Cit9CisKKy5heGlzIHBh
dGgsCisuYXhpcyBsaW5lIHsKKyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTogIzk5OTk5OTsK
KyAgICBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7Cit9CisKKy5sZWZ0LXNhbXBsZXMgewor
ICAgIHN0cm9rZTogIzdBREQ0OTsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisucmln
aHQtc2FtcGxlcyB7CisgICAgc3Ryb2tlOiAjRkE0OTI1OworICAgIHN0cm9rZS13aWR0aDogMS41
cHg7Cit9CisKKy5zYW1wbGUtdGltZSB7CisgICAgc3Ryb2tlOiAjNTQ5M0Q2OworfQorCisubGVm
dC1tZWFuIHsKKyAgICBzdHJva2U6ICM3QURENDk7CisgICAgb3BhY2l0eTogLjg7Cit9CisKKy5y
aWdodC1tZWFuIHsKKyAgICBzdHJva2U6ICNGQTQ5MjU7CisgICAgb3BhY2l0eTogLjg7Cit9CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1
bm5lci9hbmltb21ldGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNl
cy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40OGZkMDY3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qcwpAQCAtMCwwICsxLDM2
MiBAQAorVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50
LCB7CisgICAgdGVzdHNDb3VudDogbnVsbCwKKyAgICBwcm9ncmVzc0JhcjogbnVsbCwKKworICAg
IGRpZFJ1blRlc3Q6IGZ1bmN0aW9uICgpCisgICAgeworICAgICAgICB0aGlzLnByb2dyZXNzQmFy
LmluY1JhbmdlKCk7CisgICAgfSwKKyAgICAKKyAgICB3aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbjog
ZnVuY3Rpb24gKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVzdWx0cyA9IG5ldyBSZXN1bHRzRGFz
aGJvYXJkKCk7CisgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2dyZXNzLWNvbXBsZXRlZCIpLCB0aGlzLnRlc3RzQ291
bnQpOworICAgIH0KK30pOworCitVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KHdpbmRvdy5zZWN0aW9u
c01hbmFnZXIsIHsKKyAgICBzZXRTZWN0aW9uSGVhZGVyOiBmdW5jdGlvbihzZWN0aW9uSWRlbnRp
ZmllciwgdGl0bGUpCisgICAgeworICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjIiAr
IHNlY3Rpb25JZGVudGlmaWVyICsgIiBoMSIpLnRleHRDb250ZW50ID0gdGl0bGU7CisgICAgfQor
fSk7CisKK3dpbmRvdy5vcHRpb25zTWFuYWdlciA9Cit7CisgICAgdmFsdWVGb3JPcHRpb246IGZ1
bmN0aW9uKG5hbWUpCisgICAgeworICAgICAgICB2YXIgZm9ybUVsZW1lbnQgPSBkb2N1bWVudC5m
b3Jtc1siYmVuY2htYXJrLW9wdGlvbnMiXS5lbGVtZW50c1tuYW1lXTsKKyAgICAgICAgaWYgKGZv
cm1FbGVtZW50LnR5cGUgPT0gImNoZWNrYm94IikKKyAgICAgICAgICAgIHJldHVybiBmb3JtRWxl
bWVudC5jaGVja2VkOworICAgICAgICByZXR1cm4gZm9ybUVsZW1lbnQudmFsdWU7CisgICAgfSwK
KyAgICAKKyAgICB1cGRhdGVVSUZyb21Mb2NhbFN0b3JhZ2U6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHZhciBmb3JtRWxlbWVudHMgPSBkb2N1bWVudC5mb3Jtc1siYmVuY2htYXJrLW9wdGlv
bnMiXS5lbGVtZW50czsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1FbGVtZW50
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGZvcm1FbGVtZW50ID0gZm9ybUVsZW1l
bnRzW2ldOworICAgICAgICAgICAgdmFyIG5hbWUgPSBmb3JtRWxlbWVudC5pZCB8fCBmb3JtRWxl
bWVudC5uYW1lOworICAgICAgICAgICAgdmFyIHR5cGUgPSBmb3JtRWxlbWVudC50eXBlOworCisg
ICAgICAgICAgICB2YXIgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKTsKKyAgICAg
ICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gIm51bWJlciIpCisgICAgICAgICAgICAgICAgZm9ybUVs
ZW1lbnRzW25hbWVdLnZhbHVlID0gK3ZhbHVlOworICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9
PSAiY2hlY2tib3giKQorICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50c1tuYW1lXS5jaGVja2Vk
ID0gdmFsdWUgPT0gInRydWUiOworICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSAicmFkaW8i
KQorICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50c1tuYW1lXS52YWx1ZSA9IHZhbHVlOworICAg
ICAgICB9CisgICAgfSwKKworICAgIHVwZGF0ZUxvY2FsU3RvcmFnZUZyb21VSTogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdmFyIGZvcm1FbGVtZW50cyA9IGRvY3VtZW50LmZvcm1zWyJiZW5j
aG1hcmstb3B0aW9ucyJdLmVsZW1lbnRzOworICAgICAgICB2YXIgb3B0aW9ucyA9IHt9OyAgICAg
ICAgCisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3JtRWxlbWVudHMubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIHZhciBmb3JtRWxlbWVudCA9IGZvcm1FbGVtZW50c1tpXTsKKyAg
ICAgICAgICAgIHZhciBuYW1lID0gZm9ybUVsZW1lbnQuaWQgfHwgZm9ybUVsZW1lbnQubmFtZTsK
KyAgICAgICAgICAgIHZhciB0eXBlID0gZm9ybUVsZW1lbnQudHlwZTsKKworICAgICAgICAgICAg
aWYgKHR5cGUgPT0gIm51bWJlciIpCisgICAgICAgICAgICAgICAgb3B0aW9uc1tuYW1lXSA9IGZv
cm1FbGVtZW50LnZhbHVlOworICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSAiY2hlY2tib3gi
KQorICAgICAgICAgICAgICAgIG9wdGlvbnNbbmFtZV0gPSBmb3JtRWxlbWVudC5jaGVja2VkOwor
ICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSAicmFkaW8iKQorICAgICAgICAgICAgICAgIG9w
dGlvbnNbbmFtZV0gPSBmb3JtRWxlbWVudHNbbmFtZV0udmFsdWU7CisgICAgCisgICAgICAgICAg
ICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBvcHRpb25zW25hbWVdKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIG9wdGlvbnM7CisgICAgfQorfQorCit3aW5kb3cuc3Vp
dGVzTWFuYWdlciA9Cit7CisgICAgX3RyZWVFbGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3N1aXRlcyA+IC50cmVlIik7Cisg
ICAgfSwKKyAgICAKKyAgICBfc3VpdGVzRWxlbWVudHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjc3VpdGVzID4gdWwgPiBsaSIp
OworICAgIH0sCisgICAgCisgICAgX2NoZWNrYm94RWxlbWVudDogZnVuY3Rpb24oZWxlbWVudCkK
KyAgICB7CisgICAgICAgIHJldHVybiBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoImlucHV0W3R5cGU9
J2NoZWNrYm94J106bm90KC5leHBhbmQtYnV0dG9uKSIpOworICAgIH0sCisKKyAgICBfZWRpdEVs
ZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gZWxlbWVudC5x
dWVyeVNlbGVjdG9yKCJpbnB1dFt0eXBlPSdudW1iZXInXSIpOworICAgIH0sCisKKyAgICBfZWRp
dHNFbGVtZW50czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoIiNzdWl0ZXMgaW5wdXRbdHlwZT0nbnVtYmVyJ10iKTsKKyAgICB9LAor
ICAgICAgICAKKyAgICBfbG9jYWxTdG9yYWdlTmFtZUZvclRlc3Q6IGZ1bmN0aW9uKHN1aXRlTmFt
ZSwgdGVzdE5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gc3VpdGVOYW1lICsgIi8iICsgdGVz
dE5hbWU7CisgICAgfSwKKworICAgIF91cGRhdGVTdWl0ZUNoZWNrYm94U3RhdGU6IGZ1bmN0aW9u
KHN1aXRlQ2hlY2tib3gpCisgICAgeworICAgICAgICB2YXIgbnVtYmVyRW5hYmxlZFRlc3RzID0g
MDsKKyAgICAgICAgc3VpdGVDaGVja2JveC50ZXN0c0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24o
dGVzdEVsZW1lbnQpIHsKKyAgICAgICAgICAgIHZhciB0ZXN0Q2hlY2tib3ggPSB0aGlzLl9jaGVj
a2JveEVsZW1lbnQodGVzdEVsZW1lbnQpOworICAgICAgICAgICAgaWYgKHRlc3RDaGVja2JveC5j
aGVja2VkKQorICAgICAgICAgICAgICAgICsrbnVtYmVyRW5hYmxlZFRlc3RzOworICAgICAgICB9
LCB0aGlzKTsKKyAgICAgICAgc3VpdGVDaGVja2JveC5jaGVja2VkID0gbnVtYmVyRW5hYmxlZFRl
c3RzID4gMDsKKyAgICAgICAgc3VpdGVDaGVja2JveC5pbmRldGVybWluYXRlID0gbnVtYmVyRW5h
YmxlZFRlc3RzID4gMCAmJiBudW1iZXJFbmFibGVkVGVzdHMgPCBzdWl0ZUNoZWNrYm94LnRlc3Rz
RWxlbWVudHMubGVuZ3RoOworICAgIH0sCisKKyAgICBfdXBkYXRlU3RhcnRCdXR0b25TdGF0ZTog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHN1aXRlc0VsZW1lbnRzID0gdGhpcy5fc3Vp
dGVzRWxlbWVudHMoKTsKKyAgICAgICAgdmFyIHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiI2ludHJvIGJ1dHRvbiIpOworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzdWl0ZXNFbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHN1
aXRlRWxlbWVudCA9IHN1aXRlc0VsZW1lbnRzW2ldOworICAgICAgICAgICAgdmFyIHN1aXRlQ2hl
Y2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQoc3VpdGVFbGVtZW50KTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKHN1aXRlQ2hlY2tib3guY2hlY2tlZCkgeworICAgICAgICAgICAg
ICAgIHN0YXJ0QnV0dG9uLmRpc2FibGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIHN0YXJ0QnV0dG9uLmRp
c2FibGVkID0gdHJ1ZTsKKyAgICB9LAorCisgICAgX29uQ2hhbmdlU3VpdGVDaGVja2JveDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0ZWQgPSBldmVudC50YXJnZXQu
Y2hlY2tlZDsKKyAgICAgICAgZXZlbnQudGFyZ2V0LnRlc3RzRWxlbWVudHMuZm9yRWFjaChmdW5j
dGlvbih0ZXN0RWxlbWVudCkgeworICAgICAgICAgICAgdmFyIHRlc3RDaGVja2JveCA9IHRoaXMu
X2NoZWNrYm94RWxlbWVudCh0ZXN0RWxlbWVudCk7CisgICAgICAgICAgICB0ZXN0Q2hlY2tib3gu
Y2hlY2tlZCA9IHNlbGVjdGVkOyAgICAgICAgCisgICAgICAgIH0sIHRoaXMpOworICAgICAgICB0
aGlzLl91cGRhdGVTdGFydEJ1dHRvblN0YXRlKCk7CisgICAgfSwKKworICAgIF9vbkNoYW5nZVRl
c3RDaGVja2JveDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgc3VpdGVDaGVj
a2JveCA9IGV2ZW50LnRhcmdldC5zdWl0ZUNoZWNrYm94OworICAgICAgICB0aGlzLl91cGRhdGVT
dWl0ZUNoZWNrYm94U3RhdGUoc3VpdGVDaGVja2JveCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZVN0
YXJ0QnV0dG9uU3RhdGUoKTsKKyAgICB9LAorCisgICAgX2NyZWF0ZVN1aXRlRWxlbWVudDogZnVu
Y3Rpb24odHJlZUVsZW1lbnQsIHN1aXRlLCBpZCkKKyAgICB7CisgICAgICAgIHZhciBzdWl0ZUVs
ZW1lbnQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJsaSIsIHt9LCB0cmVlRWxl
bWVudCk7CisgICAgICAgIHZhciBleHBhbmQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIsIHsgdHlwZTogImNoZWNrYm94IiwgIGNsYXNzOiAiZXhwYW5kLWJ1dHRvbiIs
IGlkOiBpZCB9LCBzdWl0ZUVsZW1lbnQpOworICAgICAgICB2YXIgbGFiZWwgPSBEb2N1bWVudEV4
dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJsYWJlbCIsIHsgY2xhc3M6ICJ0cmVlLWxhYmVsIiwgZm9y
OiBpZCB9LCBzdWl0ZUVsZW1lbnQpOworCisgICAgICAgIHZhciBzdWl0ZUNoZWNrYm94ID0gRG9j
dW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgiaW5wdXQiLCB7IHR5cGU6ICJjaGVja2JveCIg
fSwgbGFiZWwpOworICAgICAgICBzdWl0ZUNoZWNrYm94LnN1aXRlID0gc3VpdGU7CisgICAgICAg
IHN1aXRlQ2hlY2tib3gub25jaGFuZ2UgPSB0aGlzLl9vbkNoYW5nZVN1aXRlQ2hlY2tib3guYmlu
ZCh0aGlzKTsKKyAgICAgICAgc3VpdGVDaGVja2JveC50ZXN0c0VsZW1lbnRzID0gW107CisKKyAg
ICAgICAgbGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiICsgc3Vp
dGUubmFtZSkpOworICAgICAgICByZXR1cm4gc3VpdGVFbGVtZW50OworICAgIH0sCisKKyAgICBf
Y3JlYXRlVGVzdEVsZW1lbnQ6IGZ1bmN0aW9uKGxpc3RFbGVtZW50LCB0ZXN0LCBzdWl0ZUNoZWNr
Ym94KQorICAgIHsKKyAgICAgICAgdmFyIHRlc3RFbGVtZW50ID0gRG9jdW1lbnRFeHRlbnNpb24u
Y3JlYXRlRWxlbWVudCgibGkiLCB7fSwgbGlzdEVsZW1lbnQpOworICAgICAgICB2YXIgc3BhbiA9
IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImxhYmVsIiwgeyBjbGFzczogInRyZWUt
bGFiZWwiIH0sIHRlc3RFbGVtZW50KTsKKworICAgICAgICB2YXIgdGVzdENoZWNrYm94ID0gRG9j
dW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgiaW5wdXQiLCB7IHR5cGU6ICJjaGVja2JveCIg
fSwgc3Bhbik7CisgICAgICAgIHRlc3RDaGVja2JveC50ZXN0ID0gdGVzdDsKKyAgICAgICAgdGVz
dENoZWNrYm94Lm9uY2hhbmdlID0gdGhpcy5fb25DaGFuZ2VUZXN0Q2hlY2tib3guYmluZCh0aGlz
KTsKKyAgICAgICAgdGVzdENoZWNrYm94LnN1aXRlQ2hlY2tib3ggPSBzdWl0ZUNoZWNrYm94Owor
CisgICAgICAgIHN1aXRlQ2hlY2tib3gudGVzdHNFbGVtZW50cy5wdXNoKHRlc3RFbGVtZW50KTsK
KyAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIgKyB0
ZXN0Lm5hbWUpKTsKKyAgICAgICAgRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgiaW5w
dXQiLCB7IHR5cGU6ICJudW1iZXIiIH0sIHRlc3RFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIHRl
c3RFbGVtZW50OworICAgIH0sCisKKyAgICBjcmVhdGVFbGVtZW50czogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnQoKTsKKworICAg
ICAgICBTdWl0ZXMuZm9yRWFjaChmdW5jdGlvbihzdWl0ZSwgaW5kZXgpIHsKKyAgICAgICAgICAg
IHZhciBzdWl0ZUVsZW1lbnQgPSB0aGlzLl9jcmVhdGVTdWl0ZUVsZW1lbnQodHJlZUVsZW1lbnQs
IHN1aXRlLCAic3VpdGUtIiArIGluZGV4KTsKKyAgICAgICAgICAgIHZhciBsaXN0RWxlbWVudCA9
IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoInVsIiwge30sIHN1aXRlRWxlbWVudCk7
CisgICAgICAgICAgICB2YXIgc3VpdGVDaGVja2JveCA9IHRoaXMuX2NoZWNrYm94RWxlbWVudChz
dWl0ZUVsZW1lbnQpOworCisgICAgICAgICAgICBzdWl0ZS50ZXN0cy5mb3JFYWNoKGZ1bmN0aW9u
KHRlc3QpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdEVsZW1lbnQgPSB0aGlzLl9jcmVhdGVU
ZXN0RWxlbWVudChsaXN0RWxlbWVudCwgdGVzdCwgc3VpdGVDaGVja2JveCk7CisgICAgICAgICAg
ICB9LCB0aGlzKTsKKyAgICAgICAgfSwgdGhpcyk7CisgICAgfSwKKyAgICAKKyAgICB1cGRhdGVF
ZGl0c0VsZW1lbnRzU3RhdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBlZGl0c0Vs
ZW1lbnRzID0gdGhpcy5fZWRpdHNFbGVtZW50cygpOworICAgICAgICB2YXIgc2hvd0NvbXBsZXhp
dHlJbnB1dHMgPSBvcHRpb25zTWFuYWdlci52YWx1ZUZvck9wdGlvbigiYWRqdXN0bWVudCIpID09
ICJmaXhlZCI7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGl0c0VsZW1lbnRzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgZWRpdEVsZW1lbnQgPSBlZGl0c0VsZW1lbnRz
W2ldOworICAgICAgICAgICAgaWYgKHNob3dDb21wbGV4aXR5SW5wdXRzKQorICAgICAgICAgICAg
ICAgIGVkaXRFbGVtZW50LmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgZWRpdEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0
ZWQiKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICB1cGRhdGVEaXNwbGF5OiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICJkaXNwbGF5LSIgKyBv
cHRpb25zTWFuYWdlci52YWx1ZUZvck9wdGlvbigiZGlzcGxheSIpOworICAgIH0sCisKKyAgICB1
cGRhdGVVSUZyb21Mb2NhbFN0b3JhZ2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBz
dWl0ZXNFbGVtZW50cyA9IHRoaXMuX3N1aXRlc0VsZW1lbnRzKCk7CisgICAgICAgIAorICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHN1aXRlc0VsZW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICB2YXIgc3VpdGVFbGVtZW50ID0gc3VpdGVzRWxlbWVudHNbaV07CisgICAgICAgICAg
ICB2YXIgc3VpdGVDaGVja2JveCA9IHRoaXMuX2NoZWNrYm94RWxlbWVudChzdWl0ZUVsZW1lbnQp
OworICAgICAgICAgICAgdmFyIHN1aXRlID0gc3VpdGVDaGVja2JveC5zdWl0ZTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgc3VpdGVDaGVja2JveC50ZXN0c0VsZW1lbnRzLmZvckVhY2goZnVu
Y3Rpb24odGVzdEVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdENoZWNrYm94ID0g
dGhpcy5fY2hlY2tib3hFbGVtZW50KHRlc3RFbGVtZW50KTsKKyAgICAgICAgICAgICAgICB2YXIg
dGVzdEVkaXQgPSB0aGlzLl9lZGl0RWxlbWVudCh0ZXN0RWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgdmFyIHRlc3QgPSB0ZXN0Q2hlY2tib3gudGVzdDsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICB2YXIgc3RyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5fbG9jYWxTdG9y
YWdlTmFtZUZvclRlc3Qoc3VpdGUubmFtZSwgdGVzdC5uYW1lKSk7CisgICAgICAgICAgICAgICAg
aWYgKHN0ciA9PT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICAgICAgdmFyIHZhbHVlID0gSlNPTi5wYXJzZShzdHIpOworICAgICAgICAgICAgICAgIHRl
c3RDaGVja2JveC5jaGVja2VkID0gdmFsdWUuY2hlY2tlZDsKKyAgICAgICAgICAgICAgICB0ZXN0
RWRpdC52YWx1ZSA9IHZhbHVlLmNvbXBsZXhpdHk7CisgICAgICAgICAgICB9LCB0aGlzKTsKKwor
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3VpdGVDaGVja2JveFN0YXRlKHN1aXRlQ2hlY2tib3gp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0aGlzLl91cGRhdGVTdGFydEJ1dHRvblN0
YXRlKCk7CisgICAgfSwKKworICAgIHVwZGF0ZUxvY2FsU3RvcmFnZUZyb21VSTogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdmFyIHN1aXRlc0VsZW1lbnRzID0gdGhpcy5fc3VpdGVzRWxlbWVu
dHMoKTsKKyAgICAgICAgdmFyIHN1aXRlcyA9IFtdOworICAgICAgICAKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzdWl0ZXNFbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
dmFyIHN1aXRlRWxlbWVudCA9IHN1aXRlc0VsZW1lbnRzW2ldOworICAgICAgICAgICAgdmFyIHN1
aXRlQ2hlY2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQoc3VpdGVFbGVtZW50KTsKKyAgICAg
ICAgICAgIHZhciBzdWl0ZSA9IHN1aXRlQ2hlY2tib3guc3VpdGU7CisKKyAgICAgICAgICAgIHZh
ciB0ZXN0cyA9IFtdOworICAgICAgICAgICAgc3VpdGVDaGVja2JveC50ZXN0c0VsZW1lbnRzLmZv
ckVhY2goZnVuY3Rpb24odGVzdEVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdENo
ZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHRlc3RFbGVtZW50KTsKKyAgICAgICAgICAg
ICAgICB2YXIgdGVzdEVkaXQgPSB0aGlzLl9lZGl0RWxlbWVudCh0ZXN0RWxlbWVudCk7CisgICAg
ICAgICAgICAgICAgdmFyIHRlc3QgPSB0ZXN0Q2hlY2tib3gudGVzdDsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBpZiAodGVzdENoZWNrYm94LmNoZWNrZWQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdC5jb21wbGV4aXR5ID0gdGVzdEVkaXQudmFsdWU7CisgICAgICAgICAg
ICAgICAgICAgIHRlc3RzLnB1c2godGVzdCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgdmFyIHZhbHVlID0geyBjaGVja2VkOiB0ZXN0Q2hlY2tib3guY2hlY2tlZCwgY29t
cGxleGl0eTogdGVzdEVkaXQudmFsdWUgfTsgCisgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdl
LnNldEl0ZW0odGhpcy5fbG9jYWxTdG9yYWdlTmFtZUZvclRlc3Qoc3VpdGUubmFtZSwgdGVzdC5u
YW1lKSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTsKKyAgICAgICAgICAgIH0sIHRoaXMpOworCisg
ICAgICAgICAgICBpZiAodGVzdHMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHN1aXRlcy5wdXNo
KG5ldyBTdWl0ZShzdWl0ZUNoZWNrYm94LnN1aXRlLm5hbWUsIHRlc3RzKSk7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gc3VpdGVzOworICAgIH0sCisgICAgCisgICAgdXBkYXRlTG9jYWxT
dG9yYWdlRnJvbUpTT046IGZ1bmN0aW9uKGl0ZXJhdGlvblJlc3VsdHMpCisgICAgeworICAgICAg
ICBmb3IgKHZhciBzdWl0ZU5hbWUgaW4gaXRlcmF0aW9uUmVzdWx0c1tTdHJpbmdzLmpzb24ucmVz
dWx0cy5zdWl0ZXNdKSB7CisgICAgICAgICAgICB2YXIgc3VpdGVSZXN1bHRzID0gaXRlcmF0aW9u
UmVzdWx0c1tTdHJpbmdzLmpzb24ucmVzdWx0cy5zdWl0ZXNdW3N1aXRlTmFtZV07CisKKyAgICAg
ICAgICAgIGZvciAodmFyIHRlc3ROYW1lIGluIHN1aXRlUmVzdWx0c1tTdHJpbmdzLmpzb24ucmVz
dWx0cy50ZXN0c10pIHsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdFJlc3VsdHMgPSBzdWl0ZVJl
c3VsdHNbU3RyaW5ncy5qc29uLnJlc3VsdHMudGVzdHNdW3Rlc3ROYW1lXTsKKyAgICAgICAgICAg
ICAgICB2YXIgZGF0YSA9IHRlc3RSZXN1bHRzW1N0cmluZ3MuanNvbi5leHBlcmltZW50cy5jb21w
bGV4aXR5XTsKKyAgICAgICAgICAgICAgICB2YXIgY29tcGxleGl0eSA9IE1hdGgucm91bmQoZGF0
YVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLmF2ZXJhZ2VdKTsKKworICAgICAgICAgICAgICAg
IHZhciB2YWx1ZSA9IHsgY2hlY2tlZDogdHJ1ZSwgY29tcGxleGl0eTogY29tcGxleGl0eSB9Owor
ICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuX2xvY2FsU3RvcmFnZU5h
bWVGb3JUZXN0KHN1aXRlTmFtZSwgdGVzdE5hbWUpLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitVdGlsaXRpZXMuZXh0ZW5kT2Jq
ZWN0KHdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyLCB7CisgICAgaW5pdGlhbGl6ZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgZG9jdW1lbnQuZm9ybXNbImJlbmNobWFyay1vcHRpb25zIl0u
YWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgYmVuY2htYXJrQ29udHJvbGxlci5vbkZvcm1DaGFu
Z2VkLCB0cnVlKTsKKyAgICAgICAgb3B0aW9uc01hbmFnZXIudXBkYXRlVUlGcm9tTG9jYWxTdG9y
YWdlKCk7CisgICAgICAgIHN1aXRlc01hbmFnZXIuY3JlYXRlRWxlbWVudHMoKTsKKyAgICAgICAg
c3VpdGVzTWFuYWdlci51cGRhdGVVSUZyb21Mb2NhbFN0b3JhZ2UoKTsKKyAgICAgICAgc3VpdGVz
TWFuYWdlci51cGRhdGVEaXNwbGF5KCk7CisgICAgICAgIHN1aXRlc01hbmFnZXIudXBkYXRlRWRp
dHNFbGVtZW50c1N0YXRlKCk7CisgICAgfSwKKworICAgIG9uRm9ybUNoYW5nZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09ICJhZGp1c3Rt
ZW50IikgeworICAgICAgICAgICAgc3VpdGVzTWFuYWdlci51cGRhdGVFZGl0c0VsZW1lbnRzU3Rh
dGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZlbnQu
dGFyZ2V0Lm5hbWUgPT0gImRpc3BsYXkiKSB7CisgICAgICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVw
ZGF0ZURpc3BsYXkoKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBzdGFydEJlbmNobWFyazog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIG9wdGlvbnMgPSBvcHRpb25zTWFuYWdlci51
cGRhdGVMb2NhbFN0b3JhZ2VGcm9tVUkoKTsKKyAgICAgICAgdmFyIHN1aXRlcyA9IHN1aXRlc01h
bmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbVVJKCk7CisgICAgICAgIHRoaXMuX3N0YXJ0QmVu
Y2htYXJrKHN1aXRlcywgb3B0aW9ucywgInJ1bm5pbmctdGVzdCIpOworICAgIH0sCisKKyAgICBz
aG93UmVzdWx0czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmFkZGVkS2V5
RXZlbnQpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNz
IiwgdGhpcy5zZWxlY3RSZXN1bHRzLCBmYWxzZSk7CisgICAgICAgICAgICB0aGlzLmFkZGVkS2V5
RXZlbnQgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNldFNl
Y3Rpb25TY29yZSgicmVzdWx0cyIsIGJlbmNobWFya1J1bm5lckNsaWVudC5yZXN1bHRzLnNjb3Jl
LnRvRml4ZWQoMikpOworICAgICAgICB2YXIgZGF0YSA9IGJlbmNobWFya1J1bm5lckNsaWVudC5y
ZXN1bHRzLmRhdGFbU3RyaW5ncy5qc29uLnJlc3VsdHMuaXRlcmF0aW9uc107CisgICAgICAgIHNl
Y3Rpb25zTWFuYWdlci5wb3B1bGF0ZVRhYmxlKCJyZXN1bHRzLWhlYWRlciIsIEhlYWRlcnMudGVz
dE5hbWUsIGRhdGEpOworICAgICAgICBzZWN0aW9uc01hbmFnZXIucG9wdWxhdGVUYWJsZSgicmVz
dWx0cy1zY29yZSIsIEhlYWRlcnMuc2NvcmUsIGRhdGEpOworICAgICAgICBzZWN0aW9uc01hbmFn
ZXIucG9wdWxhdGVUYWJsZSgicmVzdWx0cy1kYXRhIiwgSGVhZGVycy5kZXRhaWxzLCBkYXRhKTsK
KyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Jlc3VsdHMtanNvbiB0ZXh0YXJlYSIp
LnRleHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnkoYmVuY2htYXJrUnVubmVyQ2xpZW50LnJlc3Vs
dHMuZGF0YSwgZnVuY3Rpb24oa2V5LCB2YWx1ZSkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiB2
YWx1ZSA9PSAibnVtYmVyIikKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9GaXhlZCgy
KTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIHNlY3Rp
b25zTWFuYWdlci5zaG93U2VjdGlvbigicmVzdWx0cyIsIHRydWUpOworCisgICAgICAgIHN1aXRl
c01hbmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbUpTT04oZGF0YVswXSk7CisgICAgfSwKKwor
ICAgIHNob3dUZXN0R3JhcGg6IGZ1bmN0aW9uKHRlc3ROYW1lLCBzY29yZSwgbWVhbiwgYXhlcywg
c2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KQorICAgIHsKKyAgICAgICAgc2VjdGlvbnNNYW5h
Z2VyLnNldFNlY3Rpb25IZWFkZXIoInRlc3QtZ3JhcGgiLCB0ZXN0TmFtZSk7CisgICAgICAgIHNl
Y3Rpb25zTWFuYWdlci5zZXRTZWN0aW9uU2NvcmUoInRlc3QtZ3JhcGgiLCBzY29yZSwgbWVhbik7
CisgICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93U2VjdGlvbigidGVzdC1ncmFwaCIsIHRydWUp
OworICAgICAgICBncmFwaCgiI3Rlc3QtZ3JhcGgtZGF0YSIsIG5ldyBJbnNldHMoMTAsIDIwLCAz
MCwgNDApLCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpOworICAgIH0KK30pOwor
Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGJlbmNobWFya0NvbnRyb2xsZXIuaW5p
dGlhbGl6ZSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjc5M2M1Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVu
Y2htYXJrLXJ1bm5lci5qcwpAQCAtMCwwICsxLDE4NCBAQAorZnVuY3Rpb24gQmVuY2htYXJrUnVu
bmVyU3RhdGUoc3VpdGVzKQoreworICAgIHRoaXMuX3N1aXRlcyA9IHN1aXRlczsKKyAgICB0aGlz
Ll9zdWl0ZUluZGV4ID0gLTE7CisgICAgdGhpcy5fdGVzdEluZGV4ID0gMDsKKyAgICB0aGlzLm5l
eHQoKTsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJlbnRTdWl0ZSA9
IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhd
OworfTsKKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJlbnRUZXN0ID0gZnVu
Y3Rpb24oKQoreworICAgIHZhciBzdWl0ZSA9IHRoaXMuY3VycmVudFN1aXRlKCk7CisgICAgcmV0
dXJuIHN1aXRlID8gc3VpdGUudGVzdHNbdGhpcy5fdGVzdEluZGV4XSA6IG51bGw7Cit9OworCitC
ZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuaXNGaXJzdFRlc3QgPSBmdW5jdGlvbigpCit7
CisgICAgcmV0dXJuICF0aGlzLl90ZXN0SW5kZXg7Cit9OworCitCZW5jaG1hcmtSdW5uZXJTdGF0
ZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl90ZXN0SW5kZXgrKzsK
KworICAgIHZhciBzdWl0ZSA9IHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XTsKKyAgICBp
ZiAoc3VpdGUgJiYgdGhpcy5fdGVzdEluZGV4IDwgc3VpdGUudGVzdHMubGVuZ3RoKQorICAgICAg
ICByZXR1cm4gdGhpczsKKworICAgIHRoaXMuX3Rlc3RJbmRleCA9IDA7CisgICAgZG8geworICAg
ICAgICB0aGlzLl9zdWl0ZUluZGV4Kys7CisgICAgfSB3aGlsZSAodGhpcy5fc3VpdGVJbmRleCA8
IHRoaXMuX3N1aXRlcy5sZW5ndGggJiYgdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdLmRp
c2FibGVkKTsKKworICAgIHJldHVybiB0aGlzOworfTsKKworQmVuY2htYXJrUnVubmVyU3RhdGUu
cHJvdG90eXBlLnByZXBhcmVDdXJyZW50VGVzdCA9IGZ1bmN0aW9uKHJ1bm5lciwgZnJhbWUpCit7
CisgICAgdmFyIHN1aXRlID0gdGhpcy5jdXJyZW50U3VpdGUoKTsKKyAgICB2YXIgdGVzdCA9IHRo
aXMuY3VycmVudFRlc3QoKTsKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOwor
ICAgIGZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBzdWl0ZS5wcmVwYXJlKHJ1
bm5lciwgZnJhbWUuY29udGVudFdpbmRvdywgZnJhbWUuY29udGVudERvY3VtZW50KS50aGVuKGZ1
bmN0aW9uKHJlc3VsdCkgeyBwcm9taXNlLnJlc29sdmUocmVzdWx0KTsgfSk7CisgICAgfQorICAg
IGZyYW1lLnNyYyA9ICJ0ZXN0cy8iICsgdGVzdC51cmw7CisgICAgcmV0dXJuIHByb21pc2U7Cit9
OworCitmdW5jdGlvbiBCZW5jaG1hcmtSdW5uZXIoc3VpdGVzLCBmcmFtZUNvbnRhaW5lciwgY2xp
ZW50KQoreworICAgIHRoaXMuX3N1aXRlcyA9IHN1aXRlczsKKyAgICB0aGlzLl9jbGllbnQgPSBj
bGllbnQ7CisgICAgdGhpcy5fZnJhbWVDb250YWluZXIgPSBmcmFtZUNvbnRhaW5lcjsKK30KKwor
QmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS53YWl0Rm9yRWxlbWVudCA9IGZ1bmN0aW9uKHNlbGVj
dG9yKQoreworICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7CisgICAgdmFyIGNv
bnRlbnREb2N1bWVudCA9IHRoaXMuX2ZyYW1lLmNvbnRlbnREb2N1bWVudDsKKworICAgIGZ1bmN0
aW9uIHJlc29sdmVJZlJlYWR5KCkgeworICAgICAgICB2YXIgZWxlbWVudCA9IGNvbnRlbnREb2N1
bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICAgICAgaWYgKGVsZW1lbnQpCisgICAg
ICAgICAgICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKGVsZW1lbnQpOworICAgICAgICBzZXRUaW1l
b3V0KHJlc29sdmVJZlJlYWR5LCA1MCk7CisgICAgfQorCisgICAgcmVzb2x2ZUlmUmVhZHkoKTsK
KyAgICByZXR1cm4gcHJvbWlzZTsKK307CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2Fw
cGVuZEZyYW1lID0gZnVuY3Rpb24oKQoreworICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwg
Im5vIik7CisKKyAgICB0aGlzLl9mcmFtZUNvbnRhaW5lci5pbnNlcnRCZWZvcmUoZnJhbWUsIHRo
aXMuX2ZyYW1lQ29udGFpbmVyLmZpcnN0Q2hpbGQpOworICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7
CisgICAgcmV0dXJuIGZyYW1lOworfTsKKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcmVt
b3ZlRnJhbWUgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKHRoaXMuX2ZyYW1lKSB7CisgICAgICAg
IHRoaXMuX2ZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fZnJhbWUpOworICAgICAg
ICB0aGlzLl9mcmFtZSA9IG51bGw7CisgICAgfQorfTsKKworQmVuY2htYXJrUnVubmVyLnByb3Rv
dHlwZS5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMgPSBmdW5jdGlvbihzdGF0ZSkKK3sKKyAgICB2
YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIHZhciBzdWl0ZSA9IHN0YXRlLmN1
cnJlbnRTdWl0ZSgpOworICAgIHZhciB0ZXN0ID0gc3RhdGUuY3VycmVudFRlc3QoKTsKKyAgICAK
KyAgICBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC53aWxsUnVuVGVzdCkKKyAgICAg
ICAgdGhpcy5fY2xpZW50LndpbGxSdW5UZXN0KHN1aXRlLCB0ZXN0KTsKKworICAgIHZhciBjb250
ZW50V2luZG93ID0gdGhpcy5fZnJhbWUuY29udGVudFdpbmRvdzsKKyAgICB2YXIgc2VsZiA9IHRo
aXM7CisKKyAgICBzdWl0ZS5ydW4oY29udGVudFdpbmRvdywgdGVzdCwgdGhpcy5fY2xpZW50Lm9w
dGlvbnMsIHRoaXMuX2NsaWVudC5wcm9ncmVzc0JhcikudGhlbihmdW5jdGlvbihzYW1wbGVyKSB7
CisgICAgICAgIHZhciBzYW1wbGVycyA9IHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1aXRlLm5hbWVd
IHx8IHt9OworICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2FtcGxlci50b0pTT04odHJ1
ZSwgdHJ1ZSk7CisgICAgICAgIHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1aXRlLm5hbWVdID0gc2Ft
cGxlcnM7CisKKyAgICAgICAgaWYgKHNlbGYuX2NsaWVudCAmJiBzZWxmLl9jbGllbnQuZGlkUnVu
VGVzdCkKKyAgICAgICAgICAgIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0KHN1aXRlLCB0ZXN0KTsK
KyAgICAgICAgCisgICAgICAgIHN0YXRlLm5leHQoKTsKKyAgICAgICAgaWYgKHN0YXRlLmN1cnJl
bnRTdWl0ZSgpICE9IHN1aXRlKQorICAgICAgICAgICAgc2VsZi5fcmVtb3ZlRnJhbWUoKTsKKyAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKHN0YXRlKTsKKyAgICB9KTsKKyAgICAKKyAgICByZXR1cm4g
cHJvbWlzZTsKK307CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuc3RlcCA9IGZ1bmN0aW9u
KHN0YXRlKQoreworICAgIGlmICghc3RhdGUpIHsKKyAgICAgICAgc3RhdGUgPSBuZXcgQmVuY2ht
YXJrUnVubmVyU3RhdGUodGhpcy5fc3VpdGVzKTsKKyAgICAgICAgdGhpcy5fc3VpdGVzU2FtcGxl
cnMgPSB7fTsKKyAgICB9CisKKyAgICB2YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50U3VpdGUoKTsK
KyAgICBpZiAoIXN1aXRlKSB7CisgICAgICAgIHRoaXMuX2ZpbmFsaXplKCk7CisgICAgICAgIHZh
ciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgp
OworICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGUuaXNGaXJz
dFRlc3QoKSkgeworICAgICAgICB0aGlzLl9hcHBlbmRGcmFtZSgpOworICAgIH0KKworICAgIHJl
dHVybiBzdGF0ZS5wcmVwYXJlQ3VycmVudFRlc3QodGhpcywgdGhpcy5fZnJhbWUpLnRoZW4oZnVu
Y3Rpb24ocHJlcGFyZVJldHVyblZhbHVlKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9ydW5UZXN0
QW5kUmVjb3JkUmVzdWx0cyhzdGF0ZSk7CisgICAgfS5iaW5kKHRoaXMpKTsKK307CisKK0JlbmNo
bWFya1J1bm5lci5wcm90b3R5cGUucnVuQWxsU3RlcHMgPSBmdW5jdGlvbihzdGFydGluZ1N0YXRl
KQoreworICAgIHZhciBuZXh0Q2FsbGVlID0gdGhpcy5ydW5BbGxTdGVwcy5iaW5kKHRoaXMpOwor
ICAgIHRoaXMuc3RlcChzdGFydGluZ1N0YXRlKS50aGVuKGZ1bmN0aW9uKG5leHRTdGF0ZSkgewor
ICAgICAgICBpZiAobmV4dFN0YXRlKQorICAgICAgICAgICAgbmV4dENhbGxlZShuZXh0U3RhdGUp
OworICAgIH0pOworfTsKKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5NdWx0aXBsZUl0
ZXJhdGlvbnMgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIHZhciBj
dXJyZW50SXRlcmF0aW9uID0gMDsKKworICAgIHRoaXMuX3J1bk5leHRJdGVyYXRpb24gPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgY3VycmVudEl0ZXJhdGlvbisrOworICAgICAgICBpZiAoY3VycmVu
dEl0ZXJhdGlvbiA8IHNlbGYuX2NsaWVudC5pdGVyYXRpb25Db3VudCkKKyAgICAgICAgICAgIHNl
bGYucnVuQWxsU3RlcHMoKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMu
X2NsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKQorICAgICAgICAgICAgc2VsZi5fY2xpZW50
LmRpZEZpbmlzaExhc3RJdGVyYXRpb24oKTsKKyAgICB9CisKKyAgICBpZiAoc2VsZi5fY2xpZW50
ICYmIHNlbGYuX2NsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbikKKyAgICAgICAgc2VsZi5f
Y2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKCk7CisKKyAgICBzZWxmLnJ1bkFsbFN0ZXBz
KCk7Cit9OworCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9maW5hbGl6ZSA9IGZ1bmN0aW9u
KCkKK3sKKyAgICB0aGlzLl9yZW1vdmVGcmFtZSgpOworICAgICAgICAKKyAgICBpZiAodGhpcy5f
Y2xpZW50ICYmIHRoaXMuX2NsaWVudC5kaWRSdW5TdWl0ZXMpCisgICAgICAgIHRoaXMuX2NsaWVu
dC5kaWRSdW5TdWl0ZXModGhpcy5fc3VpdGVzU2FtcGxlcnMpOworCisgICAgaWYgKHRoaXMuX3J1
bk5leHRJdGVyYXRpb24pCisgICAgICAgIHRoaXMuX3J1bk5leHRJdGVyYXRpb24oKTsKK307CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1
bm5lci9kMy5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2Rl
YnVnLXJ1bm5lci9kMy5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MWE3YWU5MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
ZXNvdXJjZXMvZGVidWctcnVubmVyL2QzLm1pbi5qcwpAQCAtMCwwICsxLDUgQEAKKyFmdW5jdGlv
bigpe2Z1bmN0aW9uIG4obix0KXtyZXR1cm4gdD5uPy0xOm4+dD8xOm4+PXQ/MDowLzB9ZnVuY3Rp
b24gdChuKXtyZXR1cm4gbnVsbCE9biYmIWlzTmFOKG4pfWZ1bmN0aW9uIGUobil7cmV0dXJue2xl
ZnQ6ZnVuY3Rpb24odCxlLHIsdSl7Zm9yKGFyZ3VtZW50cy5sZW5ndGg8MyYmKHI9MCksYXJndW1l
bnRzLmxlbmd0aDw0JiYodT10Lmxlbmd0aCk7dT5yOyl7dmFyIGk9cit1Pj4+MTtuKHRbaV0sZSk8
MD9yPWkrMTp1PWl9cmV0dXJuIHJ9LHJpZ2h0OmZ1bmN0aW9uKHQsZSxyLHUpe2Zvcihhcmd1bWVu
dHMubGVuZ3RoPDMmJihyPTApLGFyZ3VtZW50cy5sZW5ndGg8NCYmKHU9dC5sZW5ndGgpO3U+cjsp
e3ZhciBpPXIrdT4+PjE7bih0W2ldLGUpPjA/dT1pOnI9aSsxfXJldHVybiByfX19ZnVuY3Rpb24g
cihuKXtyZXR1cm4gbi5sZW5ndGh9ZnVuY3Rpb24gdShuKXtmb3IodmFyIHQ9MTtuKnQlMTspdCo9
MTA7cmV0dXJuIHR9ZnVuY3Rpb24gaShuLHQpe3RyeXtmb3IodmFyIGUgaW4gdClPYmplY3QuZGVm
aW5lUHJvcGVydHkobi5wcm90b3R5cGUsZSx7dmFsdWU6dFtlXSxlbnVtZXJhYmxlOiExfSl9Y2F0
Y2gocil7bi5wcm90b3R5cGU9dH19ZnVuY3Rpb24gbygpe31mdW5jdGlvbiBhKG4pe3JldHVybiBp
YStuIGluIHRoaXN9ZnVuY3Rpb24gYyhuKXtyZXR1cm4gbj1pYStuLG4gaW4gdGhpcyYmZGVsZXRl
IHRoaXNbbl19ZnVuY3Rpb24gcygpe3ZhciBuPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rp
b24odCl7bi5wdXNoKHQpfSksbn1mdW5jdGlvbiBsKCl7dmFyIG49MDtmb3IodmFyIHQgaW4gdGhp
cyl0LmNoYXJDb2RlQXQoMCk9PT1vYSYmKytuO3JldHVybiBufWZ1bmN0aW9uIGYoKXtmb3IodmFy
IG4gaW4gdGhpcylpZihuLmNoYXJDb2RlQXQoMCk9PT1vYSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5j
dGlvbiBoKCl7fWZ1bmN0aW9uIGcobix0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPWUuYXBw
bHkodCxhcmd1bWVudHMpO3JldHVybiByPT09dD9uOnJ9fWZ1bmN0aW9uIHAobix0KXtpZih0IGlu
IG4pcmV0dXJuIHQ7dD10LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyaW5nKDEpO2Zv
cih2YXIgZT0wLHI9YWEubGVuZ3RoO3I+ZTsrK2Upe3ZhciB1PWFhW2VdK3Q7aWYodSBpbiBuKXJl
dHVybiB1fX1mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gbShuKXtmdW5jdGlv
biB0KCl7Zm9yKHZhciB0LHI9ZSx1PS0xLGk9ci5sZW5ndGg7Kyt1PGk7KSh0PXJbdV0ub24pJiZ0
LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbn12YXIgZT1bXSxyPW5ldyBvO3JldHVybiB0
Lm9uPWZ1bmN0aW9uKHQsdSl7dmFyIGksbz1yLmdldCh0KTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aDwyP28mJm8ub246KG8mJihvLm9uPW51bGwsZT1lLnNsaWNlKDAsaT1lLmluZGV4T2YobykpLmNv
bmNhdChlLnNsaWNlKGkrMSkpLHIucmVtb3ZlKHQpKSx1JiZlLnB1c2goci5zZXQodCx7b246dX0p
KSxuKX0sdH1mdW5jdGlvbiB5KCl7Wm8uZXZlbnQucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiB4
KCl7Zm9yKHZhciBuLHQ9Wm8uZXZlbnQ7bj10LnNvdXJjZUV2ZW50Oyl0PW47cmV0dXJuIHR9ZnVu
Y3Rpb24gTShuKXtmb3IodmFyIHQ9bmV3IGQsZT0wLHI9YXJndW1lbnRzLmxlbmd0aDsrK2U8cjsp
dFthcmd1bWVudHNbZV1dPW0odCk7cmV0dXJuIHQub2Y9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZnVu
Y3Rpb24odSl7dHJ5e3ZhciBpPXUuc291cmNlRXZlbnQ9Wm8uZXZlbnQ7dS50YXJnZXQ9bixaby5l
dmVudD11LHRbdS50eXBlXS5hcHBseShlLHIpfWZpbmFsbHl7Wm8uZXZlbnQ9aX19fSx0fWZ1bmN0
aW9uIF8obil7cmV0dXJuIHNhKG4scGEpLG59ZnVuY3Rpb24gYihuKXtyZXR1cm4iZnVuY3Rpb24i
PT10eXBlb2Ygbj9uOmZ1bmN0aW9uKCl7cmV0dXJuIGxhKG4sdGhpcyl9fWZ1bmN0aW9uIHcobil7
cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbigpe3JldHVybiBmYShuLHRoaXMp
fX1mdW5jdGlvbiBTKG4sdCl7ZnVuY3Rpb24gZSgpe3RoaXMucmVtb3ZlQXR0cmlidXRlKG4pfWZ1
bmN0aW9uIHIoKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCl9ZnVuY3Rp
b24gdSgpe3RoaXMuc2V0QXR0cmlidXRlKG4sdCl9ZnVuY3Rpb24gaSgpe3RoaXMuc2V0QXR0cmli
dXRlTlMobi5zcGFjZSxuLmxvY2FsLHQpfWZ1bmN0aW9uIG8oKXt2YXIgZT10LmFwcGx5KHRoaXMs
YXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0cmlidXRlKG4pOnRoaXMuc2V0QXR0cmli
dXRlKG4sZSl9ZnVuY3Rpb24gYSgpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9
PWU/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOnRoaXMuc2V0QXR0cmli
dXRlTlMobi5zcGFjZSxuLmxvY2FsLGUpfXJldHVybiBuPVpvLm5zLnF1YWxpZnkobiksbnVsbD09
dD9uLmxvY2FsP3I6ZToiZnVuY3Rpb24iPT10eXBlb2YgdD9uLmxvY2FsP2E6bzpuLmxvY2FsP2k6
dX1mdW5jdGlvbiBrKG4pe3JldHVybiBuLnRyaW0oKS5yZXBsYWNlKC9ccysvZywiICIpfWZ1bmN0
aW9uIEUobil7cmV0dXJuIG5ldyBSZWdFeHAoIig/Ol58XFxzKykiK1pvLnJlcXVvdGUobikrIig/
Olxccyt8JCkiLCJnIil9ZnVuY3Rpb24gQShuKXtyZXR1cm4obisiIikudHJpbSgpLnNwbGl0KC9e
fFxzKy8pfWZ1bmN0aW9uIEMobix0KXtmdW5jdGlvbiBlKCl7Zm9yKHZhciBlPS0xOysrZTx1Oylu
W2VdKHRoaXMsdCl9ZnVuY3Rpb24gcigpe2Zvcih2YXIgZT0tMSxyPXQuYXBwbHkodGhpcyxhcmd1
bWVudHMpOysrZTx1OyluW2VdKHRoaXMscil9bj1BKG4pLm1hcChOKTt2YXIgdT1uLmxlbmd0aDty
ZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD9yOmV9ZnVuY3Rpb24gTihuKXt2YXIgdD1FKG4pO3Jl
dHVybiBmdW5jdGlvbihlLHIpe2lmKHU9ZS5jbGFzc0xpc3QpcmV0dXJuIHI/dS5hZGQobik6dS5y
ZW1vdmUobik7dmFyIHU9ZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiO3I/KHQubGFzdEluZGV4
PTAsdC50ZXN0KHUpfHxlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGsodSsiICIrbikpKTplLnNldEF0
dHJpYnV0ZSgiY2xhc3MiLGsodS5yZXBsYWNlKHQsIiAiKSkpfX1mdW5jdGlvbiB6KG4sdCxlKXtm
dW5jdGlvbiByKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKX1mdW5jdGlvbiB1KCl7dGhp
cy5zdHlsZS5zZXRQcm9wZXJ0eShuLHQsZSl9ZnVuY3Rpb24gaSgpe3ZhciByPXQuYXBwbHkodGhp
cyxhcmd1bWVudHMpO251bGw9PXI/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKTp0aGlzLnN0
eWxlLnNldFByb3BlcnR5KG4scixlKX1yZXR1cm4gbnVsbD09dD9yOiJmdW5jdGlvbiI9PXR5cGVv
ZiB0P2k6dX1mdW5jdGlvbiBMKG4sdCl7ZnVuY3Rpb24gZSgpe2RlbGV0ZSB0aGlzW25dfWZ1bmN0
aW9uIHIoKXt0aGlzW25dPXR9ZnVuY3Rpb24gdSgpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVu
dHMpO251bGw9PWU/ZGVsZXRlIHRoaXNbbl06dGhpc1tuXT1lfXJldHVybiBudWxsPT10P2U6ImZ1
bmN0aW9uIj09dHlwZW9mIHQ/dTpyfWZ1bmN0aW9uIFQobil7cmV0dXJuImZ1bmN0aW9uIj09dHlw
ZW9mIG4/bjoobj1aby5ucy5xdWFsaWZ5KG4pKS5sb2NhbD9mdW5jdGlvbigpe3JldHVybiB0aGlz
Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG4uc3BhY2Usbi5sb2NhbCl9OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlModGhpcy5uYW1lc3Bh
Y2VVUkksbil9fWZ1bmN0aW9uIHEobil7cmV0dXJue19fZGF0YV9fOm59fWZ1bmN0aW9uIFIobil7
cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGdhKHRoaXMsbil9fWZ1bmN0aW9uIEQodCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGh8fCh0PW4pLGZ1bmN0aW9uKG4sZSl7cmV0dXJuIG4mJmU/dChuLl9f
ZGF0YV9fLGUuX19kYXRhX18pOiFuLSFlfX1mdW5jdGlvbiBQKG4sdCl7Zm9yKHZhciBlPTAscj1u
Lmxlbmd0aDtyPmU7ZSsrKWZvcih2YXIgdSxpPW5bZV0sbz0wLGE9aS5sZW5ndGg7YT5vO28rKyko
dT1pW29dKSYmdCh1LG8sZSk7cmV0dXJuIG59ZnVuY3Rpb24gVShuKXtyZXR1cm4gc2EobixkYSks
bn1mdW5jdGlvbiBqKG4pe3ZhciB0LGU7cmV0dXJuIGZ1bmN0aW9uKHIsdSxpKXt2YXIgbyxhPW5b
aV0udXBkYXRlLGM9YS5sZW5ndGg7Zm9yKGkhPWUmJihlPWksdD0wKSx1Pj10JiYodD11KzEpOyEo
bz1hW3RdKSYmKyt0PGM7KTtyZXR1cm4gb319ZnVuY3Rpb24gSCgpe3ZhciBuPXRoaXMuX190cmFu
c2l0aW9uX187biYmKytuLmFjdGl2ZX1mdW5jdGlvbiBGKG4sdCxlKXtmdW5jdGlvbiByKCl7dmFy
IHQ9dGhpc1tvXTt0JiYodGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4sdCx0LiQpLGRlbGV0ZSB0
aGlzW29dKX1mdW5jdGlvbiB1KCl7dmFyIHU9Yyh0LFhvKGFyZ3VtZW50cykpO3IuY2FsbCh0aGlz
KSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIobix0aGlzW29dPXUsdS4kPWUpLHUuXz10fWZ1bmN0aW9u
IGkoKXt2YXIgdCxlPW5ldyBSZWdFeHAoIl5fX29uKFteLl0rKSIrWm8ucmVxdW90ZShuKSsiJCIp
O2Zvcih2YXIgciBpbiB0aGlzKWlmKHQ9ci5tYXRjaChlKSl7dmFyIHU9dGhpc1tyXTt0aGlzLnJl
bW92ZUV2ZW50TGlzdGVuZXIodFsxXSx1LHUuJCksZGVsZXRlIHRoaXNbcl19fXZhciBvPSJfX29u
IituLGE9bi5pbmRleE9mKCIuIiksYz1PO2E+MCYmKG49bi5zdWJzdHJpbmcoMCxhKSk7dmFyIHM9
eWEuZ2V0KG4pO3JldHVybiBzJiYobj1zLGM9WSksYT90P3U6cjp0P3Y6aX1mdW5jdGlvbiBPKG4s
dCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByPVpvLmV2ZW50O1pvLmV2ZW50PWUsdFswXT10aGlz
Ll9fZGF0YV9fO3RyeXtuLmFwcGx5KHRoaXMsdCl9ZmluYWxseXtaby5ldmVudD1yfX19ZnVuY3Rp
b24gWShuLHQpe3ZhciBlPU8obix0KTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHQ9dGhpcyxyPW4u
cmVsYXRlZFRhcmdldDtyJiYocj09PXR8fDgmci5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSl8
fGUuY2FsbCh0LG4pfX1mdW5jdGlvbiBJKCl7dmFyIG49Ii5kcmFnc3VwcHJlc3MtIisgKytNYSx0
PSJjbGljayIrbixlPVpvLnNlbGVjdChXbykub24oInRvdWNobW92ZSIrbix5KS5vbigiZHJhZ3N0
YXJ0IituLHkpLm9uKCJzZWxlY3RzdGFydCIrbix5KTtpZih4YSl7dmFyIHI9Qm8uc3R5bGUsdT1y
W3hhXTtyW3hhXT0ibm9uZSJ9cmV0dXJuIGZ1bmN0aW9uKGkpe2Z1bmN0aW9uIG8oKXtlLm9uKHQs
bnVsbCl9ZS5vbihuLG51bGwpLHhhJiYoclt4YV09dSksaSYmKGUub24odCxmdW5jdGlvbigpe3ko
KSxvKCl9LCEwKSxzZXRUaW1lb3V0KG8sMCkpfX1mdW5jdGlvbiBaKG4sdCl7dC5jaGFuZ2VkVG91
Y2hlcyYmKHQ9dC5jaGFuZ2VkVG91Y2hlc1swXSk7dmFyIGU9bi5vd25lclNWR0VsZW1lbnR8fG47
aWYoZS5jcmVhdGVTVkdQb2ludCl7dmFyIHI9ZS5jcmVhdGVTVkdQb2ludCgpO2lmKDA+X2EmJihX
by5zY3JvbGxYfHxXby5zY3JvbGxZKSl7ZT1aby5zZWxlY3QoImJvZHkiKS5hcHBlbmQoInN2ZyIp
LnN0eWxlKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCxtYXJnaW46MCxwYWRkaW5n
OjAsYm9yZGVyOiJub25lIn0sImltcG9ydGFudCIpO3ZhciB1PWVbMF1bMF0uZ2V0U2NyZWVuQ1RN
KCk7X2E9ISh1LmZ8fHUuZSksZS5yZW1vdmUoKX1yZXR1cm4gX2E/KHIueD10LnBhZ2VYLHIueT10
LnBhZ2VZKTooci54PXQuY2xpZW50WCxyLnk9dC5jbGllbnRZKSxyPXIubWF0cml4VHJhbnNmb3Jt
KG4uZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSxbci54LHIueV19dmFyIGk9bi5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKTtyZXR1cm5bdC5jbGllbnRYLWkubGVmdC1uLmNsaWVudExlZnQsdC5jbGll
bnRZLWkudG9wLW4uY2xpZW50VG9wXX1mdW5jdGlvbiBWKCl7cmV0dXJuIFpvLmV2ZW50LmNoYW5n
ZWRUb3VjaGVzWzBdLmlkZW50aWZpZXJ9ZnVuY3Rpb24gWCgpe3JldHVybiBaby5ldmVudC50YXJn
ZXR9ZnVuY3Rpb24gJCgpe3JldHVybiBXb31mdW5jdGlvbiBCKG4pe3JldHVybiBuPjA/MTowPm4/
LTE6MH1mdW5jdGlvbiBXKG4sdCxlKXtyZXR1cm4odFswXS1uWzBdKSooZVsxXS1uWzFdKS0odFsx
XS1uWzFdKSooZVswXS1uWzBdKX1mdW5jdGlvbiBKKG4pe3JldHVybiBuPjE/MDotMT5uP2JhOk1h
dGguYWNvcyhuKX1mdW5jdGlvbiBHKG4pe3JldHVybiBuPjE/U2E6LTE+bj8tU2E6TWF0aC5hc2lu
KG4pfWZ1bmN0aW9uIEsobil7cmV0dXJuKChuPU1hdGguZXhwKG4pKS0xL24pLzJ9ZnVuY3Rpb24g
UShuKXtyZXR1cm4oKG49TWF0aC5leHAobikpKzEvbikvMn1mdW5jdGlvbiBudChuKXtyZXR1cm4o
KG49TWF0aC5leHAoMipuKSktMSkvKG4rMSl9ZnVuY3Rpb24gdHQobil7cmV0dXJuKG49TWF0aC5z
aW4obi8yKSkqbn1mdW5jdGlvbiBldCgpe31mdW5jdGlvbiBydChuLHQsZSl7cmV0dXJuIHRoaXMg
aW5zdGFuY2VvZiBydD8odGhpcy5oPStuLHRoaXMucz0rdCx2b2lkKHRoaXMubD0rZSkpOmFyZ3Vt
ZW50cy5sZW5ndGg8Mj9uIGluc3RhbmNlb2YgcnQ/bmV3IHJ0KG4uaCxuLnMsbi5sKTptdCgiIitu
LHl0LHJ0KTpuZXcgcnQobix0LGUpfWZ1bmN0aW9uIHV0KG4sdCxlKXtmdW5jdGlvbiByKG4pe3Jl
dHVybiBuPjM2MD9uLT0zNjA6MD5uJiYobis9MzYwKSw2MD5uP2krKG8taSkqbi82MDoxODA+bj9v
OjI0MD5uP2krKG8taSkqKDI0MC1uKS82MDppfWZ1bmN0aW9uIHUobil7cmV0dXJuIE1hdGgucm91
bmQoMjU1KnIobikpfXZhciBpLG87cmV0dXJuIG49aXNOYU4obik/MDoobiU9MzYwKTwwP24rMzYw
Om4sdD1pc05hTih0KT8wOjA+dD8wOnQ+MT8xOnQsZT0wPmU/MDplPjE/MTplLG89LjU+PWU/ZSoo
MSt0KTplK3QtZSp0LGk9MiplLW8sbmV3IGd0KHUobisxMjApLHUobiksdShuLTEyMCkpfWZ1bmN0
aW9uIGl0KG4sdCxlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGl0Pyh0aGlzLmg9K24sdGhpcy5j
PSt0LHZvaWQodGhpcy5sPStlKSk6YXJndW1lbnRzLmxlbmd0aDwyP24gaW5zdGFuY2VvZiBpdD9u
ZXcgaXQobi5oLG4uYyxuLmwpOm4gaW5zdGFuY2VvZiBhdD9zdChuLmwsbi5hLG4uYik6c3QoKG49
eHQoKG49Wm8ucmdiKG4pKS5yLG4uZyxuLmIpKS5sLG4uYSxuLmIpOm5ldyBpdChuLHQsZSl9ZnVu
Y3Rpb24gb3Qobix0LGUpe3JldHVybiBpc05hTihuKSYmKG49MCksaXNOYU4odCkmJih0PTApLG5l
dyBhdChlLE1hdGguY29zKG4qPUFhKSp0LE1hdGguc2luKG4pKnQpfWZ1bmN0aW9uIGF0KG4sdCxl
KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGF0Pyh0aGlzLmw9K24sdGhpcy5hPSt0LHZvaWQodGhp
cy5iPStlKSk6YXJndW1lbnRzLmxlbmd0aDwyP24gaW5zdGFuY2VvZiBhdD9uZXcgYXQobi5sLG4u
YSxuLmIpOm4gaW5zdGFuY2VvZiBpdD9vdChuLmwsbi5jLG4uaCk6eHQoKG49Z3QobikpLnIsbi5n
LG4uYik6bmV3IGF0KG4sdCxlKX1mdW5jdGlvbiBjdChuLHQsZSl7dmFyIHI9KG4rMTYpLzExNix1
PXIrdC81MDAsaT1yLWUvMjAwO3JldHVybiB1PWx0KHUpKmphLHI9bHQocikqSGEsaT1sdChpKSpG
YSxuZXcgZ3QoaHQoMy4yNDA0NTQyKnUtMS41MzcxMzg1KnItLjQ5ODUzMTQqaSksaHQoLS45Njky
NjYqdSsxLjg3NjAxMDgqcisuMDQxNTU2KmkpLGh0KC4wNTU2NDM0KnUtLjIwNDAyNTkqcisxLjA1
NzIyNTIqaSkpfWZ1bmN0aW9uIHN0KG4sdCxlKXtyZXR1cm4gbj4wP25ldyBpdChNYXRoLmF0YW4y
KGUsdCkqQ2EsTWF0aC5zcXJ0KHQqdCtlKmUpLG4pOm5ldyBpdCgwLzAsMC8wLG4pfWZ1bmN0aW9u
IGx0KG4pe3JldHVybiBuPi4yMDY4OTMwMzQ/bipuKm46KG4tNC8yOSkvNy43ODcwMzd9ZnVuY3Rp
b24gZnQobil7cmV0dXJuIG4+LjAwODg1Nj9NYXRoLnBvdyhuLDEvMyk6Ny43ODcwMzcqbis0LzI5
fWZ1bmN0aW9uIGh0KG4pe3JldHVybiBNYXRoLnJvdW5kKDI1NSooLjAwMzA0Pj1uPzEyLjkyKm46
MS4wNTUqTWF0aC5wb3cobiwxLzIuNCktLjA1NSkpfWZ1bmN0aW9uIGd0KG4sdCxlKXtyZXR1cm4g
dGhpcyBpbnN0YW5jZW9mIGd0Pyh0aGlzLnI9fn5uLHRoaXMuZz1+fnQsdm9pZCh0aGlzLmI9fn5l
KSk6YXJndW1lbnRzLmxlbmd0aDwyP24gaW5zdGFuY2VvZiBndD9uZXcgZ3Qobi5yLG4uZyxuLmIp
Om10KCIiK24sZ3QsdXQpOm5ldyBndChuLHQsZSl9ZnVuY3Rpb24gcHQobil7cmV0dXJuIG5ldyBn
dChuPj4xNiwyNTUmbj4+OCwyNTUmbil9ZnVuY3Rpb24gdnQobil7cmV0dXJuIHB0KG4pKyIifWZ1
bmN0aW9uIGR0KG4pe3JldHVybiAxNj5uPyIwIitNYXRoLm1heCgwLG4pLnRvU3RyaW5nKDE2KTpN
YXRoLm1pbigyNTUsbikudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIG10KG4sdCxlKXt2YXIgcix1LGks
bz0wLGE9MCxjPTA7aWYocj0vKFthLXpdKylcKCguKilcKS9pLmV4ZWMobikpc3dpdGNoKHU9clsy
XS5zcGxpdCgiLCIpLHJbMV0pe2Nhc2UiaHNsIjpyZXR1cm4gZShwYXJzZUZsb2F0KHVbMF0pLHBh
cnNlRmxvYXQodVsxXSkvMTAwLHBhcnNlRmxvYXQodVsyXSkvMTAwKTtjYXNlInJnYiI6cmV0dXJu
IHQoX3QodVswXSksX3QodVsxXSksX3QodVsyXSkpfXJldHVybihpPUlhLmdldChuKSk/dChpLnIs
aS5nLGkuYik6KG51bGw9PW58fCIjIiE9PW4uY2hhckF0KDApfHxpc05hTihpPXBhcnNlSW50KG4u
c3Vic3RyaW5nKDEpLDE2KSl8fCg0PT09bi5sZW5ndGg/KG89KDM4NDAmaSk+PjQsbz1vPj40fG8s
YT0yNDAmaSxhPWE+PjR8YSxjPTE1JmksYz1jPDw0fGMpOjc9PT1uLmxlbmd0aCYmKG89KDE2NzEx
NjgwJmkpPj4xNixhPSg2NTI4MCZpKT4+OCxjPTI1NSZpKSksdChvLGEsYykpfWZ1bmN0aW9uIHl0
KG4sdCxlKXt2YXIgcix1LGk9TWF0aC5taW4obi89MjU1LHQvPTI1NSxlLz0yNTUpLG89TWF0aC5t
YXgobix0LGUpLGE9by1pLGM9KG8raSkvMjtyZXR1cm4gYT8odT0uNT5jP2EvKG8raSk6YS8oMi1v
LWkpLHI9bj09bz8odC1lKS9hKyhlPnQ/NjowKTp0PT1vPyhlLW4pL2ErMjoobi10KS9hKzQscio9
NjApOihyPTAvMCx1PWM+MCYmMT5jPzA6ciksbmV3IHJ0KHIsdSxjKX1mdW5jdGlvbiB4dChuLHQs
ZSl7bj1NdChuKSx0PU10KHQpLGU9TXQoZSk7dmFyIHI9ZnQoKC40MTI0NTY0Km4rLjM1NzU3NjEq
dCsuMTgwNDM3NSplKS9qYSksdT1mdCgoLjIxMjY3MjkqbisuNzE1MTUyMip0Ky4wNzIxNzUqZSkv
SGEpLGk9ZnQoKC4wMTkzMzM5Km4rLjExOTE5Mip0Ky45NTAzMDQxKmUpL0ZhKTtyZXR1cm4gYXQo
MTE2KnUtMTYsNTAwKihyLXUpLDIwMCoodS1pKSl9ZnVuY3Rpb24gTXQobil7cmV0dXJuKG4vPTI1
NSk8PS4wNDA0NT9uLzEyLjkyOk1hdGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24g
X3Qobil7dmFyIHQ9cGFyc2VGbG9hdChuKTtyZXR1cm4iJSI9PT1uLmNoYXJBdChuLmxlbmd0aC0x
KT9NYXRoLnJvdW5kKDIuNTUqdCk6dH1mdW5jdGlvbiBidChuKXtyZXR1cm4iZnVuY3Rpb24iPT10
eXBlb2Ygbj9uOmZ1bmN0aW9uKCl7cmV0dXJuIG59fWZ1bmN0aW9uIHd0KG4pe3JldHVybiBufWZ1
bmN0aW9uIFN0KG4pe3JldHVybiBmdW5jdGlvbih0LGUscil7cmV0dXJuIDI9PT1hcmd1bWVudHMu
bGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgZSYmKHI9ZSxlPW51bGwpLGt0KHQsZSxuLHIpfX1m
dW5jdGlvbiBrdChuLHQsZSxyKXtmdW5jdGlvbiB1KCl7dmFyIG4sdD1jLnN0YXR1cztpZighdCYm
Yy5yZXNwb25zZVRleHR8fHQ+PTIwMCYmMzAwPnR8fDMwND09PXQpe3RyeXtuPWUuY2FsbChpLGMp
fWNhdGNoKHIpe3JldHVybiBvLmVycm9yLmNhbGwoaSxyKSx2b2lkIDB9by5sb2FkLmNhbGwoaSxu
KX1lbHNlIG8uZXJyb3IuY2FsbChpLGMpfXZhciBpPXt9LG89Wm8uZGlzcGF0Y2goImJlZm9yZXNl
bmQiLCJwcm9ncmVzcyIsImxvYWQiLCJlcnJvciIpLGE9e30sYz1uZXcgWE1MSHR0cFJlcXVlc3Qs
cz1udWxsO3JldHVybiFXby5YRG9tYWluUmVxdWVzdHx8IndpdGhDcmVkZW50aWFscyJpbiBjfHwh
L14oaHR0cChzKT86KT9cL1wvLy50ZXN0KG4pfHwoYz1uZXcgWERvbWFpblJlcXVlc3QpLCJvbmxv
YWQiaW4gYz9jLm9ubG9hZD1jLm9uZXJyb3I9dTpjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlv
bigpe2MucmVhZHlTdGF0ZT4zJiZ1KCl9LGMub25wcm9ncmVzcz1mdW5jdGlvbihuKXt2YXIgdD1a
by5ldmVudDtaby5ldmVudD1uO3RyeXtvLnByb2dyZXNzLmNhbGwoaSxjKX1maW5hbGx5e1pvLmV2
ZW50PXR9fSxpLmhlYWRlcj1mdW5jdGlvbihuLHQpe3JldHVybiBuPShuKyIiKS50b0xvd2VyQ2Fz
ZSgpLGFyZ3VtZW50cy5sZW5ndGg8Mj9hW25dOihudWxsPT10P2RlbGV0ZSBhW25dOmFbbl09dCsi
IixpKX0saS5taW1lVHlwZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1u
dWxsPT1uP251bGw6bisiIixpKTp0fSxpLnJlc3BvbnNlVHlwZT1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8ocz1uLGkpOnN9LGkucmVzcG9uc2U9ZnVuY3Rpb24obil7cmV0dXJu
IGU9bixpfSxbImdldCIsInBvc3QiXS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lbbl09ZnVuY3Rpb24o
KXtyZXR1cm4gaS5zZW5kLmFwcGx5KGksW25dLmNvbmNhdChYbyhhcmd1bWVudHMpKSl9fSksaS5z
ZW5kPWZ1bmN0aW9uKGUscix1KXtpZigyPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09
dHlwZW9mIHImJih1PXIscj1udWxsKSxjLm9wZW4oZSxuLCEwKSxudWxsPT10fHwiYWNjZXB0Imlu
IGF8fChhLmFjY2VwdD10KyIsKi8qIiksYy5zZXRSZXF1ZXN0SGVhZGVyKWZvcih2YXIgbCBpbiBh
KWMuc2V0UmVxdWVzdEhlYWRlcihsLGFbbF0pO3JldHVybiBudWxsIT10JiZjLm92ZXJyaWRlTWlt
ZVR5cGUmJmMub3ZlcnJpZGVNaW1lVHlwZSh0KSxudWxsIT1zJiYoYy5yZXNwb25zZVR5cGU9cyks
bnVsbCE9dSYmaS5vbigiZXJyb3IiLHUpLm9uKCJsb2FkIixmdW5jdGlvbihuKXt1KG51bGwsbil9
KSxvLmJlZm9yZXNlbmQuY2FsbChpLGMpLGMuc2VuZChudWxsPT1yP251bGw6ciksaX0saS5hYm9y
dD1mdW5jdGlvbigpe3JldHVybiBjLmFib3J0KCksaX0sWm8ucmViaW5kKGksbywib24iKSxudWxs
PT1yP2k6aS5nZXQoRXQocikpfWZ1bmN0aW9uIEV0KG4pe3JldHVybiAxPT09bi5sZW5ndGg/ZnVu
Y3Rpb24odCxlKXtuKG51bGw9PXQ/ZTpudWxsKX06bn1mdW5jdGlvbiBBdCgpe3ZhciBuPUN0KCks
dD1OdCgpLW47dD4yND8oaXNGaW5pdGUodCkmJihjbGVhclRpbWVvdXQoJGEpLCRhPXNldFRpbWVv
dXQoQXQsdCkpLFhhPTApOihYYT0xLFdhKEF0KSl9ZnVuY3Rpb24gQ3QoKXt2YXIgbj1EYXRlLm5v
dygpO2ZvcihCYT1aYTtCYTspbj49QmEudCYmKEJhLmY9QmEuYyhuLUJhLnQpKSxCYT1CYS5uO3Jl
dHVybiBufWZ1bmN0aW9uIE50KCl7Zm9yKHZhciBuLHQ9WmEsZT0xLzA7dDspdC5mP3Q9bj9uLm49
dC5uOlphPXQubjoodC50PGUmJihlPXQudCksdD0obj10KS5uKTtyZXR1cm4gVmE9bixlfWZ1bmN0
aW9uIHp0KG4sdCl7cmV0dXJuIHQtKG4/TWF0aC5jZWlsKE1hdGgubG9nKG4pL01hdGguTE4xMCk6
MSl9ZnVuY3Rpb24gTHQobix0KXt2YXIgZT1NYXRoLnBvdygxMCwzKnVhKDgtdCkpO3JldHVybntz
Y2FsZTp0Pjg/ZnVuY3Rpb24obil7cmV0dXJuIG4vZX06ZnVuY3Rpb24obil7cmV0dXJuIG4qZX0s
c3ltYm9sOm59fWZ1bmN0aW9uIFR0KG4pe3ZhciB0PW4uZGVjaW1hbCxlPW4udGhvdXNhbmRzLHI9
bi5ncm91cGluZyx1PW4uY3VycmVuY3ksaT1yP2Z1bmN0aW9uKG4pe2Zvcih2YXIgdD1uLmxlbmd0
aCx1PVtdLGk9MCxvPXJbMF07dD4wJiZvPjA7KXUucHVzaChuLnN1YnN0cmluZyh0LT1vLHQrbykp
LG89cltpPShpKzEpJXIubGVuZ3RoXTtyZXR1cm4gdS5yZXZlcnNlKCkuam9pbihlKX06d3Q7cmV0
dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPUdhLmV4ZWMobikscj1lWzFdfHwiICIsbz1lWzJdfHwiPiIs
YT1lWzNdfHwiIixjPWVbNF18fCIiLHM9ZVs1XSxsPStlWzZdLGY9ZVs3XSxoPWVbOF0sZz1lWzld
LHA9MSx2PSIiLGQ9IiIsbT0hMTtzd2l0Y2goaCYmKGg9K2guc3Vic3RyaW5nKDEpKSwoc3x8IjAi
PT09ciYmIj0iPT09bykmJihzPXI9IjAiLG89Ij0iLGYmJihsLT1NYXRoLmZsb29yKChsLTEpLzQp
KSksZyl7Y2FzZSJuIjpmPSEwLGc9ImciO2JyZWFrO2Nhc2UiJSI6cD0xMDAsZD0iJSIsZz0iZiI7
YnJlYWs7Y2FzZSJwIjpwPTEwMCxkPSIlIixnPSJyIjticmVhaztjYXNlImIiOmNhc2UibyI6Y2Fz
ZSJ4IjpjYXNlIlgiOiIjIj09PWMmJih2PSIwIitnLnRvTG93ZXJDYXNlKCkpO2Nhc2UiYyI6Y2Fz
ZSJkIjptPSEwLGg9MDticmVhaztjYXNlInMiOnA9LTEsZz0iciJ9IiQiPT09YyYmKHY9dVswXSxk
PXVbMV0pLCJyIiE9Z3x8aHx8KGc9ImciKSxudWxsIT1oJiYoImciPT1nP2g9TWF0aC5tYXgoMSxN
YXRoLm1pbigyMSxoKSk6KCJlIj09Z3x8ImYiPT1nKSYmKGg9TWF0aC5tYXgoMCxNYXRoLm1pbigy
MCxoKSkpKSxnPUthLmdldChnKXx8cXQ7dmFyIHk9cyYmZjtyZXR1cm4gZnVuY3Rpb24obil7dmFy
IGU9ZDtpZihtJiZuJTEpcmV0dXJuIiI7dmFyIHU9MD5ufHwwPT09biYmMD4xL24/KG49LW4sIi0i
KTphO2lmKDA+cCl7dmFyIGM9Wm8uZm9ybWF0UHJlZml4KG4saCk7bj1jLnNjYWxlKG4pLGU9Yy5z
eW1ib2wrZH1lbHNlIG4qPXA7bj1nKG4saCk7dmFyIHg9bi5sYXN0SW5kZXhPZigiLiIpLE09MD54
P246bi5zdWJzdHJpbmcoMCx4KSxfPTA+eD8iIjp0K24uc3Vic3RyaW5nKHgrMSk7IXMmJmYmJihN
PWkoTSkpO3ZhciBiPXYubGVuZ3RoK00ubGVuZ3RoK18ubGVuZ3RoKyh5PzA6dS5sZW5ndGgpLHc9
bD5iP25ldyBBcnJheShiPWwtYisxKS5qb2luKHIpOiIiO3JldHVybiB5JiYoTT1pKHcrTSkpLHUr
PXYsbj1NK18sKCI8Ij09PW8/dStuK3c6Ij4iPT09bz93K3UrbjoiXiI9PT1vP3cuc3Vic3RyaW5n
KDAsYj4+PTEpK3Urbit3LnN1YnN0cmluZyhiKTp1Kyh5P246dytuKSkrZX19fWZ1bmN0aW9uIHF0
KG4pe3JldHVybiBuKyIifWZ1bmN0aW9uIFJ0KCl7dGhpcy5fPW5ldyBEYXRlKGFyZ3VtZW50cy5s
ZW5ndGg+MT9EYXRlLlVUQy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6YXJndW1lbnRzWzBdKX1mdW5j
dGlvbiBEdChuLHQsZSl7ZnVuY3Rpb24gcih0KXt2YXIgZT1uKHQpLHI9aShlLDEpO3JldHVybiBy
LXQ+dC1lP2U6cn1mdW5jdGlvbiB1KGUpe3JldHVybiB0KGU9bihuZXcgbmMoZS0xKSksMSksZX1m
dW5jdGlvbiBpKG4sZSl7cmV0dXJuIHQobj1uZXcgbmMoK24pLGUpLG59ZnVuY3Rpb24gbyhuLHIs
aSl7dmFyIG89dShuKSxhPVtdO2lmKGk+MSlmb3IoO3I+bzspZShvKSVpfHxhLnB1c2gobmV3IERh
dGUoK28pKSx0KG8sMSk7ZWxzZSBmb3IoO3I+bzspYS5wdXNoKG5ldyBEYXRlKCtvKSksdChvLDEp
O3JldHVybiBhfWZ1bmN0aW9uIGEobix0LGUpe3RyeXtuYz1SdDt2YXIgcj1uZXcgUnQ7cmV0dXJu
IHIuXz1uLG8ocix0LGUpfWZpbmFsbHl7bmM9RGF0ZX19bi5mbG9vcj1uLG4ucm91bmQ9cixuLmNl
aWw9dSxuLm9mZnNldD1pLG4ucmFuZ2U9bzt2YXIgYz1uLnV0Yz1QdChuKTtyZXR1cm4gYy5mbG9v
cj1jLGMucm91bmQ9UHQociksYy5jZWlsPVB0KHUpLGMub2Zmc2V0PVB0KGkpLGMucmFuZ2U9YSxu
fWZ1bmN0aW9uIFB0KG4pe3JldHVybiBmdW5jdGlvbih0LGUpe3RyeXtuYz1SdDt2YXIgcj1uZXcg
UnQ7cmV0dXJuIHIuXz10LG4ocixlKS5ffWZpbmFsbHl7bmM9RGF0ZX19fWZ1bmN0aW9uIFV0KG4p
e2Z1bmN0aW9uIHQobil7ZnVuY3Rpb24gdCh0KXtmb3IodmFyIGUsdSxpLG89W10sYT0tMSxjPTA7
KythPHI7KTM3PT09bi5jaGFyQ29kZUF0KGEpJiYoby5wdXNoKG4uc3Vic3RyaW5nKGMsYSkpLG51
bGwhPSh1PWVjW2U9bi5jaGFyQXQoKythKV0pJiYoZT1uLmNoYXJBdCgrK2EpKSwoaT1DW2VdKSYm
KGU9aSh0LG51bGw9PXU/ImUiPT09ZT8iICI6IjAiOnUpKSxvLnB1c2goZSksYz1hKzEpO3JldHVy
biBvLnB1c2gobi5zdWJzdHJpbmcoYyxhKSksby5qb2luKCIiKX12YXIgcj1uLmxlbmd0aDtyZXR1
cm4gdC5wYXJzZT1mdW5jdGlvbih0KXt2YXIgcj17eToxOTAwLG06MCxkOjEsSDowLE06MCxTOjAs
TDowLFo6bnVsbH0sdT1lKHIsbix0LDApO2lmKHUhPXQubGVuZ3RoKXJldHVybiBudWxsOyJwImlu
IHImJihyLkg9ci5IJTEyKzEyKnIucCk7dmFyIGk9bnVsbCE9ci5aJiZuYyE9PVJ0LG89bmV3KGk/
UnQ6bmMpO3JldHVybiJqImluIHI/by5zZXRGdWxsWWVhcihyLnksMCxyLmopOiJ3ImluIHImJigi
VyJpbiByfHwiVSJpbiByKT8oby5zZXRGdWxsWWVhcihyLnksMCwxKSxvLnNldEZ1bGxZZWFyKHIu
eSwwLCJXImluIHI/KHIudys2KSU3Kzcqci5XLShvLmdldERheSgpKzUpJTc6ci53Kzcqci5VLShv
LmdldERheSgpKzYpJTcpKTpvLnNldEZ1bGxZZWFyKHIueSxyLm0sci5kKSxvLnNldEhvdXJzKHIu
SCtNYXRoLmZsb29yKHIuWi8xMDApLHIuTStyLlolMTAwLHIuUyxyLkwpLGk/by5fOm99LHQudG9T
dHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sdH1mdW5jdGlvbiBlKG4sdCxlLHIpe2Zvcih2YXIg
dSxpLG8sYT0wLGM9dC5sZW5ndGgscz1lLmxlbmd0aDtjPmE7KXtpZihyPj1zKXJldHVybi0xO2lm
KHU9dC5jaGFyQ29kZUF0KGErKyksMzc9PT11KXtpZihvPXQuY2hhckF0KGErKyksaT1OW28gaW4g
ZWM/dC5jaGFyQXQoYSsrKTpvXSwhaXx8KHI9aShuLGUscikpPDApcmV0dXJuLTF9ZWxzZSBpZih1
IT1lLmNoYXJDb2RlQXQocisrKSlyZXR1cm4tMX1yZXR1cm4gcn1mdW5jdGlvbiByKG4sdCxlKXti
Lmxhc3RJbmRleD0wO3ZhciByPWIuZXhlYyh0LnN1YnN0cmluZyhlKSk7cmV0dXJuIHI/KG4udz13
LmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHUobix0
LGUpe00ubGFzdEluZGV4PTA7dmFyIHI9TS5leGVjKHQuc3Vic3RyaW5nKGUpKTtyZXR1cm4gcj8o
bi53PV8uZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24g
aShuLHQsZSl7RS5sYXN0SW5kZXg9MDt2YXIgcj1FLmV4ZWModC5zdWJzdHJpbmcoZSkpO3JldHVy
biByPyhuLm09QS5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5j
dGlvbiBvKG4sdCxlKXtTLmxhc3RJbmRleD0wO3ZhciByPVMuZXhlYyh0LnN1YnN0cmluZyhlKSk7
cmV0dXJuIHI/KG4ubT1rLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5sZW5ndGgpOi0x
fWZ1bmN0aW9uIGEobix0LHIpe3JldHVybiBlKG4sQy5jLnRvU3RyaW5nKCksdCxyKX1mdW5jdGlv
biBjKG4sdCxyKXtyZXR1cm4gZShuLEMueC50b1N0cmluZygpLHQscil9ZnVuY3Rpb24gcyhuLHQs
cil7cmV0dXJuIGUobixDLlgudG9TdHJpbmcoKSx0LHIpfWZ1bmN0aW9uIGwobix0LGUpe3ZhciBy
PXguZ2V0KHQuc3Vic3RyaW5nKGUsZSs9MikudG9Mb3dlckNhc2UoKSk7cmV0dXJuIG51bGw9PXI/
LTE6KG4ucD1yLGUpfXZhciBmPW4uZGF0ZVRpbWUsaD1uLmRhdGUsZz1uLnRpbWUscD1uLnBlcmlv
ZHMsdj1uLmRheXMsZD1uLnNob3J0RGF5cyxtPW4ubW9udGhzLHk9bi5zaG9ydE1vbnRoczt0LnV0
Yz1mdW5jdGlvbihuKXtmdW5jdGlvbiBlKG4pe3RyeXtuYz1SdDt2YXIgdD1uZXcgbmM7cmV0dXJu
IHQuXz1uLHIodCl9ZmluYWxseXtuYz1EYXRlfX12YXIgcj10KG4pO3JldHVybiBlLnBhcnNlPWZ1
bmN0aW9uKG4pe3RyeXtuYz1SdDt2YXIgdD1yLnBhcnNlKG4pO3JldHVybiB0JiZ0Ll99ZmluYWxs
eXtuYz1EYXRlfX0sZS50b1N0cmluZz1yLnRvU3RyaW5nLGV9LHQubXVsdGk9dC51dGMubXVsdGk9
cmU7dmFyIHg9Wm8ubWFwKCksTT1IdCh2KSxfPUZ0KHYpLGI9SHQoZCksdz1GdChkKSxTPUh0KG0p
LGs9RnQobSksRT1IdCh5KSxBPUZ0KHkpO3AuZm9yRWFjaChmdW5jdGlvbihuLHQpe3guc2V0KG4u
dG9Mb3dlckNhc2UoKSx0KX0pO3ZhciBDPXthOmZ1bmN0aW9uKG4pe3JldHVybiBkW24uZ2V0RGF5
KCldfSxBOmZ1bmN0aW9uKG4pe3JldHVybiB2W24uZ2V0RGF5KCldfSxiOmZ1bmN0aW9uKG4pe3Jl
dHVybiB5W24uZ2V0TW9udGgoKV19LEI6ZnVuY3Rpb24obil7cmV0dXJuIG1bbi5nZXRNb250aCgp
XX0sYzp0KGYpLGQ6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobi5nZXREYXRlKCksdCwyKX0sZTpm
dW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldERhdGUoKSx0LDIpfSxIOmZ1bmN0aW9uKG4sdCl7
cmV0dXJuIGp0KG4uZ2V0SG91cnMoKSx0LDIpfSxJOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4u
Z2V0SG91cnMoKSUxMnx8MTIsdCwyKX0sajpmdW5jdGlvbihuLHQpe3JldHVybiBqdCgxK1FhLmRh
eU9mWWVhcihuKSx0LDMpfSxMOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0TWlsbGlzZWNv
bmRzKCksdCwzKX0sbTpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldE1vbnRoKCkrMSx0LDIp
fSxNOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0TWludXRlcygpLHQsMil9LHA6ZnVuY3Rp
b24obil7cmV0dXJuIHBbKyhuLmdldEhvdXJzKCk+PTEyKV19LFM6ZnVuY3Rpb24obix0KXtyZXR1
cm4ganQobi5nZXRTZWNvbmRzKCksdCwyKX0sVTpmdW5jdGlvbihuLHQpe3JldHVybiBqdChRYS5z
dW5kYXlPZlllYXIobiksdCwyKX0sdzpmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXREYXkoKX0sVzpm
dW5jdGlvbihuLHQpe3JldHVybiBqdChRYS5tb25kYXlPZlllYXIobiksdCwyKX0seDp0KGgpLFg6
dChnKSx5OmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0RnVsbFllYXIoKSUxMDAsdCwyKX0s
WTpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldEZ1bGxZZWFyKCklMWU0LHQsNCl9LFo6dGUs
IiUiOmZ1bmN0aW9uKCl7cmV0dXJuIiUifX0sTj17YTpyLEE6dSxiOmksQjpvLGM6YSxkOld0LGU6
V3QsSDpHdCxJOkd0LGo6SnQsTDpuZSxtOkJ0LE06S3QscDpsLFM6UXQsVTpZdCx3Ok90LFc6SXQs
eDpjLFg6cyx5OlZ0LFk6WnQsWjpYdCwiJSI6ZWV9O3JldHVybiB0fWZ1bmN0aW9uIGp0KG4sdCxl
KXt2YXIgcj0wPm4/Ii0iOiIiLHU9KHI/LW46bikrIiIsaT11Lmxlbmd0aDtyZXR1cm4gcisoZT5p
P25ldyBBcnJheShlLWkrMSkuam9pbih0KSt1OnUpfWZ1bmN0aW9uIEh0KG4pe3JldHVybiBuZXcg
UmVnRXhwKCJeKD86IituLm1hcChaby5yZXF1b3RlKS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rp
b24gRnQobil7Zm9yKHZhciB0PW5ldyBvLGU9LTEscj1uLmxlbmd0aDsrK2U8cjspdC5zZXQobltl
XS50b0xvd2VyQ2FzZSgpLGUpO3JldHVybiB0fWZ1bmN0aW9uIE90KG4sdCxlKXtyYy5sYXN0SW5k
ZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSsxKSk7cmV0dXJuIHI/KG4udz0rclsw
XSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBZdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFy
IHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlKSk7cmV0dXJuIHI/KG4uVT0rclswXSxlK3JbMF0ubGVu
Z3RoKTotMX1mdW5jdGlvbiBJdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0
LnN1YnN0cmluZyhlKSk7cmV0dXJuIHI/KG4uVz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5j
dGlvbiBadChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhl
LGUrNCkpO3JldHVybiByPyhuLnk9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gVnQo
bix0LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzIpKTty
ZXR1cm4gcj8obi55PSR0KCtyWzBdKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBYdChuLHQs
ZSl7cmV0dXJuL15bKy1dXGR7NH0kLy50ZXN0KHQ9dC5zdWJzdHJpbmcoZSxlKzUpKT8obi5aPS10
LGUrNSk6LTF9ZnVuY3Rpb24gJHQobil7cmV0dXJuIG4rKG4+Njg/MTkwMDoyZTMpfWZ1bmN0aW9u
IEJ0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSsy
KSk7cmV0dXJuIHI/KG4ubT1yWzBdLTEsZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gV3Qobix0
LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzIpKTtyZXR1
cm4gcj8obi5kPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEp0KG4sdCxlKXtyYy5s
YXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSszKSk7cmV0dXJuIHI/KG4u
aj0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBHdChuLHQsZSl7cmMubGFzdEluZGV4
PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhuLkg9K3JbMF0s
ZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gS3Qobix0LGUpe3JjLmxhc3RJbmRleD0wO3ZhciBy
PXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzIpKTtyZXR1cm4gcj8obi5NPStyWzBdLGUrclswXS5s
ZW5ndGgpOi0xfWZ1bmN0aW9uIFF0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVj
KHQuc3Vic3RyaW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4uUz0rclswXSxlK3JbMF0ubGVuZ3RoKTot
MX1mdW5jdGlvbiBuZShuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0
cmluZyhlLGUrMykpO3JldHVybiByPyhuLkw9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rp
b24gdGUobil7dmFyIHQ9bi5nZXRUaW1lem9uZU9mZnNldCgpLGU9dD4wPyItIjoiKyIscj1+fih1
YSh0KS82MCksdT11YSh0KSU2MDtyZXR1cm4gZStqdChyLCIwIiwyKStqdCh1LCIwIiwyKX1mdW5j
dGlvbiBlZShuLHQsZSl7dWMubGFzdEluZGV4PTA7dmFyIHI9dWMuZXhlYyh0LnN1YnN0cmluZyhl
LGUrMSkpO3JldHVybiByP2UrclswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gcmUobil7Zm9yKHZhciB0
PW4ubGVuZ3RoLGU9LTE7KytlPHQ7KW5bZV1bMF09dGhpcyhuW2VdWzBdKTtyZXR1cm4gZnVuY3Rp
b24odCl7Zm9yKHZhciBlPTAscj1uW2VdOyFyWzFdKHQpOylyPW5bKytlXTtyZXR1cm4gclswXSh0
KX19ZnVuY3Rpb24gdWUoKXt9ZnVuY3Rpb24gaWUobix0LGUpe3ZhciByPWUucz1uK3QsdT1yLW4s
aT1yLXU7ZS50PW4taSsodC11KX1mdW5jdGlvbiBvZShuLHQpe24mJmNjLmhhc093blByb3BlcnR5
KG4udHlwZSkmJmNjW24udHlwZV0obix0KX1mdW5jdGlvbiBhZShuLHQsZSl7dmFyIHIsdT0tMSxp
PW4ubGVuZ3RoLWU7Zm9yKHQubGluZVN0YXJ0KCk7Kyt1PGk7KXI9blt1XSx0LnBvaW50KHJbMF0s
clsxXSxyWzJdKTt0LmxpbmVFbmQoKX1mdW5jdGlvbiBjZShuLHQpe3ZhciBlPS0xLHI9bi5sZW5n
dGg7Zm9yKHQucG9seWdvblN0YXJ0KCk7KytlPHI7KWFlKG5bZV0sdCwxKTt0LnBvbHlnb25FbmQo
KX1mdW5jdGlvbiBzZSgpe2Z1bmN0aW9uIG4obix0KXtuKj1BYSx0PXQqQWEvMitiYS80O3ZhciBl
PW4tcixvPWU+PTA/MTotMSxhPW8qZSxjPU1hdGguY29zKHQpLHM9TWF0aC5zaW4odCksbD1pKnMs
Zj11KmMrbCpNYXRoLmNvcyhhKSxoPWwqbypNYXRoLnNpbihhKTtsYy5hZGQoTWF0aC5hdGFuMiho
LGYpKSxyPW4sdT1jLGk9c312YXIgdCxlLHIsdSxpO2ZjLnBvaW50PWZ1bmN0aW9uKG8sYSl7ZmMu
cG9pbnQ9bixyPSh0PW8pKkFhLHU9TWF0aC5jb3MoYT0oZT1hKSpBYS8yK2JhLzQpLGk9TWF0aC5z
aW4oYSl9LGZjLmxpbmVFbmQ9ZnVuY3Rpb24oKXtuKHQsZSl9fWZ1bmN0aW9uIGxlKG4pe3ZhciB0
PW5bMF0sZT1uWzFdLHI9TWF0aC5jb3MoZSk7cmV0dXJuW3IqTWF0aC5jb3ModCkscipNYXRoLnNp
bih0KSxNYXRoLnNpbihlKV19ZnVuY3Rpb24gZmUobix0KXtyZXR1cm4gblswXSp0WzBdK25bMV0q
dFsxXStuWzJdKnRbMl19ZnVuY3Rpb24gaGUobix0KXtyZXR1cm5bblsxXSp0WzJdLW5bMl0qdFsx
XSxuWzJdKnRbMF0tblswXSp0WzJdLG5bMF0qdFsxXS1uWzFdKnRbMF1dfWZ1bmN0aW9uIGdlKG4s
dCl7blswXSs9dFswXSxuWzFdKz10WzFdLG5bMl0rPXRbMl19ZnVuY3Rpb24gcGUobix0KXtyZXR1
cm5bblswXSp0LG5bMV0qdCxuWzJdKnRdfWZ1bmN0aW9uIHZlKG4pe3ZhciB0PU1hdGguc3FydChu
WzBdKm5bMF0rblsxXSpuWzFdK25bMl0qblsyXSk7blswXS89dCxuWzFdLz10LG5bMl0vPXR9ZnVu
Y3Rpb24gZGUobil7cmV0dXJuW01hdGguYXRhbjIoblsxXSxuWzBdKSxHKG5bMl0pXX1mdW5jdGlv
biBtZShuLHQpe3JldHVybiB1YShuWzBdLXRbMF0pPGthJiZ1YShuWzFdLXRbMV0pPGthfWZ1bmN0
aW9uIHllKG4sdCl7bio9QWE7dmFyIGU9TWF0aC5jb3ModCo9QWEpO3hlKGUqTWF0aC5jb3Mobiks
ZSpNYXRoLnNpbihuKSxNYXRoLnNpbih0KSl9ZnVuY3Rpb24geGUobix0LGUpeysraGMscGMrPShu
LXBjKS9oYyx2Yys9KHQtdmMpL2hjLGRjKz0oZS1kYykvaGN9ZnVuY3Rpb24gTWUoKXtmdW5jdGlv
biBuKG4sdSl7bio9QWE7dmFyIGk9TWF0aC5jb3ModSo9QWEpLG89aSpNYXRoLmNvcyhuKSxhPWkq
TWF0aC5zaW4obiksYz1NYXRoLnNpbih1KSxzPU1hdGguYXRhbjIoTWF0aC5zcXJ0KChzPWUqYy1y
KmEpKnMrKHM9cipvLXQqYykqcysocz10KmEtZSpvKSpzKSx0Km8rZSphK3IqYyk7Z2MrPXMsbWMr
PXMqKHQrKHQ9bykpLHljKz1zKihlKyhlPWEpKSx4Yys9cyoocisocj1jKSkseGUodCxlLHIpfXZh
ciB0LGUscjt3Yy5wb2ludD1mdW5jdGlvbih1LGkpe3UqPUFhO3ZhciBvPU1hdGguY29zKGkqPUFh
KTt0PW8qTWF0aC5jb3ModSksZT1vKk1hdGguc2luKHUpLHI9TWF0aC5zaW4oaSksd2MucG9pbnQ9
bix4ZSh0LGUscil9fWZ1bmN0aW9uIF9lKCl7d2MucG9pbnQ9eWV9ZnVuY3Rpb24gYmUoKXtmdW5j
dGlvbiBuKG4sdCl7bio9QWE7dmFyIGU9TWF0aC5jb3ModCo9QWEpLG89ZSpNYXRoLmNvcyhuKSxh
PWUqTWF0aC5zaW4obiksYz1NYXRoLnNpbih0KSxzPXUqYy1pKmEsbD1pKm8tcipjLGY9ciphLXUq
byxoPU1hdGguc3FydChzKnMrbCpsK2YqZiksZz1yKm8rdSphK2kqYyxwPWgmJi1KKGcpL2gsdj1N
YXRoLmF0YW4yKGgsZyk7TWMrPXAqcyxfYys9cCpsLGJjKz1wKmYsZ2MrPXYsbWMrPXYqKHIrKHI9
bykpLHljKz12Kih1Kyh1PWEpKSx4Yys9diooaSsoaT1jKSkseGUocix1LGkpfXZhciB0LGUscix1
LGk7d2MucG9pbnQ9ZnVuY3Rpb24obyxhKXt0PW8sZT1hLHdjLnBvaW50PW4sbyo9QWE7dmFyIGM9
TWF0aC5jb3MoYSo9QWEpO3I9YypNYXRoLmNvcyhvKSx1PWMqTWF0aC5zaW4obyksaT1NYXRoLnNp
bihhKSx4ZShyLHUsaSl9LHdjLmxpbmVFbmQ9ZnVuY3Rpb24oKXtuKHQsZSksd2MubGluZUVuZD1f
ZSx3Yy5wb2ludD15ZX19ZnVuY3Rpb24gd2UoKXtyZXR1cm4hMH1mdW5jdGlvbiBTZShuLHQsZSxy
LHUpe3ZhciBpPVtdLG89W107aWYobi5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lmKCEoKHQ9bi5sZW5n
dGgtMSk8PTApKXt2YXIgdCxlPW5bMF0scj1uW3RdO2lmKG1lKGUscikpe3UubGluZVN0YXJ0KCk7
Zm9yKHZhciBhPTA7dD5hOysrYSl1LnBvaW50KChlPW5bYV0pWzBdLGVbMV0pO3JldHVybiB1Lmxp
bmVFbmQoKSx2b2lkIDB9dmFyIGM9bmV3IEVlKGUsbixudWxsLCEwKSxzPW5ldyBFZShlLG51bGws
YywhMSk7Yy5vPXMsaS5wdXNoKGMpLG8ucHVzaChzKSxjPW5ldyBFZShyLG4sbnVsbCwhMSkscz1u
ZXcgRWUocixudWxsLGMsITApLGMubz1zLGkucHVzaChjKSxvLnB1c2gocyl9fSksby5zb3J0KHQp
LGtlKGkpLGtlKG8pLGkubGVuZ3RoKXtmb3IodmFyIGE9MCxjPWUscz1vLmxlbmd0aDtzPmE7Kyth
KW9bYV0uZT1jPSFjO2Zvcih2YXIgbCxmLGg9aVswXTs7KXtmb3IodmFyIGc9aCxwPSEwO2cudjsp
aWYoKGc9Zy5uKT09PWgpcmV0dXJuO2w9Zy56LHUubGluZVN0YXJ0KCk7ZG97aWYoZy52PWcuby52
PSEwLGcuZSl7aWYocClmb3IodmFyIGE9MCxzPWwubGVuZ3RoO3M+YTsrK2EpdS5wb2ludCgoZj1s
W2FdKVswXSxmWzFdKTtlbHNlIHIoZy54LGcubi54LDEsdSk7Zz1nLm59ZWxzZXtpZihwKXtsPWcu
cC56O2Zvcih2YXIgYT1sLmxlbmd0aC0xO2E+PTA7LS1hKXUucG9pbnQoKGY9bFthXSlbMF0sZlsx
XSl9ZWxzZSByKGcueCxnLnAueCwtMSx1KTtnPWcucH1nPWcubyxsPWcueixwPSFwfXdoaWxlKCFn
LnYpO3UubGluZUVuZCgpfX19ZnVuY3Rpb24ga2Uobil7aWYodD1uLmxlbmd0aCl7Zm9yKHZhciB0
LGUscj0wLHU9blswXTsrK3I8dDspdS5uPWU9bltyXSxlLnA9dSx1PWU7dS5uPWU9blswXSxlLnA9
dX19ZnVuY3Rpb24gRWUobix0LGUscil7dGhpcy54PW4sdGhpcy56PXQsdGhpcy5vPWUsdGhpcy5l
PXIsdGhpcy52PSExLHRoaXMubj10aGlzLnA9bnVsbH1mdW5jdGlvbiBBZShuLHQsZSxyKXtyZXR1
cm4gZnVuY3Rpb24odSxpKXtmdW5jdGlvbiBvKHQsZSl7dmFyIHI9dSh0LGUpO24odD1yWzBdLGU9
clsxXSkmJmkucG9pbnQodCxlKX1mdW5jdGlvbiBhKG4sdCl7dmFyIGU9dShuLHQpO2QucG9pbnQo
ZVswXSxlWzFdKX1mdW5jdGlvbiBjKCl7eS5wb2ludD1hLGQubGluZVN0YXJ0KCl9ZnVuY3Rpb24g
cygpe3kucG9pbnQ9byxkLmxpbmVFbmQoKX1mdW5jdGlvbiBsKG4sdCl7di5wdXNoKFtuLHRdKTt2
YXIgZT11KG4sdCk7TS5wb2ludChlWzBdLGVbMV0pfWZ1bmN0aW9uIGYoKXtNLmxpbmVTdGFydCgp
LHY9W119ZnVuY3Rpb24gaCgpe2wodlswXVswXSx2WzBdWzFdKSxNLmxpbmVFbmQoKTt2YXIgbix0
PU0uY2xlYW4oKSxlPXguYnVmZmVyKCkscj1lLmxlbmd0aDtpZih2LnBvcCgpLHAucHVzaCh2KSx2
PW51bGwscilpZigxJnQpe249ZVswXTt2YXIgdSxyPW4ubGVuZ3RoLTEsbz0tMTtpZihyPjApe2Zv
cihffHwoaS5wb2x5Z29uU3RhcnQoKSxfPSEwKSxpLmxpbmVTdGFydCgpOysrbzxyOylpLnBvaW50
KCh1PW5bb10pWzBdLHVbMV0pO2kubGluZUVuZCgpfX1lbHNlIHI+MSYmMiZ0JiZlLnB1c2goZS5w
b3AoKS5jb25jYXQoZS5zaGlmdCgpKSksZy5wdXNoKGUuZmlsdGVyKENlKSl9dmFyIGcscCx2LGQ9
dChpKSxtPXUuaW52ZXJ0KHJbMF0sclsxXSkseT17cG9pbnQ6byxsaW5lU3RhcnQ6YyxsaW5lRW5k
OnMscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7eS5wb2ludD1sLHkubGluZVN0YXJ0PWYseS5saW5l
RW5kPWgsZz1bXSxwPVtdfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7eS5wb2ludD1vLHkubGluZVN0
YXJ0PWMseS5saW5lRW5kPXMsZz1aby5tZXJnZShnKTt2YXIgbj1MZShtLHApO2cubGVuZ3RoPyhf
fHwoaS5wb2x5Z29uU3RhcnQoKSxfPSEwKSxTZShnLHplLG4sZSxpKSk6biYmKF98fChpLnBvbHln
b25TdGFydCgpLF89ITApLGkubGluZVN0YXJ0KCksZShudWxsLG51bGwsMSxpKSxpLmxpbmVFbmQo
KSksXyYmKGkucG9seWdvbkVuZCgpLF89ITEpLGc9cD1udWxsfSxzcGhlcmU6ZnVuY3Rpb24oKXtp
LnBvbHlnb25TdGFydCgpLGkubGluZVN0YXJ0KCksZShudWxsLG51bGwsMSxpKSxpLmxpbmVFbmQo
KSxpLnBvbHlnb25FbmQoKX19LHg9TmUoKSxNPXQoeCksXz0hMTtyZXR1cm4geX19ZnVuY3Rpb24g
Q2Uobil7cmV0dXJuIG4ubGVuZ3RoPjF9ZnVuY3Rpb24gTmUoKXt2YXIgbix0PVtdO3JldHVybnts
aW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LnB1c2gobj1bXSl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7bi5w
dXNoKFt0LGVdKX0sbGluZUVuZDp2LGJ1ZmZlcjpmdW5jdGlvbigpe3ZhciBlPXQ7cmV0dXJuIHQ9
W10sbj1udWxsLGV9LHJlam9pbjpmdW5jdGlvbigpe3QubGVuZ3RoPjEmJnQucHVzaCh0LnBvcCgp
LmNvbmNhdCh0LnNoaWZ0KCkpKX19fWZ1bmN0aW9uIHplKG4sdCl7cmV0dXJuKChuPW4ueClbMF08
MD9uWzFdLVNhLWthOlNhLW5bMV0pLSgodD10LngpWzBdPDA/dFsxXS1TYS1rYTpTYS10WzFdKX1m
dW5jdGlvbiBMZShuLHQpe3ZhciBlPW5bMF0scj1uWzFdLHU9W01hdGguc2luKGUpLC1NYXRoLmNv
cyhlKSwwXSxpPTAsbz0wO2xjLnJlc2V0KCk7Zm9yKHZhciBhPTAsYz10Lmxlbmd0aDtjPmE7Kyth
KXt2YXIgcz10W2FdLGw9cy5sZW5ndGg7aWYobClmb3IodmFyIGY9c1swXSxoPWZbMF0sZz1mWzFd
LzIrYmEvNCxwPU1hdGguc2luKGcpLHY9TWF0aC5jb3MoZyksZD0xOzspe2Q9PT1sJiYoZD0wKSxu
PXNbZF07dmFyIG09blswXSx5PW5bMV0vMitiYS80LHg9TWF0aC5zaW4oeSksTT1NYXRoLmNvcyh5
KSxfPW0taCxiPV8+PTA/MTotMSx3PWIqXyxTPXc+YmEsaz1wKng7aWYobGMuYWRkKE1hdGguYXRh
bjIoaypiKk1hdGguc2luKHcpLHYqTStrKk1hdGguY29zKHcpKSksaSs9Uz9fK2Iqd2E6XyxTXmg+
PWVebT49ZSl7dmFyIEU9aGUobGUoZiksbGUobikpO3ZlKEUpO3ZhciBBPWhlKHUsRSk7dmUoQSk7
dmFyIEM9KFNeXz49MD8tMToxKSpHKEFbMl0pOyhyPkN8fHI9PT1DJiYoRVswXXx8RVsxXSkpJiYo
bys9U15fPj0wPzE6LTEpfWlmKCFkKyspYnJlYWs7aD1tLHA9eCx2PU0sZj1ufX1yZXR1cm4oLWth
Pml8fGthPmkmJjA+bGMpXjEmb31mdW5jdGlvbiBUZShuKXt2YXIgdCxlPTAvMCxyPTAvMCx1PTAv
MDtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7bi5saW5lU3RhcnQoKSx0PTF9LHBvaW50OmZ1
bmN0aW9uKGksbyl7dmFyIGE9aT4wP2JhOi1iYSxjPXVhKGktZSk7dWEoYy1iYSk8a2E/KG4ucG9p
bnQoZSxyPShyK28pLzI+MD9TYTotU2EpLG4ucG9pbnQodSxyKSxuLmxpbmVFbmQoKSxuLmxpbmVT
dGFydCgpLG4ucG9pbnQoYSxyKSxuLnBvaW50KGksciksdD0wKTp1IT09YSYmYz49YmEmJih1YShl
LXUpPGthJiYoZS09dSprYSksdWEoaS1hKTxrYSYmKGktPWEqa2EpLHI9cWUoZSxyLGksbyksbi5w
b2ludCh1LHIpLG4ubGluZUVuZCgpLG4ubGluZVN0YXJ0KCksbi5wb2ludChhLHIpLHQ9MCksbi5w
b2ludChlPWkscj1vKSx1PWF9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtuLmxpbmVFbmQoKSxlPXI9MC8w
fSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLXR9fX1mdW5jdGlvbiBxZShuLHQsZSxyKXt2YXIg
dSxpLG89TWF0aC5zaW4obi1lKTtyZXR1cm4gdWEobyk+a2E/TWF0aC5hdGFuKChNYXRoLnNpbih0
KSooaT1NYXRoLmNvcyhyKSkqTWF0aC5zaW4oZSktTWF0aC5zaW4ocikqKHU9TWF0aC5jb3ModCkp
Kk1hdGguc2luKG4pKS8odSppKm8pKToodCtyKS8yfWZ1bmN0aW9uIFJlKG4sdCxlLHIpe3ZhciB1
O2lmKG51bGw9PW4pdT1lKlNhLHIucG9pbnQoLWJhLHUpLHIucG9pbnQoMCx1KSxyLnBvaW50KGJh
LHUpLHIucG9pbnQoYmEsMCksci5wb2ludChiYSwtdSksci5wb2ludCgwLC11KSxyLnBvaW50KC1i
YSwtdSksci5wb2ludCgtYmEsMCksci5wb2ludCgtYmEsdSk7ZWxzZSBpZih1YShuWzBdLXRbMF0p
PmthKXt2YXIgaT1uWzBdPHRbMF0/YmE6LWJhO3U9ZSppLzIsci5wb2ludCgtaSx1KSxyLnBvaW50
KDAsdSksci5wb2ludChpLHUpfWVsc2Ugci5wb2ludCh0WzBdLHRbMV0pfWZ1bmN0aW9uIERlKG4p
e2Z1bmN0aW9uIHQobix0KXtyZXR1cm4gTWF0aC5jb3MobikqTWF0aC5jb3ModCk+aX1mdW5jdGlv
biBlKG4pe3ZhciBlLGksYyxzLGw7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe3M9Yz0hMSxs
PTF9LHBvaW50OmZ1bmN0aW9uKGYsaCl7dmFyIGcscD1bZixoXSx2PXQoZixoKSxkPW8/dj8wOnUo
ZixoKTp2P3UoZisoMD5mP2JhOi1iYSksaCk6MDtpZighZSYmKHM9Yz12KSYmbi5saW5lU3RhcnQo
KSx2IT09YyYmKGc9cihlLHApLChtZShlLGcpfHxtZShwLGcpKSYmKHBbMF0rPWthLHBbMV0rPWth
LHY9dChwWzBdLHBbMV0pKSksdiE9PWMpbD0wLHY/KG4ubGluZVN0YXJ0KCksZz1yKHAsZSksbi5w
b2ludChnWzBdLGdbMV0pKTooZz1yKGUscCksbi5wb2ludChnWzBdLGdbMV0pLG4ubGluZUVuZCgp
KSxlPWc7ZWxzZSBpZihhJiZlJiZvXnYpe3ZhciBtO2QmaXx8IShtPXIocCxlLCEwKSl8fChsPTAs
bz8obi5saW5lU3RhcnQoKSxuLnBvaW50KG1bMF1bMF0sbVswXVsxXSksbi5wb2ludChtWzFdWzBd
LG1bMV1bMV0pLG4ubGluZUVuZCgpKToobi5wb2ludChtWzFdWzBdLG1bMV1bMV0pLG4ubGluZUVu
ZCgpLG4ubGluZVN0YXJ0KCksbi5wb2ludChtWzBdWzBdLG1bMF1bMV0pKSl9IXZ8fGUmJm1lKGUs
cCl8fG4ucG9pbnQocFswXSxwWzFdKSxlPXAsYz12LGk9ZH0sbGluZUVuZDpmdW5jdGlvbigpe2Mm
Jm4ubGluZUVuZCgpLGU9bnVsbH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gbHwocyYmYyk8PDF9
fX1mdW5jdGlvbiByKG4sdCxlKXt2YXIgcj1sZShuKSx1PWxlKHQpLG89WzEsMCwwXSxhPWhlKHIs
dSksYz1mZShhLGEpLHM9YVswXSxsPWMtcypzO2lmKCFsKXJldHVybiFlJiZuO3ZhciBmPWkqYy9s
LGg9LWkqcy9sLGc9aGUobyxhKSxwPXBlKG8sZiksdj1wZShhLGgpO2dlKHAsdik7dmFyIGQ9Zyxt
PWZlKHAsZCkseT1mZShkLGQpLHg9bSptLXkqKGZlKHAscCktMSk7aWYoISgwPngpKXt2YXIgTT1N
YXRoLnNxcnQoeCksXz1wZShkLCgtbS1NKS95KTtpZihnZShfLHApLF89ZGUoXyksIWUpcmV0dXJu
IF87dmFyIGIsdz1uWzBdLFM9dFswXSxrPW5bMV0sRT10WzFdO3c+UyYmKGI9dyx3PVMsUz1iKTt2
YXIgQT1TLXcsQz11YShBLWJhKTxrYSxOPUN8fGthPkE7aWYoIUMmJms+RSYmKGI9ayxrPUUsRT1i
KSxOP0M/aytFPjBeX1sxXTwodWEoX1swXS13KTxrYT9rOkUpOms8PV9bMV0mJl9bMV08PUU6QT5i
YV4odzw9X1swXSYmX1swXTw9Uykpe3ZhciB6PXBlKGQsKC1tK00pL3kpO3JldHVybiBnZSh6LHAp
LFtfLGRlKHopXX19fWZ1bmN0aW9uIHUodCxlKXt2YXIgcj1vP246YmEtbix1PTA7cmV0dXJuLXI+
dD91fD0xOnQ+ciYmKHV8PTIpLC1yPmU/dXw9NDplPnImJih1fD04KSx1fXZhciBpPU1hdGguY29z
KG4pLG89aT4wLGE9dWEoaSk+a2EsYz1zcihuLDYqQWEpO3JldHVybiBBZSh0LGUsYyxvP1swLC1u
XTpbLWJhLG4tYmFdKX1mdW5jdGlvbiBQZShuLHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odSl7dmFy
IGksbz11LmEsYT11LmIsYz1vLngscz1vLnksbD1hLngsZj1hLnksaD0wLGc9MSxwPWwtYyx2PWYt
cztpZihpPW4tYyxwfHwhKGk+MCkpe2lmKGkvPXAsMD5wKXtpZihoPmkpcmV0dXJuO2c+aSYmKGc9
aSl9ZWxzZSBpZihwPjApe2lmKGk+ZylyZXR1cm47aT5oJiYoaD1pKX1pZihpPWUtYyxwfHwhKDA+
aSkpe2lmKGkvPXAsMD5wKXtpZihpPmcpcmV0dXJuO2k+aCYmKGg9aSl9ZWxzZSBpZihwPjApe2lm
KGg+aSlyZXR1cm47Zz5pJiYoZz1pKX1pZihpPXQtcyx2fHwhKGk+MCkpe2lmKGkvPXYsMD52KXtp
ZihoPmkpcmV0dXJuO2c+aSYmKGc9aSl9ZWxzZSBpZih2PjApe2lmKGk+ZylyZXR1cm47aT5oJiYo
aD1pKX1pZihpPXItcyx2fHwhKDA+aSkpe2lmKGkvPXYsMD52KXtpZihpPmcpcmV0dXJuO2k+aCYm
KGg9aSl9ZWxzZSBpZih2PjApe2lmKGg+aSlyZXR1cm47Zz5pJiYoZz1pKX1yZXR1cm4gaD4wJiYo
dS5hPXt4OmMraCpwLHk6cytoKnZ9KSwxPmcmJih1LmI9e3g6YytnKnAseTpzK2cqdn0pLHV9fX19
fX1mdW5jdGlvbiBVZShuLHQsZSxyKXtmdW5jdGlvbiB1KHIsdSl7cmV0dXJuIHVhKHJbMF0tbik8
a2E/dT4wPzA6Mzp1YShyWzBdLWUpPGthP3U+MD8yOjE6dWEoclsxXS10KTxrYT91PjA/MTowOnU+
MD8zOjJ9ZnVuY3Rpb24gaShuLHQpe3JldHVybiBvKG4ueCx0LngpfWZ1bmN0aW9uIG8obix0KXt2
YXIgZT11KG4sMSkscj11KHQsMSk7cmV0dXJuIGUhPT1yP2UtcjowPT09ZT90WzFdLW5bMV06MT09
PWU/blswXS10WzBdOjI9PT1lP25bMV0tdFsxXTp0WzBdLW5bMF19cmV0dXJuIGZ1bmN0aW9uKGEp
e2Z1bmN0aW9uIGMobil7Zm9yKHZhciB0PTAsZT1kLmxlbmd0aCxyPW5bMV0sdT0wO2U+dTsrK3Up
Zm9yKHZhciBpLG89MSxhPWRbdV0sYz1hLmxlbmd0aCxzPWFbMF07Yz5vOysrbylpPWFbb10sc1sx
XTw9cj9pWzFdPnImJlcocyxpLG4pPjAmJisrdDppWzFdPD1yJiZXKHMsaSxuKTwwJiYtLXQscz1p
O3JldHVybiAwIT09dH1mdW5jdGlvbiBzKGksYSxjLHMpe3ZhciBsPTAsZj0wO2lmKG51bGw9PWl8
fChsPXUoaSxjKSkhPT0oZj11KGEsYykpfHxvKGksYSk8MF5jPjApe2RvIHMucG9pbnQoMD09PWx8
fDM9PT1sP246ZSxsPjE/cjp0KTt3aGlsZSgobD0obCtjKzQpJTQpIT09Zil9ZWxzZSBzLnBvaW50
KGFbMF0sYVsxXSl9ZnVuY3Rpb24gbCh1LGkpe3JldHVybiB1Pj1uJiZlPj11JiZpPj10JiZyPj1p
fWZ1bmN0aW9uIGYobix0KXtsKG4sdCkmJmEucG9pbnQobix0KX1mdW5jdGlvbiBoKCl7Ti5wb2lu
dD1wLGQmJmQucHVzaChtPVtdKSxTPSEwLHc9ITEsXz1iPTAvMH1mdW5jdGlvbiBnKCl7diYmKHAo
eSx4KSxNJiZ3JiZBLnJlam9pbigpLHYucHVzaChBLmJ1ZmZlcigpKSksTi5wb2ludD1mLHcmJmEu
bGluZUVuZCgpfWZ1bmN0aW9uIHAobix0KXtuPU1hdGgubWF4KC1rYyxNYXRoLm1pbihrYyxuKSks
dD1NYXRoLm1heCgta2MsTWF0aC5taW4oa2MsdCkpO3ZhciBlPWwobix0KTtpZihkJiZtLnB1c2go
W24sdF0pLFMpeT1uLHg9dCxNPWUsUz0hMSxlJiYoYS5saW5lU3RhcnQoKSxhLnBvaW50KG4sdCkp
O2Vsc2UgaWYoZSYmdylhLnBvaW50KG4sdCk7ZWxzZXt2YXIgcj17YTp7eDpfLHk6Yn0sYjp7eDpu
LHk6dH19O0Mocik/KHd8fChhLmxpbmVTdGFydCgpLGEucG9pbnQoci5hLngsci5hLnkpKSxhLnBv
aW50KHIuYi54LHIuYi55KSxlfHxhLmxpbmVFbmQoKSxrPSExKTplJiYoYS5saW5lU3RhcnQoKSxh
LnBvaW50KG4sdCksaz0hMSl9Xz1uLGI9dCx3PWV9dmFyIHYsZCxtLHkseCxNLF8sYix3LFMsayxF
PWEsQT1OZSgpLEM9UGUobix0LGUsciksTj17cG9pbnQ6ZixsaW5lU3RhcnQ6aCxsaW5lRW5kOmcs
cG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7YT1BLHY9W10sZD1bXSxrPSEwfSxwb2x5Z29uRW5kOmZ1
bmN0aW9uKCl7YT1FLHY9Wm8ubWVyZ2Uodik7dmFyIHQ9YyhbbixyXSksZT1rJiZ0LHU9di5sZW5n
dGg7KGV8fHUpJiYoYS5wb2x5Z29uU3RhcnQoKSxlJiYoYS5saW5lU3RhcnQoKSxzKG51bGwsbnVs
bCwxLGEpLGEubGluZUVuZCgpKSx1JiZTZSh2LGksdCxzLGEpLGEucG9seWdvbkVuZCgpKSx2PWQ9
bT1udWxsfX07cmV0dXJuIE59fWZ1bmN0aW9uIGplKG4sdCl7ZnVuY3Rpb24gZShlLHIpe3JldHVy
biBlPW4oZSxyKSx0KGVbMF0sZVsxXSl9cmV0dXJuIG4uaW52ZXJ0JiZ0LmludmVydCYmKGUuaW52
ZXJ0PWZ1bmN0aW9uKGUscil7cmV0dXJuIGU9dC5pbnZlcnQoZSxyKSxlJiZuLmludmVydChlWzBd
LGVbMV0pfSksZX1mdW5jdGlvbiBIZShuKXt2YXIgdD0wLGU9YmEvMyxyPXRyKG4pLHU9cih0LGUp
O3JldHVybiB1LnBhcmFsbGVscz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9y
KHQ9blswXSpiYS8xODAsZT1uWzFdKmJhLzE4MCk6WzE4MCoodC9iYSksMTgwKihlL2JhKV19LHV9
ZnVuY3Rpb24gRmUobix0KXtmdW5jdGlvbiBlKG4sdCl7dmFyIGU9TWF0aC5zcXJ0KGktMip1Kk1h
dGguc2luKHQpKS91O3JldHVybltlKk1hdGguc2luKG4qPXUpLG8tZSpNYXRoLmNvcyhuKV19dmFy
IHI9TWF0aC5zaW4obiksdT0ocitNYXRoLnNpbih0KSkvMixpPTErciooMip1LXIpLG89TWF0aC5z
cXJ0KGkpL3U7cmV0dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7dmFyIGU9by10O3JldHVybltN
YXRoLmF0YW4yKG4sZSkvdSxHKChpLShuKm4rZSplKSp1KnUpLygyKnUpKV19LGV9ZnVuY3Rpb24g
T2UoKXtmdW5jdGlvbiBuKG4sdCl7QWMrPXUqbi1yKnQscj1uLHU9dH12YXIgdCxlLHIsdTtUYy5w
b2ludD1mdW5jdGlvbihpLG8pe1RjLnBvaW50PW4sdD1yPWksZT11PW99LFRjLmxpbmVFbmQ9ZnVu
Y3Rpb24oKXtuKHQsZSl9fWZ1bmN0aW9uIFllKG4sdCl7Q2M+biYmKENjPW4pLG4+emMmJih6Yz1u
KSxOYz50JiYoTmM9dCksdD5MYyYmKExjPXQpfWZ1bmN0aW9uIEllKCl7ZnVuY3Rpb24gbihuLHQp
e28ucHVzaCgiTSIsbiwiLCIsdCxpKX1mdW5jdGlvbiB0KG4sdCl7by5wdXNoKCJNIixuLCIsIix0
KSxhLnBvaW50PWV9ZnVuY3Rpb24gZShuLHQpe28ucHVzaCgiTCIsbiwiLCIsdCl9ZnVuY3Rpb24g
cigpe2EucG9pbnQ9bn1mdW5jdGlvbiB1KCl7by5wdXNoKCJaIil9dmFyIGk9WmUoNC41KSxvPVtd
LGE9e3BvaW50Om4sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7YS5wb2ludD10fSxsaW5lRW5kOnIscG9s
eWdvblN0YXJ0OmZ1bmN0aW9uKCl7YS5saW5lRW5kPXV9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXth
LmxpbmVFbmQ9cixhLnBvaW50PW59LHBvaW50UmFkaXVzOmZ1bmN0aW9uKG4pe3JldHVybiBpPVpl
KG4pLGF9LHJlc3VsdDpmdW5jdGlvbigpe2lmKG8ubGVuZ3RoKXt2YXIgbj1vLmpvaW4oIiIpO3Jl
dHVybiBvPVtdLG59fX07cmV0dXJuIGF9ZnVuY3Rpb24gWmUobil7cmV0dXJuIm0wLCIrbisiYSIr
bisiLCIrbisiIDAgMSwxIDAsIistMipuKyJhIituKyIsIituKyIgMCAxLDEgMCwiKzIqbisieiJ9
ZnVuY3Rpb24gVmUobix0KXtwYys9bix2Yys9dCwrK2RjfWZ1bmN0aW9uIFhlKCl7ZnVuY3Rpb24g
bihuLHIpe3ZhciB1PW4tdCxpPXItZSxvPU1hdGguc3FydCh1KnUraSppKTttYys9byoodCtuKS8y
LHljKz1vKihlK3IpLzIseGMrPW8sVmUodD1uLGU9cil9dmFyIHQsZTtSYy5wb2ludD1mdW5jdGlv
bihyLHUpe1JjLnBvaW50PW4sVmUodD1yLGU9dSl9fWZ1bmN0aW9uICRlKCl7UmMucG9pbnQ9VmV9
ZnVuY3Rpb24gQmUoKXtmdW5jdGlvbiBuKG4sdCl7dmFyIGU9bi1yLGk9dC11LG89TWF0aC5zcXJ0
KGUqZStpKmkpO21jKz1vKihyK24pLzIseWMrPW8qKHUrdCkvMix4Yys9byxvPXUqbi1yKnQsTWMr
PW8qKHIrbiksX2MrPW8qKHUrdCksYmMrPTMqbyxWZShyPW4sdT10KX12YXIgdCxlLHIsdTtSYy5w
b2ludD1mdW5jdGlvbihpLG8pe1JjLnBvaW50PW4sVmUodD1yPWksZT11PW8pfSxSYy5saW5lRW5k
PWZ1bmN0aW9uKCl7bih0LGUpfX1mdW5jdGlvbiBXZShuKXtmdW5jdGlvbiB0KHQsZSl7bi5tb3Zl
VG8odCxlKSxuLmFyYyh0LGUsbywwLHdhKX1mdW5jdGlvbiBlKHQsZSl7bi5tb3ZlVG8odCxlKSxh
LnBvaW50PXJ9ZnVuY3Rpb24gcih0LGUpe24ubGluZVRvKHQsZSl9ZnVuY3Rpb24gdSgpe2EucG9p
bnQ9dH1mdW5jdGlvbiBpKCl7bi5jbG9zZVBhdGgoKX12YXIgbz00LjUsYT17cG9pbnQ6dCxsaW5l
U3RhcnQ6ZnVuY3Rpb24oKXthLnBvaW50PWV9LGxpbmVFbmQ6dSxwb2x5Z29uU3RhcnQ6ZnVuY3Rp
b24oKXthLmxpbmVFbmQ9aX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2EubGluZUVuZD11LGEucG9p
bnQ9dH0scG9pbnRSYWRpdXM6ZnVuY3Rpb24obil7cmV0dXJuIG89bixhfSxyZXN1bHQ6dn07cmV0
dXJuIGF9ZnVuY3Rpb24gSmUobil7ZnVuY3Rpb24gdChuKXtyZXR1cm4oYT9yOmUpKG4pfWZ1bmN0
aW9uIGUodCl7cmV0dXJuIFFlKHQsZnVuY3Rpb24oZSxyKXtlPW4oZSxyKSx0LnBvaW50KGVbMF0s
ZVsxXSl9KX1mdW5jdGlvbiByKHQpe2Z1bmN0aW9uIGUoZSxyKXtlPW4oZSxyKSx0LnBvaW50KGVb
MF0sZVsxXSl9ZnVuY3Rpb24gcigpe3g9MC8wLFMucG9pbnQ9aSx0LmxpbmVTdGFydCgpfWZ1bmN0
aW9uIGkoZSxyKXt2YXIgaT1sZShbZSxyXSksbz1uKGUscik7dSh4LE0seSxfLGIsdyx4PW9bMF0s
TT1vWzFdLHk9ZSxfPWlbMF0sYj1pWzFdLHc9aVsyXSxhLHQpLHQucG9pbnQoeCxNKX1mdW5jdGlv
biBvKCl7Uy5wb2ludD1lLHQubGluZUVuZCgpfWZ1bmN0aW9uIGMoKXtyKCksUy5wb2ludD1zLFMu
bGluZUVuZD1sfWZ1bmN0aW9uIHMobix0KXtpKGY9bixoPXQpLGc9eCxwPU0sdj1fLGQ9YixtPXcs
Uy5wb2ludD1pfWZ1bmN0aW9uIGwoKXt1KHgsTSx5LF8sYix3LGcscCxmLHYsZCxtLGEsdCksUy5s
aW5lRW5kPW8sbygpfXZhciBmLGgsZyxwLHYsZCxtLHkseCxNLF8sYix3LFM9e3BvaW50OmUsbGlu
ZVN0YXJ0OnIsbGluZUVuZDpvLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3QucG9seWdvblN0YXJ0
KCksUy5saW5lU3RhcnQ9Y30scG9seWdvbkVuZDpmdW5jdGlvbigpe3QucG9seWdvbkVuZCgpLFMu
bGluZVN0YXJ0PXJ9fTtyZXR1cm4gU31mdW5jdGlvbiB1KHQsZSxyLGEsYyxzLGwsZixoLGcscCx2
LGQsbSl7dmFyIHk9bC10LHg9Zi1lLE09eSp5K3gqeDtpZihNPjQqaSYmZC0tKXt2YXIgXz1hK2cs
Yj1jK3Asdz1zK3YsUz1NYXRoLnNxcnQoXypfK2IqYit3KncpLGs9TWF0aC5hc2luKHcvPVMpLEU9
dWEodWEodyktMSk8a2F8fHVhKHItaCk8a2E/KHIraCkvMjpNYXRoLmF0YW4yKGIsXyksQT1uKEUs
ayksQz1BWzBdLE49QVsxXSx6PUMtdCxMPU4tZSxUPXgqei15Kkw7KFQqVC9NPml8fHVhKCh5Knor
eCpMKS9NLS41KT4uM3x8bz5hKmcrYypwK3MqdikmJih1KHQsZSxyLGEsYyxzLEMsTixFLF8vPVMs
Yi89Uyx3LGQsbSksbS5wb2ludChDLE4pLHUoQyxOLEUsXyxiLHcsbCxmLGgsZyxwLHYsZCxtKSl9
fXZhciBpPS41LG89TWF0aC5jb3MoMzAqQWEpLGE9MTY7CityZXR1cm4gdC5wcmVjaXNpb249ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9KGk9bipuKT4wJiYxNix0KTpNYXRo
LnNxcnQoaSl9LHR9ZnVuY3Rpb24gR2Uobil7dmFyIHQ9SmUoZnVuY3Rpb24odCxlKXtyZXR1cm4g
bihbdCpDYSxlKkNhXSl9KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGVyKHQobikpfX1mdW5j
dGlvbiBLZShuKXt0aGlzLnN0cmVhbT1ufWZ1bmN0aW9uIFFlKG4sdCl7cmV0dXJue3BvaW50OnQs
c3BoZXJlOmZ1bmN0aW9uKCl7bi5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7bi5saW5l
U3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe24ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVu
Y3Rpb24oKXtuLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7bi5wb2x5Z29u
RW5kKCl9fX1mdW5jdGlvbiBucihuKXtyZXR1cm4gdHIoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKCl9
ZnVuY3Rpb24gdHIobil7ZnVuY3Rpb24gdChuKXtyZXR1cm4gbj1hKG5bMF0qQWEsblsxXSpBYSks
W25bMF0qaCtjLHMtblsxXSpoXX1mdW5jdGlvbiBlKG4pe3JldHVybiBuPWEuaW52ZXJ0KChuWzBd
LWMpL2gsKHMtblsxXSkvaCksbiYmW25bMF0qQ2EsblsxXSpDYV19ZnVuY3Rpb24gcigpe2E9amUo
bz1pcihtLHkseCksaSk7dmFyIG49aSh2LGQpO3JldHVybiBjPWctblswXSpoLHM9cCtuWzFdKmgs
dSgpfWZ1bmN0aW9uIHUoKXtyZXR1cm4gbCYmKGwudmFsaWQ9ITEsbD1udWxsKSx0fXZhciBpLG8s
YSxjLHMsbCxmPUplKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49aShuLHQpLFtuWzBdKmgrYyxzLW5b
MV0qaF19KSxoPTE1MCxnPTQ4MCxwPTI1MCx2PTAsZD0wLG09MCx5PTAseD0wLE09U2MsXz13dCxi
PW51bGwsdz1udWxsO3JldHVybiB0LnN0cmVhbT1mdW5jdGlvbihuKXtyZXR1cm4gbCYmKGwudmFs
aWQ9ITEpLGw9ZXIoTShvLGYoXyhuKSkpKSxsLnZhbGlkPSEwLGx9LHQuY2xpcEFuZ2xlPWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhNPW51bGw9PW4/KGI9bixTYyk6RGUoKGI9
K24pKkFhKSx1KCkpOmJ9LHQuY2xpcEV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odz1uLF89bj9VZShuWzBdWzBdLG5bMF1bMV0sblsxXVswXSxuWzFdWzFdKTp3dCx1
KCkpOnd9LHQuc2NhbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K24s
cigpKTpofSx0LnRyYW5zbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Zz0rblswXSxwPStuWzFdLHIoKSk6W2cscF19LHQuY2VudGVyPWZ1bmN0aW9uKG4pe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh2PW5bMF0lMzYwKkFhLGQ9blsxXSUzNjAqQWEscigpKTpbdipDYSxk
KkNhXX0sdC5yb3RhdGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09blsw
XSUzNjAqQWEseT1uWzFdJTM2MCpBYSx4PW4ubGVuZ3RoPjI/blsyXSUzNjAqQWE6MCxyKCkpOltt
KkNhLHkqQ2EseCpDYV19LFpvLnJlYmluZCh0LGYsInByZWNpc2lvbiIpLGZ1bmN0aW9uKCl7cmV0
dXJuIGk9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5pbnZlcnQ9aS5pbnZlcnQmJmUscigpfX1m
dW5jdGlvbiBlcihuKXtyZXR1cm4gUWUobixmdW5jdGlvbih0LGUpe24ucG9pbnQodCpBYSxlKkFh
KX0pfWZ1bmN0aW9uIHJyKG4sdCl7cmV0dXJuW24sdF19ZnVuY3Rpb24gdXIobix0KXtyZXR1cm5b
bj5iYT9uLXdhOi1iYT5uP24rd2E6bix0XX1mdW5jdGlvbiBpcihuLHQsZSl7cmV0dXJuIG4/dHx8
ZT9qZShhcihuKSxjcih0LGUpKTphcihuKTp0fHxlP2NyKHQsZSk6dXJ9ZnVuY3Rpb24gb3Iobil7
cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrPW4sW3Q+YmE/dC13YTotYmE+dD90K3dhOnQs
ZV19fWZ1bmN0aW9uIGFyKG4pe3ZhciB0PW9yKG4pO3JldHVybiB0LmludmVydD1vcigtbiksdH1m
dW5jdGlvbiBjcihuLHQpe2Z1bmN0aW9uIGUobix0KXt2YXIgZT1NYXRoLmNvcyh0KSxhPU1hdGgu
Y29zKG4pKmUsYz1NYXRoLnNpbihuKSplLHM9TWF0aC5zaW4odCksbD1zKnIrYSp1O3JldHVybltN
YXRoLmF0YW4yKGMqaS1sKm8sYSpyLXMqdSksRyhsKmkrYypvKV19dmFyIHI9TWF0aC5jb3Mobiks
dT1NYXRoLnNpbihuKSxpPU1hdGguY29zKHQpLG89TWF0aC5zaW4odCk7cmV0dXJuIGUuaW52ZXJ0
PWZ1bmN0aW9uKG4sdCl7dmFyIGU9TWF0aC5jb3ModCksYT1NYXRoLmNvcyhuKSplLGM9TWF0aC5z
aW4obikqZSxzPU1hdGguc2luKHQpLGw9cyppLWMqbztyZXR1cm5bTWF0aC5hdGFuMihjKmkrcypv
LGEqcitsKnUpLEcobCpyLWEqdSldfSxlfWZ1bmN0aW9uIHNyKG4sdCl7dmFyIGU9TWF0aC5jb3Mo
bikscj1NYXRoLnNpbihuKTtyZXR1cm4gZnVuY3Rpb24odSxpLG8sYSl7dmFyIGM9byp0O251bGwh
PXU/KHU9bHIoZSx1KSxpPWxyKGUsaSksKG8+MD9pPnU6dT5pKSYmKHUrPW8qd2EpKToodT1uK28q
d2EsaT1uLS41KmMpO2Zvcih2YXIgcyxsPXU7bz4wP2w+aTppPmw7bC09YylhLnBvaW50KChzPWRl
KFtlLC1yKk1hdGguY29zKGwpLC1yKk1hdGguc2luKGwpXSkpWzBdLHNbMV0pfX1mdW5jdGlvbiBs
cihuLHQpe3ZhciBlPWxlKHQpO2VbMF0tPW4sdmUoZSk7dmFyIHI9SigtZVsxXSk7cmV0dXJuKCgt
ZVsyXTwwPy1yOnIpKzIqTWF0aC5QSS1rYSklKDIqTWF0aC5QSSl9ZnVuY3Rpb24gZnIobix0LGUp
e3ZhciByPVpvLnJhbmdlKG4sdC1rYSxlKS5jb25jYXQodCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3Jl
dHVybiByLm1hcChmdW5jdGlvbih0KXtyZXR1cm5bbix0XX0pfX1mdW5jdGlvbiBocihuLHQsZSl7
dmFyIHI9Wm8ucmFuZ2Uobix0LWthLGUpLmNvbmNhdCh0KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0
dXJuIHIubWFwKGZ1bmN0aW9uKHQpe3JldHVyblt0LG5dfSl9fWZ1bmN0aW9uIGdyKG4pe3JldHVy
biBuLnNvdXJjZX1mdW5jdGlvbiBwcihuKXtyZXR1cm4gbi50YXJnZXR9ZnVuY3Rpb24gdnIobix0
LGUscil7dmFyIHU9TWF0aC5jb3ModCksaT1NYXRoLnNpbih0KSxvPU1hdGguY29zKHIpLGE9TWF0
aC5zaW4ociksYz11Kk1hdGguY29zKG4pLHM9dSpNYXRoLnNpbihuKSxsPW8qTWF0aC5jb3MoZSks
Zj1vKk1hdGguc2luKGUpLGg9MipNYXRoLmFzaW4oTWF0aC5zcXJ0KHR0KHItdCkrdSpvKnR0KGUt
bikpKSxnPTEvTWF0aC5zaW4oaCkscD1oP2Z1bmN0aW9uKG4pe3ZhciB0PU1hdGguc2luKG4qPWgp
KmcsZT1NYXRoLnNpbihoLW4pKmcscj1lKmMrdCpsLHU9ZSpzK3QqZixvPWUqaSt0KmE7cmV0dXJu
W01hdGguYXRhbjIodSxyKSpDYSxNYXRoLmF0YW4yKG8sTWF0aC5zcXJ0KHIqcit1KnUpKSpDYV19
OmZ1bmN0aW9uKCl7cmV0dXJuW24qQ2EsdCpDYV19O3JldHVybiBwLmRpc3RhbmNlPWgscH1mdW5j
dGlvbiBkcigpe2Z1bmN0aW9uIG4obix1KXt2YXIgaT1NYXRoLnNpbih1Kj1BYSksbz1NYXRoLmNv
cyh1KSxhPXVhKChuKj1BYSktdCksYz1NYXRoLmNvcyhhKTtEYys9TWF0aC5hdGFuMihNYXRoLnNx
cnQoKGE9bypNYXRoLnNpbihhKSkqYSsoYT1yKmktZSpvKmMpKmEpLGUqaStyKm8qYyksdD1uLGU9
aSxyPW99dmFyIHQsZSxyO1BjLnBvaW50PWZ1bmN0aW9uKHUsaSl7dD11KkFhLGU9TWF0aC5zaW4o
aSo9QWEpLHI9TWF0aC5jb3MoaSksUGMucG9pbnQ9bn0sUGMubGluZUVuZD1mdW5jdGlvbigpe1Bj
LnBvaW50PVBjLmxpbmVFbmQ9dn19ZnVuY3Rpb24gbXIobix0KXtmdW5jdGlvbiBlKHQsZSl7dmFy
IHI9TWF0aC5jb3ModCksdT1NYXRoLmNvcyhlKSxpPW4ocip1KTtyZXR1cm5baSp1Kk1hdGguc2lu
KHQpLGkqTWF0aC5zaW4oZSldfXJldHVybiBlLmludmVydD1mdW5jdGlvbihuLGUpe3ZhciByPU1h
dGguc3FydChuKm4rZSplKSx1PXQociksaT1NYXRoLnNpbih1KSxvPU1hdGguY29zKHUpO3JldHVy
bltNYXRoLmF0YW4yKG4qaSxyKm8pLE1hdGguYXNpbihyJiZlKmkvcildfSxlfWZ1bmN0aW9uIHly
KG4sdCl7ZnVuY3Rpb24gZShuLHQpe28+MD8tU2Era2E+dCYmKHQ9LVNhK2thKTp0PlNhLWthJiYo
dD1TYS1rYSk7dmFyIGU9by9NYXRoLnBvdyh1KHQpLGkpO3JldHVybltlKk1hdGguc2luKGkqbiks
by1lKk1hdGguY29zKGkqbildfXZhciByPU1hdGguY29zKG4pLHU9ZnVuY3Rpb24obil7cmV0dXJu
IE1hdGgudGFuKGJhLzQrbi8yKX0saT1uPT09dD9NYXRoLnNpbihuKTpNYXRoLmxvZyhyL01hdGgu
Y29zKHQpKS9NYXRoLmxvZyh1KHQpL3UobikpLG89cipNYXRoLnBvdyh1KG4pLGkpL2k7cmV0dXJu
IGk/KGUuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7dmFyIGU9by10LHI9QihpKSpNYXRoLnNxcnQobipu
K2UqZSk7cmV0dXJuW01hdGguYXRhbjIobixlKS9pLDIqTWF0aC5hdGFuKE1hdGgucG93KG8vciwx
L2kpKS1TYV19LGUpOk1yfWZ1bmN0aW9uIHhyKG4sdCl7ZnVuY3Rpb24gZShuLHQpe3ZhciBlPWkt
dDtyZXR1cm5bZSpNYXRoLnNpbih1Km4pLGktZSpNYXRoLmNvcyh1Km4pXX12YXIgcj1NYXRoLmNv
cyhuKSx1PW49PT10P01hdGguc2luKG4pOihyLU1hdGguY29zKHQpKS8odC1uKSxpPXIvdStuO3Jl
dHVybiB1YSh1KTxrYT9ycjooZS5pbnZlcnQ9ZnVuY3Rpb24obix0KXt2YXIgZT1pLXQ7cmV0dXJu
W01hdGguYXRhbjIobixlKS91LGktQih1KSpNYXRoLnNxcnQobipuK2UqZSldfSxlKX1mdW5jdGlv
biBNcihuLHQpe3JldHVybltuLE1hdGgubG9nKE1hdGgudGFuKGJhLzQrdC8yKSldfWZ1bmN0aW9u
IF9yKG4pe3ZhciB0LGU9bnIobikscj1lLnNjYWxlLHU9ZS50cmFuc2xhdGUsaT1lLmNsaXBFeHRl
bnQ7cmV0dXJuIGUuc2NhbGU9ZnVuY3Rpb24oKXt2YXIgbj1yLmFwcGx5KGUsYXJndW1lbnRzKTty
ZXR1cm4gbj09PWU/dD9lLmNsaXBFeHRlbnQobnVsbCk6ZTpufSxlLnRyYW5zbGF0ZT1mdW5jdGlv
bigpe3ZhciBuPXUuYXBwbHkoZSxhcmd1bWVudHMpO3JldHVybiBuPT09ZT90P2UuY2xpcEV4dGVu
dChudWxsKTplOm59LGUuY2xpcEV4dGVudD1mdW5jdGlvbihuKXt2YXIgbz1pLmFwcGx5KGUsYXJn
dW1lbnRzKTtpZihvPT09ZSl7aWYodD1udWxsPT1uKXt2YXIgYT1iYSpyKCksYz11KCk7aShbW2Nb
MF0tYSxjWzFdLWFdLFtjWzBdK2EsY1sxXSthXV0pfX1lbHNlIHQmJihvPW51bGwpO3JldHVybiBv
fSxlLmNsaXBFeHRlbnQobnVsbCl9ZnVuY3Rpb24gYnIobix0KXtyZXR1cm5bTWF0aC5sb2coTWF0
aC50YW4oYmEvNCt0LzIpKSwtbl19ZnVuY3Rpb24gd3Iobil7cmV0dXJuIG5bMF19ZnVuY3Rpb24g
U3Iobil7cmV0dXJuIG5bMV19ZnVuY3Rpb24ga3Iobil7Zm9yKHZhciB0PW4ubGVuZ3RoLGU9WzAs
MV0scj0yLHU9Mjt0PnU7dSsrKXtmb3IoO3I+MSYmVyhuW2Vbci0yXV0sbltlW3ItMV1dLG5bdV0p
PD0wOyktLXI7ZVtyKytdPXV9cmV0dXJuIGUuc2xpY2UoMCxyKX1mdW5jdGlvbiBFcihuLHQpe3Jl
dHVybiBuWzBdLXRbMF18fG5bMV0tdFsxXX1mdW5jdGlvbiBBcihuLHQsZSl7cmV0dXJuKGVbMF0t
dFswXSkqKG5bMV0tdFsxXSk8KGVbMV0tdFsxXSkqKG5bMF0tdFswXSl9ZnVuY3Rpb24gQ3Iobix0
LGUscil7dmFyIHU9blswXSxpPWVbMF0sbz10WzBdLXUsYT1yWzBdLWksYz1uWzFdLHM9ZVsxXSxs
PXRbMV0tYyxmPXJbMV0tcyxoPShhKihjLXMpLWYqKHUtaSkpLyhmKm8tYSpsKTtyZXR1cm5bdSto
Km8sYytoKmxdfWZ1bmN0aW9uIE5yKG4pe3ZhciB0PW5bMF0sZT1uW24ubGVuZ3RoLTFdO3JldHVy
biEodFswXS1lWzBdfHx0WzFdLWVbMV0pfWZ1bmN0aW9uIHpyKCl7R3IodGhpcyksdGhpcy5lZGdl
PXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIExyKG4pe3ZhciB0PUJjLnBvcCgp
fHxuZXcgenI7cmV0dXJuIHQuc2l0ZT1uLHR9ZnVuY3Rpb24gVHIobil7WXIobiksVmMucmVtb3Zl
KG4pLEJjLnB1c2gobiksR3Iobil9ZnVuY3Rpb24gcXIobil7dmFyIHQ9bi5jaXJjbGUsZT10Lngs
cj10LmN5LHU9e3g6ZSx5OnJ9LGk9bi5QLG89bi5OLGE9W25dO1RyKG4pO2Zvcih2YXIgYz1pO2Mu
Y2lyY2xlJiZ1YShlLWMuY2lyY2xlLngpPGthJiZ1YShyLWMuY2lyY2xlLmN5KTxrYTspaT1jLlAs
YS51bnNoaWZ0KGMpLFRyKGMpLGM9aTthLnVuc2hpZnQoYyksWXIoYyk7Zm9yKHZhciBzPW87cy5j
aXJjbGUmJnVhKGUtcy5jaXJjbGUueCk8a2EmJnVhKHItcy5jaXJjbGUuY3kpPGthOylvPXMuTixh
LnB1c2gocyksVHIocykscz1vO2EucHVzaChzKSxZcihzKTt2YXIgbCxmPWEubGVuZ3RoO2Zvcihs
PTE7Zj5sOysrbClzPWFbbF0sYz1hW2wtMV0sQnIocy5lZGdlLGMuc2l0ZSxzLnNpdGUsdSk7Yz1h
WzBdLHM9YVtmLTFdLHMuZWRnZT1YcihjLnNpdGUscy5zaXRlLG51bGwsdSksT3IoYyksT3Iocyl9
ZnVuY3Rpb24gUnIobil7Zm9yKHZhciB0LGUscix1LGk9bi54LG89bi55LGE9VmMuXzthOylpZihy
PURyKGEsbyktaSxyPmthKWE9YS5MO2Vsc2V7aWYodT1pLVByKGEsbyksISh1PmthKSl7cj4ta2E/
KHQ9YS5QLGU9YSk6dT4ta2E/KHQ9YSxlPWEuTik6dD1lPWE7YnJlYWt9aWYoIWEuUil7dD1hO2Jy
ZWFrfWE9YS5SfXZhciBjPUxyKG4pO2lmKFZjLmluc2VydCh0LGMpLHR8fGUpe2lmKHQ9PT1lKXJl
dHVybiBZcih0KSxlPUxyKHQuc2l0ZSksVmMuaW5zZXJ0KGMsZSksYy5lZGdlPWUuZWRnZT1Ycih0
LnNpdGUsYy5zaXRlKSxPcih0KSxPcihlKSx2b2lkIDA7aWYoIWUpcmV0dXJuIGMuZWRnZT1Ycih0
LnNpdGUsYy5zaXRlKSx2b2lkIDA7WXIodCksWXIoZSk7dmFyIHM9dC5zaXRlLGw9cy54LGY9cy55
LGg9bi54LWwsZz1uLnktZixwPWUuc2l0ZSx2PXAueC1sLGQ9cC55LWYsbT0yKihoKmQtZyp2KSx5
PWgqaCtnKmcseD12KnYrZCpkLE09e3g6KGQqeS1nKngpL20rbCx5OihoKngtdip5KS9tK2Z9O0Jy
KGUuZWRnZSxzLHAsTSksYy5lZGdlPVhyKHMsbixudWxsLE0pLGUuZWRnZT1YcihuLHAsbnVsbCxN
KSxPcih0KSxPcihlKX19ZnVuY3Rpb24gRHIobix0KXt2YXIgZT1uLnNpdGUscj1lLngsdT1lLnks
aT11LXQ7aWYoIWkpcmV0dXJuIHI7dmFyIG89bi5QO2lmKCFvKXJldHVybi0xLzA7ZT1vLnNpdGU7
dmFyIGE9ZS54LGM9ZS55LHM9Yy10O2lmKCFzKXJldHVybiBhO3ZhciBsPWEtcixmPTEvaS0xL3Ms
aD1sL3M7cmV0dXJuIGY/KC1oK01hdGguc3FydChoKmgtMipmKihsKmwvKC0yKnMpLWMrcy8yK3Ut
aS8yKSkpL2YrcjoocithKS8yfWZ1bmN0aW9uIFByKG4sdCl7dmFyIGU9bi5OO2lmKGUpcmV0dXJu
IERyKGUsdCk7dmFyIHI9bi5zaXRlO3JldHVybiByLnk9PT10P3IueDoxLzB9ZnVuY3Rpb24gVXIo
bil7dGhpcy5zaXRlPW4sdGhpcy5lZGdlcz1bXX1mdW5jdGlvbiBqcihuKXtmb3IodmFyIHQsZSxy
LHUsaSxvLGEsYyxzLGwsZj1uWzBdWzBdLGg9blsxXVswXSxnPW5bMF1bMV0scD1uWzFdWzFdLHY9
WmMsZD12Lmxlbmd0aDtkLS07KWlmKGk9dltkXSxpJiZpLnByZXBhcmUoKSlmb3IoYT1pLmVkZ2Vz
LGM9YS5sZW5ndGgsbz0wO2M+bzspbD1hW29dLmVuZCgpLHI9bC54LHU9bC55LHM9YVsrK28lY10u
c3RhcnQoKSx0PXMueCxlPXMueSwodWEoci10KT5rYXx8dWEodS1lKT5rYSkmJihhLnNwbGljZShv
LDAsbmV3IFdyKCRyKGkuc2l0ZSxsLHVhKHItZik8a2EmJnAtdT5rYT97eDpmLHk6dWEodC1mKTxr
YT9lOnB9OnVhKHUtcCk8a2EmJmgtcj5rYT97eDp1YShlLXApPGthP3Q6aCx5OnB9OnVhKHItaCk8
a2EmJnUtZz5rYT97eDpoLHk6dWEodC1oKTxrYT9lOmd9OnVhKHUtZyk8a2EmJnItZj5rYT97eDp1
YShlLWcpPGthP3Q6Zix5Omd9Om51bGwpLGkuc2l0ZSxudWxsKSksKytjKX1mdW5jdGlvbiBIcihu
LHQpe3JldHVybiB0LmFuZ2xlLW4uYW5nbGV9ZnVuY3Rpb24gRnIoKXtHcih0aGlzKSx0aGlzLng9
dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24gT3Iobil7dmFy
IHQ9bi5QLGU9bi5OO2lmKHQmJmUpe3ZhciByPXQuc2l0ZSx1PW4uc2l0ZSxpPWUuc2l0ZTtpZihy
IT09aSl7dmFyIG89dS54LGE9dS55LGM9ci54LW8scz1yLnktYSxsPWkueC1vLGY9aS55LWEsaD0y
KihjKmYtcypsKTtpZighKGg+PS1FYSkpe3ZhciBnPWMqYytzKnMscD1sKmwrZipmLHY9KGYqZy1z
KnApL2gsZD0oYypwLWwqZykvaCxmPWQrYSxtPVdjLnBvcCgpfHxuZXcgRnI7bS5hcmM9bixtLnNp
dGU9dSxtLng9ditvLG0ueT1mK01hdGguc3FydCh2KnYrZCpkKSxtLmN5PWYsbi5jaXJjbGU9bTtm
b3IodmFyIHk9bnVsbCx4PSRjLl87eDspaWYobS55PHgueXx8bS55PT09eC55JiZtLng8PXgueCl7
aWYoIXguTCl7eT14LlA7YnJlYWt9eD14Lkx9ZWxzZXtpZigheC5SKXt5PXg7YnJlYWt9eD14LlJ9
JGMuaW5zZXJ0KHksbSkseXx8KFhjPW0pfX19fWZ1bmN0aW9uIFlyKG4pe3ZhciB0PW4uY2lyY2xl
O3QmJih0LlB8fChYYz10Lk4pLCRjLnJlbW92ZSh0KSxXYy5wdXNoKHQpLEdyKHQpLG4uY2lyY2xl
PW51bGwpfWZ1bmN0aW9uIElyKG4pe2Zvcih2YXIgdCxlPUljLHI9UGUoblswXVswXSxuWzBdWzFd
LG5bMV1bMF0sblsxXVsxXSksdT1lLmxlbmd0aDt1LS07KXQ9ZVt1XSwoIVpyKHQsbil8fCFyKHQp
fHx1YSh0LmEueC10LmIueCk8a2EmJnVhKHQuYS55LXQuYi55KTxrYSkmJih0LmE9dC5iPW51bGws
ZS5zcGxpY2UodSwxKSl9ZnVuY3Rpb24gWnIobix0KXt2YXIgZT1uLmI7aWYoZSlyZXR1cm4hMDt2
YXIgcix1LGk9bi5hLG89dFswXVswXSxhPXRbMV1bMF0sYz10WzBdWzFdLHM9dFsxXVsxXSxsPW4u
bCxmPW4ucixoPWwueCxnPWwueSxwPWYueCx2PWYueSxkPShoK3ApLzIsbT0oZyt2KS8yO2lmKHY9
PT1nKXtpZihvPmR8fGQ+PWEpcmV0dXJuO2lmKGg+cCl7aWYoaSl7aWYoaS55Pj1zKXJldHVybn1l
bHNlIGk9e3g6ZCx5OmN9O2U9e3g6ZCx5OnN9fWVsc2V7aWYoaSl7aWYoaS55PGMpcmV0dXJufWVs
c2UgaT17eDpkLHk6c307ZT17eDpkLHk6Y319fWVsc2UgaWYocj0oaC1wKS8odi1nKSx1PW0tcipk
LC0xPnJ8fHI+MSlpZihoPnApe2lmKGkpe2lmKGkueT49cylyZXR1cm59ZWxzZSBpPXt4OihjLXUp
L3IseTpjfTtlPXt4OihzLXUpL3IseTpzfX1lbHNle2lmKGkpe2lmKGkueTxjKXJldHVybn1lbHNl
IGk9e3g6KHMtdSkvcix5OnN9O2U9e3g6KGMtdSkvcix5OmN9fWVsc2UgaWYodj5nKXtpZihpKXtp
ZihpLng+PWEpcmV0dXJufWVsc2UgaT17eDpvLHk6cipvK3V9O2U9e3g6YSx5OnIqYSt1fX1lbHNl
e2lmKGkpe2lmKGkueDxvKXJldHVybn1lbHNlIGk9e3g6YSx5OnIqYSt1fTtlPXt4Om8seTpyKm8r
dX19cmV0dXJuIG4uYT1pLG4uYj1lLCEwfWZ1bmN0aW9uIFZyKG4sdCl7dGhpcy5sPW4sdGhpcy5y
PXQsdGhpcy5hPXRoaXMuYj1udWxsfWZ1bmN0aW9uIFhyKG4sdCxlLHIpe3ZhciB1PW5ldyBWcihu
LHQpO3JldHVybiBJYy5wdXNoKHUpLGUmJkJyKHUsbix0LGUpLHImJkJyKHUsdCxuLHIpLFpjW24u
aV0uZWRnZXMucHVzaChuZXcgV3IodSxuLHQpKSxaY1t0LmldLmVkZ2VzLnB1c2gobmV3IFdyKHUs
dCxuKSksdX1mdW5jdGlvbiAkcihuLHQsZSl7dmFyIHI9bmV3IFZyKG4sbnVsbCk7cmV0dXJuIHIu
YT10LHIuYj1lLEljLnB1c2gocikscn1mdW5jdGlvbiBCcihuLHQsZSxyKXtuLmF8fG4uYj9uLmw9
PT1lP24uYj1yOm4uYT1yOihuLmE9cixuLmw9dCxuLnI9ZSl9ZnVuY3Rpb24gV3Iobix0LGUpe3Zh
ciByPW4uYSx1PW4uYjt0aGlzLmVkZ2U9bix0aGlzLnNpdGU9dCx0aGlzLmFuZ2xlPWU/TWF0aC5h
dGFuMihlLnktdC55LGUueC10LngpOm4ubD09PXQ/TWF0aC5hdGFuMih1Lngtci54LHIueS11Lnkp
Ok1hdGguYXRhbjIoci54LXUueCx1Lnktci55KX1mdW5jdGlvbiBKcigpe3RoaXMuXz1udWxsfWZ1
bmN0aW9uIEdyKG4pe24uVT1uLkM9bi5MPW4uUj1uLlA9bi5OPW51bGx9ZnVuY3Rpb24gS3Iobix0
KXt2YXIgZT10LHI9dC5SLHU9ZS5VO3U/dS5MPT09ZT91Lkw9cjp1LlI9cjpuLl89cixyLlU9dSxl
LlU9cixlLlI9ci5MLGUuUiYmKGUuUi5VPWUpLHIuTD1lfWZ1bmN0aW9uIFFyKG4sdCl7dmFyIGU9
dCxyPXQuTCx1PWUuVTt1P3UuTD09PWU/dS5MPXI6dS5SPXI6bi5fPXIsci5VPXUsZS5VPXIsZS5M
PXIuUixlLkwmJihlLkwuVT1lKSxyLlI9ZX1mdW5jdGlvbiBudShuKXtmb3IoO24uTDspbj1uLkw7
cmV0dXJuIG59ZnVuY3Rpb24gdHUobix0KXt2YXIgZSxyLHUsaT1uLnNvcnQoZXUpLnBvcCgpO2Zv
cihJYz1bXSxaYz1uZXcgQXJyYXkobi5sZW5ndGgpLFZjPW5ldyBKciwkYz1uZXcgSnI7OylpZih1
PVhjLGkmJighdXx8aS55PHUueXx8aS55PT09dS55JiZpLng8dS54KSkoaS54IT09ZXx8aS55IT09
cikmJihaY1tpLmldPW5ldyBVcihpKSxScihpKSxlPWkueCxyPWkueSksaT1uLnBvcCgpO2Vsc2V7
aWYoIXUpYnJlYWs7cXIodS5hcmMpfXQmJihJcih0KSxqcih0KSk7dmFyIG89e2NlbGxzOlpjLGVk
Z2VzOkljfTtyZXR1cm4gVmM9JGM9SWM9WmM9bnVsbCxvfWZ1bmN0aW9uIGV1KG4sdCl7cmV0dXJu
IHQueS1uLnl8fHQueC1uLnh9ZnVuY3Rpb24gcnUobix0LGUpe3JldHVybihuLngtZS54KSoodC55
LW4ueSktKG4ueC10LngpKihlLnktbi55KX1mdW5jdGlvbiB1dShuKXtyZXR1cm4gbi54fWZ1bmN0
aW9uIGl1KG4pe3JldHVybiBuLnl9ZnVuY3Rpb24gb3UoKXtyZXR1cm57bGVhZjohMCxub2Rlczpb
XSxwb2ludDpudWxsLHg6bnVsbCx5Om51bGx9fWZ1bmN0aW9uIGF1KG4sdCxlLHIsdSxpKXtpZigh
bih0LGUscix1LGkpKXt2YXIgbz0uNSooZSt1KSxhPS41KihyK2kpLGM9dC5ub2RlcztjWzBdJiZh
dShuLGNbMF0sZSxyLG8sYSksY1sxXSYmYXUobixjWzFdLG8scix1LGEpLGNbMl0mJmF1KG4sY1sy
XSxlLGEsbyxpKSxjWzNdJiZhdShuLGNbM10sbyxhLHUsaSl9fWZ1bmN0aW9uIGN1KG4sdCl7bj1a
by5yZ2IobiksdD1aby5yZ2IodCk7dmFyIGU9bi5yLHI9bi5nLHU9bi5iLGk9dC5yLWUsbz10Lmct
cixhPXQuYi11O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4iIyIrZHQoTWF0aC5yb3VuZChlK2kq
bikpK2R0KE1hdGgucm91bmQocitvKm4pKStkdChNYXRoLnJvdW5kKHUrYSpuKSl9fWZ1bmN0aW9u
IHN1KG4sdCl7dmFyIGUscj17fSx1PXt9O2ZvcihlIGluIG4pZSBpbiB0P3JbZV09aHUobltlXSx0
W2VdKTp1W2VdPW5bZV07Zm9yKGUgaW4gdCllIGluIG58fCh1W2VdPXRbZV0pO3JldHVybiBmdW5j
dGlvbihuKXtmb3IoZSBpbiByKXVbZV09cltlXShuKTtyZXR1cm4gdX19ZnVuY3Rpb24gbHUobix0
KXtyZXR1cm4gdC09bj0rbixmdW5jdGlvbihlKXtyZXR1cm4gbit0KmV9fWZ1bmN0aW9uIGZ1KG4s
dCl7dmFyIGUscix1LGk9R2MubGFzdEluZGV4PUtjLmxhc3RJbmRleD0wLG89LTEsYT1bXSxjPVtd
O2ZvcihuKz0iIix0Kz0iIjsoZT1HYy5leGVjKG4pKSYmKHI9S2MuZXhlYyh0KSk7KSh1PXIuaW5k
ZXgpPmkmJih1PXQuc3Vic3RyaW5nKGksdSksYVtvXT9hW29dKz11OmFbKytvXT11KSwoZT1lWzBd
KT09PShyPXJbMF0pP2Fbb10/YVtvXSs9cjphWysrb109cjooYVsrK29dPW51bGwsYy5wdXNoKHtp
Om8seDpsdShlLHIpfSkpLGk9S2MubGFzdEluZGV4O3JldHVybiBpPHQubGVuZ3RoJiYodT10LnN1
YnN0cmluZyhpKSxhW29dP2Fbb10rPXU6YVsrK29dPXUpLGEubGVuZ3RoPDI/Y1swXT8odD1jWzBd
LngsZnVuY3Rpb24obil7cmV0dXJuIHQobikrIiJ9KTpmdW5jdGlvbigpe3JldHVybiB0fToodD1j
Lmxlbmd0aCxmdW5jdGlvbihuKXtmb3IodmFyIGUscj0wO3Q+cjsrK3IpYVsoZT1jW3JdKS5pXT1l
Lngobik7cmV0dXJuIGEuam9pbigiIil9KX1mdW5jdGlvbiBodShuLHQpe2Zvcih2YXIgZSxyPVpv
LmludGVycG9sYXRvcnMubGVuZ3RoOy0tcj49MCYmIShlPVpvLmludGVycG9sYXRvcnNbcl0obix0
KSk7KTtyZXR1cm4gZX1mdW5jdGlvbiBndShuLHQpe3ZhciBlLHI9W10sdT1bXSxpPW4ubGVuZ3Ro
LG89dC5sZW5ndGgsYT1NYXRoLm1pbihuLmxlbmd0aCx0Lmxlbmd0aCk7Zm9yKGU9MDthPmU7Kytl
KXIucHVzaChodShuW2VdLHRbZV0pKTtmb3IoO2k+ZTsrK2UpdVtlXT1uW2VdO2Zvcig7bz5lOysr
ZSl1W2VdPXRbZV07cmV0dXJuIGZ1bmN0aW9uKG4pe2ZvcihlPTA7YT5lOysrZSl1W2VdPXJbZV0o
bik7cmV0dXJuIHV9fWZ1bmN0aW9uIHB1KG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gMD49
dD8wOnQ+PTE/MTpuKHQpfX1mdW5jdGlvbiB2dShuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJu
IDEtbigxLXQpfX1mdW5jdGlvbiBkdShuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuLjUqKC41
PnQ/bigyKnQpOjItbigyLTIqdCkpfX1mdW5jdGlvbiBtdShuKXtyZXR1cm4gbipufWZ1bmN0aW9u
IHl1KG4pe3JldHVybiBuKm4qbn1mdW5jdGlvbiB4dShuKXtpZigwPj1uKXJldHVybiAwO2lmKG4+
PTEpcmV0dXJuIDE7dmFyIHQ9bipuLGU9dCpuO3JldHVybiA0KiguNT5uP2U6Myoobi10KStlLS43
NSl9ZnVuY3Rpb24gTXUobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdyh0LG4p
fX1mdW5jdGlvbiBfdShuKXtyZXR1cm4gMS1NYXRoLmNvcyhuKlNhKX1mdW5jdGlvbiBidShuKXty
ZXR1cm4gTWF0aC5wb3coMiwxMCoobi0xKSl9ZnVuY3Rpb24gd3Uobil7cmV0dXJuIDEtTWF0aC5z
cXJ0KDEtbipuKX1mdW5jdGlvbiBTdShuLHQpe3ZhciBlO3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PDImJih0PS40NSksYXJndW1lbnRzLmxlbmd0aD9lPXQvd2EqTWF0aC5hc2luKDEvbik6KG49MSxl
PXQvNCksZnVuY3Rpb24ocil7cmV0dXJuIDErbipNYXRoLnBvdygyLC0xMCpyKSpNYXRoLnNpbigo
ci1lKSp3YS90KX19ZnVuY3Rpb24ga3Uobil7cmV0dXJuIG58fChuPTEuNzAxNTgpLGZ1bmN0aW9u
KHQpe3JldHVybiB0KnQqKChuKzEpKnQtbil9fWZ1bmN0aW9uIEV1KG4pe3JldHVybiAxLzIuNzU+
bj83LjU2MjUqbipuOjIvMi43NT5uPzcuNTYyNSoobi09MS41LzIuNzUpKm4rLjc1OjIuNS8yLjc1
Pm4/Ny41NjI1KihuLT0yLjI1LzIuNzUpKm4rLjkzNzU6Ny41NjI1KihuLT0yLjYyNS8yLjc1KSpu
Ky45ODQzNzV9ZnVuY3Rpb24gQXUobix0KXtuPVpvLmhjbChuKSx0PVpvLmhjbCh0KTt2YXIgZT1u
Lmgscj1uLmMsdT1uLmwsaT10LmgtZSxvPXQuYy1yLGE9dC5sLXU7cmV0dXJuIGlzTmFOKG8pJiYo
bz0wLHI9aXNOYU4ocik/dC5jOnIpLGlzTmFOKGkpPyhpPTAsZT1pc05hTihlKT90Lmg6ZSk6aT4x
ODA/aS09MzYwOi0xODA+aSYmKGkrPTM2MCksZnVuY3Rpb24obil7cmV0dXJuIG90KGUraSpuLHIr
bypuLHUrYSpuKSsiIn19ZnVuY3Rpb24gQ3Uobix0KXtuPVpvLmhzbChuKSx0PVpvLmhzbCh0KTt2
YXIgZT1uLmgscj1uLnMsdT1uLmwsaT10LmgtZSxvPXQucy1yLGE9dC5sLXU7cmV0dXJuIGlzTmFO
KG8pJiYobz0wLHI9aXNOYU4ocik/dC5zOnIpLGlzTmFOKGkpPyhpPTAsZT1pc05hTihlKT90Lmg6
ZSk6aT4xODA/aS09MzYwOi0xODA+aSYmKGkrPTM2MCksZnVuY3Rpb24obil7cmV0dXJuIHV0KGUr
aSpuLHIrbypuLHUrYSpuKSsiIn19ZnVuY3Rpb24gTnUobix0KXtuPVpvLmxhYihuKSx0PVpvLmxh
Yih0KTt2YXIgZT1uLmwscj1uLmEsdT1uLmIsaT10LmwtZSxvPXQuYS1yLGE9dC5iLXU7cmV0dXJu
IGZ1bmN0aW9uKG4pe3JldHVybiBjdChlK2kqbixyK28qbix1K2EqbikrIiJ9fWZ1bmN0aW9uIHp1
KG4sdCl7cmV0dXJuIHQtPW4sZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucm91bmQobit0KmUpfX1m
dW5jdGlvbiBMdShuKXt2YXIgdD1bbi5hLG4uYl0sZT1bbi5jLG4uZF0scj1xdSh0KSx1PVR1KHQs
ZSksaT1xdShSdShlLHQsLXUpKXx8MDt0WzBdKmVbMV08ZVswXSp0WzFdJiYodFswXSo9LTEsdFsx
XSo9LTEscio9LTEsdSo9LTEpLHRoaXMucm90YXRlPShyP01hdGguYXRhbjIodFsxXSx0WzBdKTpN
YXRoLmF0YW4yKC1lWzBdLGVbMV0pKSpDYSx0aGlzLnRyYW5zbGF0ZT1bbi5lLG4uZl0sdGhpcy5z
Y2FsZT1bcixpXSx0aGlzLnNrZXc9aT9NYXRoLmF0YW4yKHUsaSkqQ2E6MH1mdW5jdGlvbiBUdShu
LHQpe3JldHVybiBuWzBdKnRbMF0rblsxXSp0WzFdfWZ1bmN0aW9uIHF1KG4pe3ZhciB0PU1hdGgu
c3FydChUdShuLG4pKTtyZXR1cm4gdCYmKG5bMF0vPXQsblsxXS89dCksdH1mdW5jdGlvbiBSdShu
LHQsZSl7cmV0dXJuIG5bMF0rPWUqdFswXSxuWzFdKz1lKnRbMV0sbn1mdW5jdGlvbiBEdShuLHQp
e3ZhciBlLHI9W10sdT1bXSxpPVpvLnRyYW5zZm9ybShuKSxvPVpvLnRyYW5zZm9ybSh0KSxhPWku
dHJhbnNsYXRlLGM9by50cmFuc2xhdGUscz1pLnJvdGF0ZSxsPW8ucm90YXRlLGY9aS5za2V3LGg9
by5za2V3LGc9aS5zY2FsZSxwPW8uc2NhbGU7cmV0dXJuIGFbMF0hPWNbMF18fGFbMV0hPWNbMV0/
KHIucHVzaCgidHJhbnNsYXRlKCIsbnVsbCwiLCIsbnVsbCwiKSIpLHUucHVzaCh7aToxLHg6bHUo
YVswXSxjWzBdKX0se2k6Myx4Omx1KGFbMV0sY1sxXSl9KSk6Y1swXXx8Y1sxXT9yLnB1c2goInRy
YW5zbGF0ZSgiK2MrIikiKTpyLnB1c2goIiIpLHMhPWw/KHMtbD4xODA/bCs9MzYwOmwtcz4xODAm
JihzKz0zNjApLHUucHVzaCh7aTpyLnB1c2goci5wb3AoKSsicm90YXRlKCIsbnVsbCwiKSIpLTIs
eDpsdShzLGwpfSkpOmwmJnIucHVzaChyLnBvcCgpKyJyb3RhdGUoIitsKyIpIiksZiE9aD91LnB1
c2goe2k6ci5wdXNoKHIucG9wKCkrInNrZXdYKCIsbnVsbCwiKSIpLTIseDpsdShmLGgpfSk6aCYm
ci5wdXNoKHIucG9wKCkrInNrZXdYKCIraCsiKSIpLGdbMF0hPXBbMF18fGdbMV0hPXBbMV0/KGU9
ci5wdXNoKHIucG9wKCkrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpLHUucHVzaCh7aTplLTQs
eDpsdShnWzBdLHBbMF0pfSx7aTplLTIseDpsdShnWzFdLHBbMV0pfSkpOigxIT1wWzBdfHwxIT1w
WzFdKSYmci5wdXNoKHIucG9wKCkrInNjYWxlKCIrcCsiKSIpLGU9dS5sZW5ndGgsZnVuY3Rpb24o
bil7Zm9yKHZhciB0LGk9LTE7KytpPGU7KXJbKHQ9dVtpXSkuaV09dC54KG4pO3JldHVybiByLmpv
aW4oIiIpfX1mdW5jdGlvbiBQdShuLHQpe3JldHVybiB0PXQtKG49K24pPzEvKHQtbik6MCxmdW5j
dGlvbihlKXtyZXR1cm4oZS1uKSp0fX1mdW5jdGlvbiBVdShuLHQpe3JldHVybiB0PXQtKG49K24p
PzEvKHQtbik6MCxmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigxLChlLW4p
KnQpKX19ZnVuY3Rpb24ganUobil7Zm9yKHZhciB0PW4uc291cmNlLGU9bi50YXJnZXQscj1GdSh0
LGUpLHU9W3RdO3QhPT1yOyl0PXQucGFyZW50LHUucHVzaCh0KTtmb3IodmFyIGk9dS5sZW5ndGg7
ZSE9PXI7KXUuc3BsaWNlKGksMCxlKSxlPWUucGFyZW50O3JldHVybiB1fWZ1bmN0aW9uIEh1KG4p
e2Zvcih2YXIgdD1bXSxlPW4ucGFyZW50O251bGwhPWU7KXQucHVzaChuKSxuPWUsZT1lLnBhcmVu
dDtyZXR1cm4gdC5wdXNoKG4pLHR9ZnVuY3Rpb24gRnUobix0KXtpZihuPT09dClyZXR1cm4gbjtm
b3IodmFyIGU9SHUobikscj1IdSh0KSx1PWUucG9wKCksaT1yLnBvcCgpLG89bnVsbDt1PT09aTsp
bz11LHU9ZS5wb3AoKSxpPXIucG9wKCk7cmV0dXJuIG99ZnVuY3Rpb24gT3Uobil7bi5maXhlZHw9
Mn1mdW5jdGlvbiBZdShuKXtuLmZpeGVkJj0tN31mdW5jdGlvbiBJdShuKXtuLmZpeGVkfD00LG4u
cHg9bi54LG4ucHk9bi55fWZ1bmN0aW9uIFp1KG4pe24uZml4ZWQmPS01fWZ1bmN0aW9uIFZ1KG4s
dCxlKXt2YXIgcj0wLHU9MDtpZihuLmNoYXJnZT0wLCFuLmxlYWYpZm9yKHZhciBpLG89bi5ub2Rl
cyxhPW8ubGVuZ3RoLGM9LTE7KytjPGE7KWk9b1tjXSxudWxsIT1pJiYoVnUoaSx0LGUpLG4uY2hh
cmdlKz1pLmNoYXJnZSxyKz1pLmNoYXJnZSppLmN4LHUrPWkuY2hhcmdlKmkuY3kpO2lmKG4ucG9p
bnQpe24ubGVhZnx8KG4ucG9pbnQueCs9TWF0aC5yYW5kb20oKS0uNSxuLnBvaW50LnkrPU1hdGgu
cmFuZG9tKCktLjUpO3ZhciBzPXQqZVtuLnBvaW50LmluZGV4XTtuLmNoYXJnZSs9bi5wb2ludENo
YXJnZT1zLHIrPXMqbi5wb2ludC54LHUrPXMqbi5wb2ludC55fW4uY3g9ci9uLmNoYXJnZSxuLmN5
PXUvbi5jaGFyZ2V9ZnVuY3Rpb24gWHUobix0KXtyZXR1cm4gWm8ucmViaW5kKG4sdCwic29ydCIs
ImNoaWxkcmVuIiwidmFsdWUiKSxuLm5vZGVzPW4sbi5saW5rcz1LdSxufWZ1bmN0aW9uICR1KG4s
dCl7Zm9yKHZhciBlPVtuXTtudWxsIT0obj1lLnBvcCgpKTspaWYodChuKSwodT1uLmNoaWxkcmVu
KSYmKHI9dS5sZW5ndGgpKWZvcih2YXIgcix1Oy0tcj49MDspZS5wdXNoKHVbcl0pfWZ1bmN0aW9u
IEJ1KG4sdCl7Zm9yKHZhciBlPVtuXSxyPVtdO251bGwhPShuPWUucG9wKCkpOylpZihyLnB1c2go
biksKGk9bi5jaGlsZHJlbikmJih1PWkubGVuZ3RoKSlmb3IodmFyIHUsaSxvPS0xOysrbzx1Oyll
LnB1c2goaVtvXSk7Zm9yKDtudWxsIT0obj1yLnBvcCgpKTspdChuKX1mdW5jdGlvbiBXdShuKXty
ZXR1cm4gbi5jaGlsZHJlbn1mdW5jdGlvbiBKdShuKXtyZXR1cm4gbi52YWx1ZX1mdW5jdGlvbiBH
dShuLHQpe3JldHVybiB0LnZhbHVlLW4udmFsdWV9ZnVuY3Rpb24gS3Uobil7cmV0dXJuIFpvLm1l
cmdlKG4ubWFwKGZ1bmN0aW9uKG4pe3JldHVybihuLmNoaWxkcmVufHxbXSkubWFwKGZ1bmN0aW9u
KHQpe3JldHVybntzb3VyY2U6bix0YXJnZXQ6dH19KX0pKX1mdW5jdGlvbiBRdShuKXtyZXR1cm4g
bi54fWZ1bmN0aW9uIG5pKG4pe3JldHVybiBuLnl9ZnVuY3Rpb24gdGkobix0LGUpe24ueTA9dCxu
Lnk9ZX1mdW5jdGlvbiBlaShuKXtyZXR1cm4gWm8ucmFuZ2Uobi5sZW5ndGgpfWZ1bmN0aW9uIHJp
KG4pe2Zvcih2YXIgdD0tMSxlPW5bMF0ubGVuZ3RoLHI9W107Kyt0PGU7KXJbdF09MDtyZXR1cm4g
cn1mdW5jdGlvbiB1aShuKXtmb3IodmFyIHQsZT0xLHI9MCx1PW5bMF1bMV0saT1uLmxlbmd0aDtp
PmU7KytlKSh0PW5bZV1bMV0pPnUmJihyPWUsdT10KTtyZXR1cm4gcn1mdW5jdGlvbiBpaShuKXty
ZXR1cm4gbi5yZWR1Y2Uob2ksMCl9ZnVuY3Rpb24gb2kobix0KXtyZXR1cm4gbit0WzFdfWZ1bmN0
aW9uIGFpKG4sdCl7cmV0dXJuIGNpKG4sTWF0aC5jZWlsKE1hdGgubG9nKHQubGVuZ3RoKS9NYXRo
LkxOMisxKSl9ZnVuY3Rpb24gY2kobix0KXtmb3IodmFyIGU9LTEscj0rblswXSx1PShuWzFdLXIp
L3QsaT1bXTsrK2U8PXQ7KWlbZV09dSplK3I7cmV0dXJuIGl9ZnVuY3Rpb24gc2kobil7cmV0dXJu
W1pvLm1pbihuKSxaby5tYXgobildfWZ1bmN0aW9uIGxpKG4sdCl7cmV0dXJuIG4udmFsdWUtdC52
YWx1ZX1mdW5jdGlvbiBmaShuLHQpe3ZhciBlPW4uX3BhY2tfbmV4dDtuLl9wYWNrX25leHQ9dCx0
Ll9wYWNrX3ByZXY9bix0Ll9wYWNrX25leHQ9ZSxlLl9wYWNrX3ByZXY9dH1mdW5jdGlvbiBoaShu
LHQpe24uX3BhY2tfbmV4dD10LHQuX3BhY2tfcHJldj1ufWZ1bmN0aW9uIGdpKG4sdCl7dmFyIGU9
dC54LW4ueCxyPXQueS1uLnksdT1uLnIrdC5yO3JldHVybi45OTkqdSp1PmUqZStyKnJ9ZnVuY3Rp
b24gcGkobil7ZnVuY3Rpb24gdChuKXtsPU1hdGgubWluKG4ueC1uLnIsbCksZj1NYXRoLm1heChu
Lngrbi5yLGYpLGg9TWF0aC5taW4obi55LW4ucixoKSxnPU1hdGgubWF4KG4ueStuLnIsZyl9aWYo
KGU9bi5jaGlsZHJlbikmJihzPWUubGVuZ3RoKSl7dmFyIGUscix1LGksbyxhLGMscyxsPTEvMCxm
PS0xLzAsaD0xLzAsZz0tMS8wO2lmKGUuZm9yRWFjaCh2aSkscj1lWzBdLHIueD0tci5yLHIueT0w
LHQocikscz4xJiYodT1lWzFdLHUueD11LnIsdS55PTAsdCh1KSxzPjIpKWZvcihpPWVbMl0seWko
cix1LGkpLHQoaSksZmkocixpKSxyLl9wYWNrX3ByZXY9aSxmaShpLHUpLHU9ci5fcGFja19uZXh0
LG89MztzPm87bysrKXt5aShyLHUsaT1lW29dKTt2YXIgcD0wLHY9MSxkPTE7Zm9yKGE9dS5fcGFj
a19uZXh0O2EhPT11O2E9YS5fcGFja19uZXh0LHYrKylpZihnaShhLGkpKXtwPTE7YnJlYWt9aWYo
MT09cClmb3IoYz1yLl9wYWNrX3ByZXY7YyE9PWEuX3BhY2tfcHJldiYmIWdpKGMsaSk7Yz1jLl9w
YWNrX3ByZXYsZCsrKTtwPyhkPnZ8fHY9PWQmJnUucjxyLnI/aGkocix1PWEpOmhpKHI9Yyx1KSxv
LS0pOihmaShyLGkpLHU9aSx0KGkpKX12YXIgbT0obCtmKS8yLHk9KGgrZykvMix4PTA7Zm9yKG89
MDtzPm87bysrKWk9ZVtvXSxpLngtPW0saS55LT15LHg9TWF0aC5tYXgoeCxpLnIrTWF0aC5zcXJ0
KGkueCppLngraS55KmkueSkpO24ucj14LGUuZm9yRWFjaChkaSl9fWZ1bmN0aW9uIHZpKG4pe24u
X3BhY2tfbmV4dD1uLl9wYWNrX3ByZXY9bn1mdW5jdGlvbiBkaShuKXtkZWxldGUgbi5fcGFja19u
ZXh0LGRlbGV0ZSBuLl9wYWNrX3ByZXZ9ZnVuY3Rpb24gbWkobix0LGUscil7dmFyIHU9bi5jaGls
ZHJlbjtpZihuLng9dCs9cipuLngsbi55PWUrPXIqbi55LG4ucio9cix1KWZvcih2YXIgaT0tMSxv
PXUubGVuZ3RoOysraTxvOyltaSh1W2ldLHQsZSxyKX1mdW5jdGlvbiB5aShuLHQsZSl7dmFyIHI9
bi5yK2Uucix1PXQueC1uLngsaT10Lnktbi55O2lmKHImJih1fHxpKSl7dmFyIG89dC5yK2Uucixh
PXUqdStpKmk7byo9byxyKj1yO3ZhciBjPS41KyhyLW8pLygyKmEpLHM9TWF0aC5zcXJ0KE1hdGgu
bWF4KDAsMipvKihyK2EpLShyLT1hKSpyLW8qbykpLygyKmEpO2UueD1uLngrYyp1K3MqaSxlLnk9
bi55K2MqaS1zKnV9ZWxzZSBlLng9bi54K3IsZS55PW4ueX1mdW5jdGlvbiB4aShuLHQpe3JldHVy
biBuLnBhcmVudD09dC5wYXJlbnQ/MToyfWZ1bmN0aW9uIE1pKG4pe3ZhciB0PW4uY2hpbGRyZW47
cmV0dXJuIHQubGVuZ3RoP3RbMF06bi50fWZ1bmN0aW9uIF9pKG4pe3ZhciB0LGU9bi5jaGlsZHJl
bjtyZXR1cm4odD1lLmxlbmd0aCk/ZVt0LTFdOm4udH1mdW5jdGlvbiBiaShuLHQsZSl7dmFyIHI9
ZS8odC5pLW4uaSk7dC5jLT1yLHQucys9ZSxuLmMrPXIsdC56Kz1lLHQubSs9ZX1mdW5jdGlvbiB3
aShuKXtmb3IodmFyIHQsZT0wLHI9MCx1PW4uY2hpbGRyZW4saT11Lmxlbmd0aDstLWk+PTA7KXQ9
dVtpXSx0LnorPWUsdC5tKz1lLGUrPXQucysocis9dC5jKX1mdW5jdGlvbiBTaShuLHQsZSl7cmV0
dXJuIG4uYS5wYXJlbnQ9PT10LnBhcmVudD9uLmE6ZX1mdW5jdGlvbiBraShuKXtyZXR1cm4gMSta
by5tYXgobixmdW5jdGlvbihuKXtyZXR1cm4gbi55fSl9ZnVuY3Rpb24gRWkobil7cmV0dXJuIG4u
cmVkdWNlKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4rdC54fSwwKS9uLmxlbmd0aH1mdW5jdGlvbiBB
aShuKXt2YXIgdD1uLmNoaWxkcmVuO3JldHVybiB0JiZ0Lmxlbmd0aD9BaSh0WzBdKTpufWZ1bmN0
aW9uIENpKG4pe3ZhciB0LGU9bi5jaGlsZHJlbjtyZXR1cm4gZSYmKHQ9ZS5sZW5ndGgpP0NpKGVb
dC0xXSk6bn1mdW5jdGlvbiBOaShuKXtyZXR1cm57eDpuLngseTpuLnksZHg6bi5keCxkeTpuLmR5
fX1mdW5jdGlvbiB6aShuLHQpe3ZhciBlPW4ueCt0WzNdLHI9bi55K3RbMF0sdT1uLmR4LXRbMV0t
dFszXSxpPW4uZHktdFswXS10WzJdO3JldHVybiAwPnUmJihlKz11LzIsdT0wKSwwPmkmJihyKz1p
LzIsaT0wKSx7eDplLHk6cixkeDp1LGR5Oml9fWZ1bmN0aW9uIExpKG4pe3ZhciB0PW5bMF0sZT1u
W24ubGVuZ3RoLTFdO3JldHVybiBlPnQ/W3QsZV06W2UsdF19ZnVuY3Rpb24gVGkobil7cmV0dXJu
IG4ucmFuZ2VFeHRlbnQ/bi5yYW5nZUV4dGVudCgpOkxpKG4ucmFuZ2UoKSl9ZnVuY3Rpb24gcWko
bix0LGUscil7dmFyIHU9ZShuWzBdLG5bMV0pLGk9cih0WzBdLHRbMV0pO3JldHVybiBmdW5jdGlv
bihuKXtyZXR1cm4gaSh1KG4pKX19ZnVuY3Rpb24gUmkobix0KXt2YXIgZSxyPTAsdT1uLmxlbmd0
aC0xLGk9bltyXSxvPW5bdV07cmV0dXJuIGk+byYmKGU9cixyPXUsdT1lLGU9aSxpPW8sbz1lKSxu
W3JdPXQuZmxvb3IoaSksblt1XT10LmNlaWwobyksbn1mdW5jdGlvbiBEaShuKXtyZXR1cm4gbj97
Zmxvb3I6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguZmxvb3IodC9uKSpufSxjZWlsOmZ1bmN0aW9u
KHQpe3JldHVybiBNYXRoLmNlaWwodC9uKSpufX06c3N9ZnVuY3Rpb24gUGkobix0LGUscil7dmFy
IHU9W10saT1bXSxvPTAsYT1NYXRoLm1pbihuLmxlbmd0aCx0Lmxlbmd0aCktMTtmb3IoblthXTxu
WzBdJiYobj1uLnNsaWNlKCkucmV2ZXJzZSgpLHQ9dC5zbGljZSgpLnJldmVyc2UoKSk7KytvPD1h
Oyl1LnB1c2goZShuW28tMV0sbltvXSkpLGkucHVzaChyKHRbby0xXSx0W29dKSk7cmV0dXJuIGZ1
bmN0aW9uKHQpe3ZhciBlPVpvLmJpc2VjdChuLHQsMSxhKS0xO3JldHVybiBpW2VdKHVbZV0odCkp
fX1mdW5jdGlvbiBVaShuLHQsZSxyKXtmdW5jdGlvbiB1KCl7dmFyIHU9TWF0aC5taW4obi5sZW5n
dGgsdC5sZW5ndGgpPjI/UGk6cWksYz1yP1V1OlB1O3JldHVybiBvPXUobix0LGMsZSksYT11KHQs
bixjLGh1KSxpfWZ1bmN0aW9uIGkobil7cmV0dXJuIG8obil9dmFyIG8sYTtyZXR1cm4gaS5pbnZl
cnQ9ZnVuY3Rpb24obil7cmV0dXJuIGEobil9LGkuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhuPXQubWFwKE51bWJlciksdSgpKTpufSxpLnJhbmdlPWZ1bmN0aW9u
KG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sdSgpKTp0fSxpLnJhbmdlUm91bmQ9ZnVu
Y3Rpb24obil7cmV0dXJuIGkucmFuZ2UobikuaW50ZXJwb2xhdGUoenUpfSxpLmNsYW1wPWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdSgpKTpyfSxpLmludGVycG9sYXRl
PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdSgpKTplfSxpLnRpY2tz
PWZ1bmN0aW9uKHQpe3JldHVybiBPaShuLHQpfSxpLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxlKXty
ZXR1cm4gWWkobix0LGUpfSxpLm5pY2U9ZnVuY3Rpb24odCl7cmV0dXJuIEhpKG4sdCksdSgpfSxp
LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVWkobix0LGUscil9LHUoKX1mdW5jdGlvbiBqaShuLHQp
e3JldHVybiBaby5yZWJpbmQobix0LCJyYW5nZSIsInJhbmdlUm91bmQiLCJpbnRlcnBvbGF0ZSIs
ImNsYW1wIil9ZnVuY3Rpb24gSGkobix0KXtyZXR1cm4gUmkobixEaShGaShuLHQpWzJdKSl9ZnVu
Y3Rpb24gRmkobix0KXtudWxsPT10JiYodD0xMCk7dmFyIGU9TGkobikscj1lWzFdLWVbMF0sdT1N
YXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKHIvdCkvTWF0aC5MTjEwKSksaT10L3IqdTty
ZXR1cm4uMTU+PWk/dSo9MTA6LjM1Pj1pP3UqPTU6Ljc1Pj1pJiYodSo9MiksZVswXT1NYXRoLmNl
aWwoZVswXS91KSp1LGVbMV09TWF0aC5mbG9vcihlWzFdL3UpKnUrLjUqdSxlWzJdPXUsZX1mdW5j
dGlvbiBPaShuLHQpe3JldHVybiBaby5yYW5nZS5hcHBseShabyxGaShuLHQpKX1mdW5jdGlvbiBZ
aShuLHQsZSl7dmFyIHI9Rmkobix0KTtpZihlKXt2YXIgdT1HYS5leGVjKGUpO2lmKHUuc2hpZnQo
KSwicyI9PT11WzhdKXt2YXIgaT1aby5mb3JtYXRQcmVmaXgoTWF0aC5tYXgodWEoclswXSksdWEo
clsxXSkpKTtyZXR1cm4gdVs3XXx8KHVbN109Ii4iK0lpKGkuc2NhbGUoclsyXSkpKSx1WzhdPSJm
IixlPVpvLmZvcm1hdCh1LmpvaW4oIiIpKSxmdW5jdGlvbihuKXtyZXR1cm4gZShpLnNjYWxlKG4p
KStpLnN5bWJvbH19dVs3XXx8KHVbN109Ii4iK1ppKHVbOF0scikpLGU9dS5qb2luKCIiKX1lbHNl
IGU9IiwuIitJaShyWzJdKSsiZiI7cmV0dXJuIFpvLmZvcm1hdChlKX1mdW5jdGlvbiBJaShuKXty
ZXR1cm4tTWF0aC5mbG9vcihNYXRoLmxvZyhuKS9NYXRoLkxOMTArLjAxKX1mdW5jdGlvbiBaaShu
LHQpe3ZhciBlPUlpKHRbMl0pO3JldHVybiBuIGluIGxzP01hdGguYWJzKGUtSWkoTWF0aC5tYXgo
dWEodFswXSksdWEodFsxXSkpKSkrICsoImUiIT09bik6ZS0yKigiJSI9PT1uKX1mdW5jdGlvbiBW
aShuLHQsZSxyKXtmdW5jdGlvbiB1KG4pe3JldHVybihlP01hdGgubG9nKDA+bj8wOm4pOi1NYXRo
LmxvZyhuPjA/MDotbikpL01hdGgubG9nKHQpfWZ1bmN0aW9uIGkobil7cmV0dXJuIGU/TWF0aC5w
b3codCxuKTotTWF0aC5wb3codCwtbil9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbih1KHQpKX1yZXR1
cm4gby5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGkobi5pbnZlcnQodCkpfSxvLmRvbWFpbj1m
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10WzBdPj0wLG4uZG9tYWluKChy
PXQubWFwKE51bWJlcikpLm1hcCh1KSksbyk6cn0sby5iYXNlPWZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh0PStlLG4uZG9tYWluKHIubWFwKHUpKSxvKTp0fSxvLm5pY2U9ZnVu
Y3Rpb24oKXt2YXIgdD1SaShyLm1hcCh1KSxlP01hdGg6aHMpO3JldHVybiBuLmRvbWFpbih0KSxy
PXQubWFwKGkpLG99LG8udGlja3M9ZnVuY3Rpb24oKXt2YXIgbj1MaShyKSxvPVtdLGE9blswXSxj
PW5bMV0scz1NYXRoLmZsb29yKHUoYSkpLGw9TWF0aC5jZWlsKHUoYykpLGY9dCUxPzI6dDtpZihp
c0Zpbml0ZShsLXMpKXtpZihlKXtmb3IoO2w+cztzKyspZm9yKHZhciBoPTE7Zj5oO2grKylvLnB1
c2goaShzKSpoKTtvLnB1c2goaShzKSl9ZWxzZSBmb3Ioby5wdXNoKGkocykpO3MrKzxsOylmb3Io
dmFyIGg9Zi0xO2g+MDtoLS0pby5wdXNoKGkocykqaCk7Zm9yKHM9MDtvW3NdPGE7cysrKTtmb3Io
bD1vLmxlbmd0aDtvW2wtMV0+YztsLS0pO289by5zbGljZShzLGwpfXJldHVybiBvfSxvLnRpY2tG
b3JtYXQ9ZnVuY3Rpb24obix0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZnM7YXJndW1l
bnRzLmxlbmd0aDwyP3Q9ZnM6ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVpvLmZvcm1hdCh0KSk7
dmFyIHIsYT1NYXRoLm1heCguMSxuL28udGlja3MoKS5sZW5ndGgpLGM9ZT8ocj0xZS0xMixNYXRo
LmNlaWwpOihyPS0xZS0xMixNYXRoLmZsb29yKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG4v
aShjKHUobikrcikpPD1hP3Qobik6IiJ9fSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVmkobi5j
b3B5KCksdCxlLHIpfSxqaShvLG4pfWZ1bmN0aW9uIFhpKG4sdCxlKXtmdW5jdGlvbiByKHQpe3Jl
dHVybiBuKHUodCkpfXZhciB1PSRpKHQpLGk9JGkoMS90KTtyZXR1cm4gci5pbnZlcnQ9ZnVuY3Rp
b24odCl7cmV0dXJuIGkobi5pbnZlcnQodCkpfSxyLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8obi5kb21haW4oKGU9dC5tYXAoTnVtYmVyKSkubWFwKHUpKSxyKTpl
fSxyLnRpY2tzPWZ1bmN0aW9uKG4pe3JldHVybiBPaShlLG4pfSxyLnRpY2tGb3JtYXQ9ZnVuY3Rp
b24obix0KXtyZXR1cm4gWWkoZSxuLHQpfSxyLm5pY2U9ZnVuY3Rpb24obil7cmV0dXJuIHIuZG9t
YWluKEhpKGUsbikpfSxyLmV4cG9uZW50PWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh1PSRpKHQ9byksaT0kaSgxL3QpLG4uZG9tYWluKGUubWFwKHUpKSxyKTp0fSxyLmNvcHk9
ZnVuY3Rpb24oKXtyZXR1cm4gWGkobi5jb3B5KCksdCxlKX0samkocixuKX1mdW5jdGlvbiAkaShu
KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIDA+dD8tTWF0aC5wb3coLXQsbik6TWF0aC5wb3co
dCxuKX19ZnVuY3Rpb24gQmkobix0KXtmdW5jdGlvbiBlKGUpe3JldHVybiBpWygodS5nZXQoZSl8
fCgicmFuZ2UiPT09dC50P3Uuc2V0KGUsbi5wdXNoKGUpKTowLzApKS0xKSVpLmxlbmd0aF19ZnVu
Y3Rpb24gcih0LGUpe3JldHVybiBaby5yYW5nZShuLmxlbmd0aCkubWFwKGZ1bmN0aW9uKG4pe3Jl
dHVybiB0K2Uqbn0pfXZhciB1LGksYTtyZXR1cm4gZS5kb21haW49ZnVuY3Rpb24ocil7aWYoIWFy
Z3VtZW50cy5sZW5ndGgpcmV0dXJuIG47bj1bXSx1PW5ldyBvO2Zvcih2YXIgaSxhPS0xLGM9ci5s
ZW5ndGg7KythPGM7KXUuaGFzKGk9clthXSl8fHUuc2V0KGksbi5wdXNoKGkpKTtyZXR1cm4gZVt0
LnRdLmFwcGx5KGUsdC5hKX0sZS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oaT1uLGE9MCx0PXt0OiJyYW5nZSIsYTphcmd1bWVudHN9LGUpOml9LGUucmFuZ2VQb2lu
dHM9ZnVuY3Rpb24odSxvKXthcmd1bWVudHMubGVuZ3RoPDImJihvPTApO3ZhciBjPXVbMF0scz11
WzFdLGw9KHMtYykvKE1hdGgubWF4KDEsbi5sZW5ndGgtMSkrbyk7cmV0dXJuIGk9cihuLmxlbmd0
aDwyPyhjK3MpLzI6YytsKm8vMixsKSxhPTAsdD17dDoicmFuZ2VQb2ludHMiLGE6YXJndW1lbnRz
fSxlfSxlLnJhbmdlQmFuZHM9ZnVuY3Rpb24odSxvLGMpe2FyZ3VtZW50cy5sZW5ndGg8MiYmKG89
MCksYXJndW1lbnRzLmxlbmd0aDwzJiYoYz1vKTt2YXIgcz11WzFdPHVbMF0sbD11W3MtMF0sZj11
WzEtc10saD0oZi1sKS8obi5sZW5ndGgtbysyKmMpO3JldHVybiBpPXIobCtoKmMsaCkscyYmaS5y
ZXZlcnNlKCksYT1oKigxLW8pLHQ9e3Q6InJhbmdlQmFuZHMiLGE6YXJndW1lbnRzfSxlfSxlLnJh
bmdlUm91bmRCYW5kcz1mdW5jdGlvbih1LG8sYyl7YXJndW1lbnRzLmxlbmd0aDwyJiYobz0wKSxh
cmd1bWVudHMubGVuZ3RoPDMmJihjPW8pO3ZhciBzPXVbMV08dVswXSxsPXVbcy0wXSxmPXVbMS1z
XSxoPU1hdGguZmxvb3IoKGYtbCkvKG4ubGVuZ3RoLW8rMipjKSksZz1mLWwtKG4ubGVuZ3RoLW8p
Kmg7cmV0dXJuIGk9cihsK01hdGgucm91bmQoZy8yKSxoKSxzJiZpLnJldmVyc2UoKSxhPU1hdGgu
cm91bmQoaCooMS1vKSksdD17dDoicmFuZ2VSb3VuZEJhbmRzIixhOmFyZ3VtZW50c30sZX0sZS5y
YW5nZUJhbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gYX0sZS5yYW5nZUV4dGVudD1mdW5jdGlvbigpe3Jl
dHVybiBMaSh0LmFbMF0pfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQmkobix0KX0sZS5kb21h
aW4obil9ZnVuY3Rpb24gV2koZSxyKXtmdW5jdGlvbiB1KCl7dmFyIG49MCx0PXIubGVuZ3RoO2Zv
cihvPVtdOysrbjx0OylvW24tMV09Wm8ucXVhbnRpbGUoZSxuL3QpO3JldHVybiBpfWZ1bmN0aW9u
IGkobil7cmV0dXJuIGlzTmFOKG49K24pP3ZvaWQgMDpyW1pvLmJpc2VjdChvLG4pXX12YXIgbzty
ZXR1cm4gaS5kb21haW49ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ci5m
aWx0ZXIodCkuc29ydChuKSx1KCkpOmV9LGkucmFuZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHI9bix1KCkpOnJ9LGkucXVhbnRpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIG99
LGkuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKG4pe3JldHVybiBuPXIuaW5kZXhPZihuKSwwPm4/WzAv
MCwwLzBdOltuPjA/b1tuLTFdOmVbMF0sbjxvLmxlbmd0aD9vW25dOmVbZS5sZW5ndGgtMV1dfSxp
LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gV2koZSxyKX0sdSgpfWZ1bmN0aW9uIEppKG4sdCxlKXtm
dW5jdGlvbiByKHQpe3JldHVybiBlW01hdGgubWF4KDAsTWF0aC5taW4obyxNYXRoLmZsb29yKGkq
KHQtbikpKSldfWZ1bmN0aW9uIHUoKXtyZXR1cm4gaT1lLmxlbmd0aC8odC1uKSxvPWUubGVuZ3Ro
LTEscn12YXIgaSxvO3JldHVybiByLmRvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8obj0rZVswXSx0PStlW2UubGVuZ3RoLTFdLHUoKSk6W24sdF19LHIucmFuZ2U9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bix1KCkpOmV9LHIuaW52ZXJ0RXh0
ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0PWUuaW5kZXhPZih0KSx0PTA+dD8wLzA6dC9pK24sW3Qs
dCsxL2ldfSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gSmkobix0LGUpfSx1KCl9ZnVuY3Rpb24g
R2kobix0KXtmdW5jdGlvbiBlKGUpe3JldHVybiBlPj1lP3RbWm8uYmlzZWN0KG4sZSldOnZvaWQg
MH1yZXR1cm4gZS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49
dCxlKTpufSxlLnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4s
ZSk6dH0sZS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9dC5pbmRleE9mKGUpLFtu
W2UtMV0sbltlXV19LGUuY29weT1mdW5jdGlvbigpe3JldHVybiBHaShuLHQpfSxlfWZ1bmN0aW9u
IEtpKG4pe2Z1bmN0aW9uIHQobil7cmV0dXJuK259cmV0dXJuIHQuaW52ZXJ0PXQsdC5kb21haW49
dC5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lLm1hcCh0KSx0
KTpufSx0LnRpY2tzPWZ1bmN0aW9uKHQpe3JldHVybiBPaShuLHQpfSx0LnRpY2tGb3JtYXQ9ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gWWkobix0LGUpfSx0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gS2ko
bil9LHR9ZnVuY3Rpb24gUWkobil7cmV0dXJuIG4uaW5uZXJSYWRpdXN9ZnVuY3Rpb24gbm8obil7
cmV0dXJuIG4ub3V0ZXJSYWRpdXN9ZnVuY3Rpb24gdG8obil7cmV0dXJuIG4uc3RhcnRBbmdsZX1m
dW5jdGlvbiBlbyhuKXtyZXR1cm4gbi5lbmRBbmdsZX1mdW5jdGlvbiBybyhuKXtmdW5jdGlvbiB0
KHQpe2Z1bmN0aW9uIG8oKXtzLnB1c2goIk0iLGkobihsKSxhKSl9Zm9yKHZhciBjLHM9W10sbD1b
XSxmPS0xLGg9dC5sZW5ndGgsZz1idChlKSxwPWJ0KHIpOysrZjxoOyl1LmNhbGwodGhpcyxjPXRb
Zl0sZik/bC5wdXNoKFsrZy5jYWxsKHRoaXMsYyxmKSwrcC5jYWxsKHRoaXMsYyxmKV0pOmwubGVu
Z3RoJiYobygpLGw9W10pO3JldHVybiBsLmxlbmd0aCYmbygpLHMubGVuZ3RoP3Muam9pbigiIik6
bnVsbH12YXIgZT13cixyPVNyLHU9d2UsaT11byxvPWkua2V5LGE9Ljc7cmV0dXJuIHQueD1mdW5j
dGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHQpOmV9LHQueT1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHQpOnJ9LHQuZGVmaW5lZD1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1uLHQpOnV9LHQuaW50ZXJwb2xhdGU9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIG4/aT1u
OihpPXhzLmdldChuKXx8dW8pLmtleSx0KTpvfSx0LnRlbnNpb249ZnVuY3Rpb24obil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGE9bix0KTphfSx0fWZ1bmN0aW9uIHVvKG4pe3JldHVybiBuLmpv
aW4oIkwiKX1mdW5jdGlvbiBpbyhuKXtyZXR1cm4gdW8obikrIloifWZ1bmN0aW9uIG9vKG4pe2Zv
cih2YXIgdD0wLGU9bi5sZW5ndGgscj1uWzBdLHU9W3JbMF0sIiwiLHJbMV1dOysrdDxlOyl1LnB1
c2goIkgiLChyWzBdKyhyPW5bdF0pWzBdKS8yLCJWIixyWzFdKTtyZXR1cm4gZT4xJiZ1LnB1c2go
IkgiLHJbMF0pLHUuam9pbigiIil9ZnVuY3Rpb24gYW8obil7Zm9yKHZhciB0PTAsZT1uLmxlbmd0
aCxyPW5bMF0sdT1bclswXSwiLCIsclsxXV07Kyt0PGU7KXUucHVzaCgiViIsKHI9blt0XSlbMV0s
IkgiLHJbMF0pO3JldHVybiB1LmpvaW4oIiIpfWZ1bmN0aW9uIGNvKG4pe2Zvcih2YXIgdD0wLGU9
bi5sZW5ndGgscj1uWzBdLHU9W3JbMF0sIiwiLHJbMV1dOysrdDxlOyl1LnB1c2goIkgiLChyPW5b
dF0pWzBdLCJWIixyWzFdKTtyZXR1cm4gdS5qb2luKCIiKX1mdW5jdGlvbiBzbyhuLHQpe3JldHVy
biBuLmxlbmd0aDw0P3VvKG4pOm5bMV0raG8obi5zbGljZSgxLG4ubGVuZ3RoLTEpLGdvKG4sdCkp
fWZ1bmN0aW9uIGxvKG4sdCl7cmV0dXJuIG4ubGVuZ3RoPDM/dW8obik6blswXStobygobi5wdXNo
KG5bMF0pLG4pLGdvKFtuW24ubGVuZ3RoLTJdXS5jb25jYXQobixbblsxXV0pLHQpKX1mdW5jdGlv
biBmbyhuLHQpe3JldHVybiBuLmxlbmd0aDwzP3VvKG4pOm5bMF0raG8obixnbyhuLHQpKX1mdW5j
dGlvbiBobyhuLHQpe2lmKHQubGVuZ3RoPDF8fG4ubGVuZ3RoIT10Lmxlbmd0aCYmbi5sZW5ndGgh
PXQubGVuZ3RoKzIpcmV0dXJuIHVvKG4pO3ZhciBlPW4ubGVuZ3RoIT10Lmxlbmd0aCxyPSIiLHU9
blswXSxpPW5bMV0sbz10WzBdLGE9byxjPTE7aWYoZSYmKHIrPSJRIisoaVswXS0yKm9bMF0vMykr
IiwiKyhpWzFdLTIqb1sxXS8zKSsiLCIraVswXSsiLCIraVsxXSx1PW5bMV0sYz0yKSx0Lmxlbmd0
aD4xKXthPXRbMV0saT1uW2NdLGMrKyxyKz0iQyIrKHVbMF0rb1swXSkrIiwiKyh1WzFdK29bMV0p
KyIsIisoaVswXS1hWzBdKSsiLCIrKGlbMV0tYVsxXSkrIiwiK2lbMF0rIiwiK2lbMV07Zm9yKHZh
ciBzPTI7czx0Lmxlbmd0aDtzKyssYysrKWk9bltjXSxhPXRbc10scis9IlMiKyhpWzBdLWFbMF0p
KyIsIisoaVsxXS1hWzFdKSsiLCIraVswXSsiLCIraVsxXX1pZihlKXt2YXIgbD1uW2NdO3IrPSJR
IisoaVswXSsyKmFbMF0vMykrIiwiKyhpWzFdKzIqYVsxXS8zKSsiLCIrbFswXSsiLCIrbFsxXX1y
ZXR1cm4gcn1mdW5jdGlvbiBnbyhuLHQpe2Zvcih2YXIgZSxyPVtdLHU9KDEtdCkvMixpPW5bMF0s
bz1uWzFdLGE9MSxjPW4ubGVuZ3RoOysrYTxjOyllPWksaT1vLG89blthXSxyLnB1c2goW3UqKG9b
MF0tZVswXSksdSoob1sxXS1lWzFdKV0pO3JldHVybiByfWZ1bmN0aW9uIHBvKG4pe2lmKG4ubGVu
Z3RoPDMpcmV0dXJuIHVvKG4pO3ZhciB0PTEsZT1uLmxlbmd0aCxyPW5bMF0sdT1yWzBdLGk9clsx
XSxvPVt1LHUsdSwocj1uWzFdKVswXV0sYT1baSxpLGksclsxXV0sYz1bdSwiLCIsaSwiTCIseG8o
YnMsbyksIiwiLHhvKGJzLGEpXTtmb3Iobi5wdXNoKG5bZS0xXSk7Kyt0PD1lOylyPW5bdF0sby5z
aGlmdCgpLG8ucHVzaChyWzBdKSxhLnNoaWZ0KCksYS5wdXNoKHJbMV0pLE1vKGMsbyxhKTtyZXR1
cm4gbi5wb3AoKSxjLnB1c2goIkwiLHIpLGMuam9pbigiIil9ZnVuY3Rpb24gdm8obil7aWYobi5s
ZW5ndGg8NClyZXR1cm4gdW8obik7Zm9yKHZhciB0LGU9W10scj0tMSx1PW4ubGVuZ3RoLGk9WzBd
LG89WzBdOysrcjwzOyl0PW5bcl0saS5wdXNoKHRbMF0pLG8ucHVzaCh0WzFdKTtmb3IoZS5wdXNo
KHhvKGJzLGkpKyIsIit4byhicyxvKSksLS1yOysrcjx1Oyl0PW5bcl0saS5zaGlmdCgpLGkucHVz
aCh0WzBdKSxvLnNoaWZ0KCksby5wdXNoKHRbMV0pLE1vKGUsaSxvKTtyZXR1cm4gZS5qb2luKCIi
KX1mdW5jdGlvbiBtbyhuKXtmb3IodmFyIHQsZSxyPS0xLHU9bi5sZW5ndGgsaT11KzQsbz1bXSxh
PVtdOysrcjw0OyllPW5bciV1XSxvLnB1c2goZVswXSksYS5wdXNoKGVbMV0pO2Zvcih0PVt4byhi
cyxvKSwiLCIseG8oYnMsYSldLC0tcjsrK3I8aTspZT1uW3IldV0sby5zaGlmdCgpLG8ucHVzaChl
WzBdKSxhLnNoaWZ0KCksYS5wdXNoKGVbMV0pLE1vKHQsbyxhKTtyZXR1cm4gdC5qb2luKCIiKX1m
dW5jdGlvbiB5byhuLHQpe3ZhciBlPW4ubGVuZ3RoLTE7aWYoZSlmb3IodmFyIHIsdSxpPW5bMF1b
MF0sbz1uWzBdWzFdLGE9bltlXVswXS1pLGM9bltlXVsxXS1vLHM9LTE7KytzPD1lOylyPW5bc10s
dT1zL2UsclswXT10KnJbMF0rKDEtdCkqKGkrdSphKSxyWzFdPXQqclsxXSsoMS10KSoobyt1KmMp
O3JldHVybiBwbyhuKX1mdW5jdGlvbiB4byhuLHQpe3JldHVybiBuWzBdKnRbMF0rblsxXSp0WzFd
K25bMl0qdFsyXStuWzNdKnRbM119ZnVuY3Rpb24gTW8obix0LGUpe24ucHVzaCgiQyIseG8oTXMs
dCksIiwiLHhvKE1zLGUpLCIsIix4byhfcyx0KSwiLCIseG8oX3MsZSksIiwiLHhvKGJzLHQpLCIs
Iix4byhicyxlKSl9ZnVuY3Rpb24gX28obix0KXtyZXR1cm4odFsxXS1uWzFdKS8odFswXS1uWzBd
KX1mdW5jdGlvbiBibyhuKXtmb3IodmFyIHQ9MCxlPW4ubGVuZ3RoLTEscj1bXSx1PW5bMF0saT1u
WzFdLG89clswXT1fbyh1LGkpOysrdDxlOylyW3RdPShvKyhvPV9vKHU9aSxpPW5bdCsxXSkpKS8y
O3JldHVybiByW3RdPW8scn1mdW5jdGlvbiB3byhuKXtmb3IodmFyIHQsZSxyLHUsaT1bXSxvPWJv
KG4pLGE9LTEsYz1uLmxlbmd0aC0xOysrYTxjOyl0PV9vKG5bYV0sblthKzFdKSx1YSh0KTxrYT9v
W2FdPW9bYSsxXT0wOihlPW9bYV0vdCxyPW9bYSsxXS90LHU9ZSplK3Iqcix1PjkmJih1PTMqdC9N
YXRoLnNxcnQodSksb1thXT11KmUsb1thKzFdPXUqcikpO2ZvcihhPS0xOysrYTw9YzspdT0obltN
YXRoLm1pbihjLGErMSldWzBdLW5bTWF0aC5tYXgoMCxhLTEpXVswXSkvKDYqKDErb1thXSpvW2Fd
KSksaS5wdXNoKFt1fHwwLG9bYV0qdXx8MF0pO3JldHVybiBpfWZ1bmN0aW9uIFNvKG4pe3JldHVy
biBuLmxlbmd0aDwzP3VvKG4pOm5bMF0raG8obix3byhuKSl9ZnVuY3Rpb24ga28obil7Zm9yKHZh
ciB0LGUscix1PS0xLGk9bi5sZW5ndGg7Kyt1PGk7KXQ9blt1XSxlPXRbMF0scj10WzFdK21zLHRb
MF09ZSpNYXRoLmNvcyhyKSx0WzFdPWUqTWF0aC5zaW4ocik7cmV0dXJuIG59ZnVuY3Rpb24gRW8o
bil7ZnVuY3Rpb24gdCh0KXtmdW5jdGlvbiBjKCl7di5wdXNoKCJNIixhKG4obSksZiksbCxzKG4o
ZC5yZXZlcnNlKCkpLGYpLCJaIil9Zm9yKHZhciBoLGcscCx2PVtdLGQ9W10sbT1bXSx5PS0xLHg9
dC5sZW5ndGgsTT1idChlKSxfPWJ0KHUpLGI9ZT09PXI/ZnVuY3Rpb24oKXtyZXR1cm4gZ306YnQo
ciksdz11PT09aT9mdW5jdGlvbigpe3JldHVybiBwfTpidChpKTsrK3k8eDspby5jYWxsKHRoaXMs
aD10W3ldLHkpPyhkLnB1c2goW2c9K00uY2FsbCh0aGlzLGgseSkscD0rXy5jYWxsKHRoaXMsaCx5
KV0pLG0ucHVzaChbK2IuY2FsbCh0aGlzLGgseSksK3cuY2FsbCh0aGlzLGgseSldKSk6ZC5sZW5n
dGgmJihjKCksZD1bXSxtPVtdKTtyZXR1cm4gZC5sZW5ndGgmJmMoKSx2Lmxlbmd0aD92LmpvaW4o
IiIpOm51bGx9dmFyIGU9d3Iscj13cix1PTAsaT1TcixvPXdlLGE9dW8sYz1hLmtleSxzPWEsbD0i
TCIsZj0uNztyZXR1cm4gdC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhl
PXI9bix0KTpyfSx0LngwPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4s
dCk6ZX0sdC54MT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHQpOnJ9
LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1pPW4sdCk6aX0sdC55
MD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1uLHQpOnV9LHQueTE9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bix0KTppfSx0LmRlZmluZWQ9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bix0KTpvfSx0LmludGVycG9sYXRl
PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSJmdW5jdGlvbiI9PXR5cGVv
ZiBuP2E9bjooYT14cy5nZXQobil8fHVvKS5rZXkscz1hLnJldmVyc2V8fGEsbD1hLmNsb3NlZD8i
TSI6IkwiLHQpOmN9LHQudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZj1uLHQpOmZ9LHR9ZnVuY3Rpb24gQW8obil7cmV0dXJuIG4ucmFkaXVzfWZ1bmN0aW9uIENv
KG4pe3JldHVybltuLngsbi55XX1mdW5jdGlvbiBObyhuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIg
dD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlPXRbMF0scj10WzFdK21zO3JldHVybltlKk1hdGgu
Y29zKHIpLGUqTWF0aC5zaW4ocildfX1mdW5jdGlvbiB6bygpe3JldHVybiA2NH1mdW5jdGlvbiBM
bygpe3JldHVybiJjaXJjbGUifWZ1bmN0aW9uIFRvKG4pe3ZhciB0PU1hdGguc3FydChuL2JhKTty
ZXR1cm4iTTAsIit0KyJBIit0KyIsIit0KyIgMCAxLDEgMCwiKy10KyJBIit0KyIsIit0KyIgMCAx
LDEgMCwiK3QrIloifWZ1bmN0aW9uIHFvKG4sdCl7cmV0dXJuIHNhKG4sQ3MpLG4uaWQ9dCxufWZ1
bmN0aW9uIFJvKG4sdCxlLHIpe3ZhciB1PW4uaWQ7cmV0dXJuIFAobiwiZnVuY3Rpb24iPT10eXBl
b2YgZT9mdW5jdGlvbihuLGksbyl7bi5fX3RyYW5zaXRpb25fX1t1XS50d2Vlbi5zZXQodCxyKGUu
Y2FsbChuLG4uX19kYXRhX18saSxvKSkpfTooZT1yKGUpLGZ1bmN0aW9uKG4pe24uX190cmFuc2l0
aW9uX19bdV0udHdlZW4uc2V0KHQsZSl9KSl9ZnVuY3Rpb24gRG8obil7cmV0dXJuIG51bGw9PW4m
JihuPSIiKSxmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9bn19ZnVuY3Rpb24gUG8obix0LGUs
cil7dmFyIHU9bi5fX3RyYW5zaXRpb25fX3x8KG4uX190cmFuc2l0aW9uX189e2FjdGl2ZTowLGNv
dW50OjB9KSxpPXVbZV07aWYoIWkpe3ZhciBhPXIudGltZTtpPXVbZV09e3R3ZWVuOm5ldyBvLHRp
bWU6YSxlYXNlOnIuZWFzZSxkZWxheTpyLmRlbGF5LGR1cmF0aW9uOnIuZHVyYXRpb259LCsrdS5j
b3VudCxaby50aW1lcihmdW5jdGlvbihyKXtmdW5jdGlvbiBvKHIpe3JldHVybiB1LmFjdGl2ZT5l
P3MoKToodS5hY3RpdmU9ZSxpLmV2ZW50JiZpLmV2ZW50LnN0YXJ0LmNhbGwobixsLHQpLGkudHdl
ZW4uZm9yRWFjaChmdW5jdGlvbihlLHIpeyhyPXIuY2FsbChuLGwsdCkpJiZ2LnB1c2gocil9KSxa
by50aW1lcihmdW5jdGlvbigpe3JldHVybiBwLmM9YyhyfHwxKT93ZTpjLDF9LDAsYSksdm9pZCAw
KX1mdW5jdGlvbiBjKHIpe2lmKHUuYWN0aXZlIT09ZSlyZXR1cm4gcygpO2Zvcih2YXIgbz1yL2cs
YT1mKG8pLGM9di5sZW5ndGg7Yz4wOyl2Wy0tY10uY2FsbChuLGEpOworcmV0dXJuIG8+PTE/KGku
ZXZlbnQmJmkuZXZlbnQuZW5kLmNhbGwobixsLHQpLHMoKSk6dm9pZCAwfWZ1bmN0aW9uIHMoKXty
ZXR1cm4tLXUuY291bnQ/ZGVsZXRlIHVbZV06ZGVsZXRlIG4uX190cmFuc2l0aW9uX18sMX12YXIg
bD1uLl9fZGF0YV9fLGY9aS5lYXNlLGg9aS5kZWxheSxnPWkuZHVyYXRpb24scD1CYSx2PVtdO3Jl
dHVybiBwLnQ9aCthLHI+PWg/byhyLWgpOihwLmM9byx2b2lkIDApfSwwLGEpfX1mdW5jdGlvbiBV
byhuLHQpe24uYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihuKXtyZXR1cm4idHJhbnNsYXRlKCIr
dChuKSsiLDApIn0pfWZ1bmN0aW9uIGpvKG4sdCl7bi5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9u
KG4pe3JldHVybiJ0cmFuc2xhdGUoMCwiK3QobikrIikifSl9ZnVuY3Rpb24gSG8obil7cmV0dXJu
IG4udG9JU09TdHJpbmcoKX1mdW5jdGlvbiBGbyhuLHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4g
bih0KX1mdW5jdGlvbiB1KG4sZSl7dmFyIHI9blsxXS1uWzBdLHU9ci9lLGk9Wm8uYmlzZWN0KFVz
LHUpO3JldHVybiBpPT1Vcy5sZW5ndGg/W3QueWVhcixGaShuLm1hcChmdW5jdGlvbihuKXtyZXR1
cm4gbi8zMTUzNmU2fSksZSlbMl1dOmk/dFt1L1VzW2ktMV08VXNbaV0vdT9pLTE6aV06W0ZzLEZp
KG4sZSlbMl1dfXJldHVybiByLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gT28obi5pbnZlcnQo
dCkpfSxyLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obi5kb21h
aW4odCkscik6bi5kb21haW4oKS5tYXAoT28pfSxyLm5pY2U9ZnVuY3Rpb24obix0KXtmdW5jdGlv
biBlKGUpe3JldHVybiFpc05hTihlKSYmIW4ucmFuZ2UoZSxPbygrZSsxKSx0KS5sZW5ndGh9dmFy
IGk9ci5kb21haW4oKSxvPUxpKGkpLGE9bnVsbD09bj91KG8sMTApOiJudW1iZXIiPT10eXBlb2Yg
biYmdShvLG4pO3JldHVybiBhJiYobj1hWzBdLHQ9YVsxXSksci5kb21haW4oUmkoaSx0PjE/e2Zs
b29yOmZ1bmN0aW9uKHQpe2Zvcig7ZSh0PW4uZmxvb3IodCkpOyl0PU9vKHQtMSk7cmV0dXJuIHR9
LGNlaWw6ZnVuY3Rpb24odCl7Zm9yKDtlKHQ9bi5jZWlsKHQpKTspdD1PbygrdCsxKTtyZXR1cm4g
dH19Om4pKX0sci50aWNrcz1mdW5jdGlvbihuLHQpe3ZhciBlPUxpKHIuZG9tYWluKCkpLGk9bnVs
bD09bj91KGUsMTApOiJudW1iZXIiPT10eXBlb2Ygbj91KGUsbik6IW4ucmFuZ2UmJlt7cmFuZ2U6
bn0sdF07cmV0dXJuIGkmJihuPWlbMF0sdD1pWzFdKSxuLnJhbmdlKGVbMF0sT28oK2VbMV0rMSks
MT50PzE6dCl9LHIudGlja0Zvcm1hdD1mdW5jdGlvbigpe3JldHVybiBlfSxyLmNvcHk9ZnVuY3Rp
b24oKXtyZXR1cm4gRm8obi5jb3B5KCksdCxlKX0samkocixuKX1mdW5jdGlvbiBPbyhuKXtyZXR1
cm4gbmV3IERhdGUobil9ZnVuY3Rpb24gWW8obil7cmV0dXJuIEpTT04ucGFyc2Uobi5yZXNwb25z
ZVRleHQpfWZ1bmN0aW9uIElvKG4pe3ZhciB0PSRvLmNyZWF0ZVJhbmdlKCk7cmV0dXJuIHQuc2Vs
ZWN0Tm9kZSgkby5ib2R5KSx0LmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChuLnJlc3BvbnNlVGV4
dCl9dmFyIFpvPXt2ZXJzaW9uOiIzLjQuMTEifTtEYXRlLm5vd3x8KERhdGUubm93PWZ1bmN0aW9u
KCl7cmV0dXJuK25ldyBEYXRlfSk7dmFyIFZvPVtdLnNsaWNlLFhvPWZ1bmN0aW9uKG4pe3JldHVy
biBWby5jYWxsKG4pfSwkbz1kb2N1bWVudCxCbz0kby5kb2N1bWVudEVsZW1lbnQsV289d2luZG93
O3RyeXtYbyhCby5jaGlsZE5vZGVzKVswXS5ub2RlVHlwZX1jYXRjaChKbyl7WG89ZnVuY3Rpb24o
bil7Zm9yKHZhciB0PW4ubGVuZ3RoLGU9bmV3IEFycmF5KHQpO3QtLTspZVt0XT1uW3RdO3JldHVy
biBlfX10cnl7JG8uY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUuc2V0UHJvcGVydHkoIm9wYWNp
dHkiLDAsIiIpfWNhdGNoKEdvKXt2YXIgS289V28uRWxlbWVudC5wcm90b3R5cGUsUW89S28uc2V0
QXR0cmlidXRlLG5hPUtvLnNldEF0dHJpYnV0ZU5TLHRhPVdvLkNTU1N0eWxlRGVjbGFyYXRpb24u
cHJvdG90eXBlLGVhPXRhLnNldFByb3BlcnR5O0tvLnNldEF0dHJpYnV0ZT1mdW5jdGlvbihuLHQp
e1FvLmNhbGwodGhpcyxuLHQrIiIpfSxLby5zZXRBdHRyaWJ1dGVOUz1mdW5jdGlvbihuLHQsZSl7
bmEuY2FsbCh0aGlzLG4sdCxlKyIiKX0sdGEuc2V0UHJvcGVydHk9ZnVuY3Rpb24obix0LGUpe2Vh
LmNhbGwodGhpcyxuLHQrIiIsZSl9fVpvLmFzY2VuZGluZz1uLFpvLmRlc2NlbmRpbmc9ZnVuY3Rp
b24obix0KXtyZXR1cm4gbj50Py0xOnQ+bj8xOnQ+PW4/MDowLzB9LFpvLm1pbj1mdW5jdGlvbihu
LHQpe3ZhciBlLHIsdT0tMSxpPW4ubGVuZ3RoO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtmb3Io
OysrdTxpJiYhKG51bGwhPShlPW5bdV0pJiZlPj1lKTspZT12b2lkIDA7Zm9yKDsrK3U8aTspbnVs
bCE9KHI9blt1XSkmJmU+ciYmKGU9cil9ZWxzZXtmb3IoOysrdTxpJiYhKG51bGwhPShlPXQuY2Fs
bChuLG5bdV0sdSkpJiZlPj1lKTspZT12b2lkIDA7Zm9yKDsrK3U8aTspbnVsbCE9KHI9dC5jYWxs
KG4sblt1XSx1KSkmJmU+ciYmKGU9cil9cmV0dXJuIGV9LFpvLm1heD1mdW5jdGlvbihuLHQpe3Zh
ciBlLHIsdT0tMSxpPW4ubGVuZ3RoO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtmb3IoOysrdTxp
JiYhKG51bGwhPShlPW5bdV0pJiZlPj1lKTspZT12b2lkIDA7Zm9yKDsrK3U8aTspbnVsbCE9KHI9
blt1XSkmJnI+ZSYmKGU9cil9ZWxzZXtmb3IoOysrdTxpJiYhKG51bGwhPShlPXQuY2FsbChuLG5b
dV0sdSkpJiZlPj1lKTspZT12b2lkIDA7Zm9yKDsrK3U8aTspbnVsbCE9KHI9dC5jYWxsKG4sblt1
XSx1KSkmJnI+ZSYmKGU9cil9cmV0dXJuIGV9LFpvLmV4dGVudD1mdW5jdGlvbihuLHQpe3ZhciBl
LHIsdSxpPS0xLG89bi5sZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcig7KytpPG8m
JiEobnVsbCE9KGU9dT1uW2ldKSYmZT49ZSk7KWU9dT12b2lkIDA7Zm9yKDsrK2k8bzspbnVsbCE9
KHI9bltpXSkmJihlPnImJihlPXIpLHI+dSYmKHU9cikpfWVsc2V7Zm9yKDsrK2k8byYmIShudWxs
IT0oZT11PXQuY2FsbChuLG5baV0saSkpJiZlPj1lKTspZT12b2lkIDA7Zm9yKDsrK2k8bzspbnVs
bCE9KHI9dC5jYWxsKG4sbltpXSxpKSkmJihlPnImJihlPXIpLHI+dSYmKHU9cikpfXJldHVybltl
LHVdfSxaby5zdW09ZnVuY3Rpb24obix0KXt2YXIgZSxyPTAsdT1uLmxlbmd0aCxpPS0xO2lmKDE9
PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7KytpPHU7KWlzTmFOKGU9K25baV0pfHwocis9ZSk7ZWxz
ZSBmb3IoOysraTx1Oylpc05hTihlPSt0LmNhbGwobixuW2ldLGkpKXx8KHIrPWUpO3JldHVybiBy
fSxaby5tZWFuPWZ1bmN0aW9uKG4sZSl7dmFyIHIsdT0wLGk9bi5sZW5ndGgsbz0tMSxhPWk7aWYo
MT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDsrK288aTspdChyPW5bb10pP3UrPXI6LS1hO2Vsc2Ug
Zm9yKDsrK288aTspdChyPWUuY2FsbChuLG5bb10sbykpP3UrPXI6LS1hO3JldHVybiBhP3UvYTp2
b2lkIDB9LFpvLnF1YW50aWxlPWZ1bmN0aW9uKG4sdCl7dmFyIGU9KG4ubGVuZ3RoLTEpKnQrMSxy
PU1hdGguZmxvb3IoZSksdT0rbltyLTFdLGk9ZS1yO3JldHVybiBpP3UraSoobltyXS11KTp1fSxa
by5tZWRpYW49ZnVuY3Rpb24oZSxyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xJiYoZT1lLm1h
cChyKSksZT1lLmZpbHRlcih0KSxlLmxlbmd0aD9aby5xdWFudGlsZShlLnNvcnQobiksLjUpOnZv
aWQgMH07dmFyIHJhPWUobik7Wm8uYmlzZWN0TGVmdD1yYS5sZWZ0LFpvLmJpc2VjdD1aby5iaXNl
Y3RSaWdodD1yYS5yaWdodCxaby5iaXNlY3Rvcj1mdW5jdGlvbih0KXtyZXR1cm4gZSgxPT09dC5s
ZW5ndGg/ZnVuY3Rpb24oZSxyKXtyZXR1cm4gbih0KGUpLHIpfTp0KX0sWm8uc2h1ZmZsZT1mdW5j
dGlvbihuKXtmb3IodmFyIHQsZSxyPW4ubGVuZ3RoO3I7KWU9MHxNYXRoLnJhbmRvbSgpKnItLSx0
PW5bcl0sbltyXT1uW2VdLG5bZV09dDtyZXR1cm4gbn0sWm8ucGVybXV0ZT1mdW5jdGlvbihuLHQp
e2Zvcih2YXIgZT10Lmxlbmd0aCxyPW5ldyBBcnJheShlKTtlLS07KXJbZV09blt0W2VdXTtyZXR1
cm4gcn0sWm8ucGFpcnM9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGU9MCxyPW4ubGVuZ3RoLTEsdT1u
WzBdLGk9bmV3IEFycmF5KDA+cj8wOnIpO3I+ZTspaVtlXT1bdD11LHU9blsrK2VdXTtyZXR1cm4g
aX0sWm8uemlwPWZ1bmN0aW9uKCl7aWYoISh1PWFyZ3VtZW50cy5sZW5ndGgpKXJldHVybltdO2Zv
cih2YXIgbj0tMSx0PVpvLm1pbihhcmd1bWVudHMsciksZT1uZXcgQXJyYXkodCk7KytuPHQ7KWZv
cih2YXIgdSxpPS0xLG89ZVtuXT1uZXcgQXJyYXkodSk7KytpPHU7KW9baV09YXJndW1lbnRzW2ld
W25dO3JldHVybiBlfSxaby50cmFuc3Bvc2U9ZnVuY3Rpb24obil7cmV0dXJuIFpvLnppcC5hcHBs
eShabyxuKX0sWm8ua2V5cz1mdW5jdGlvbihuKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gbil0LnB1
c2goZSk7cmV0dXJuIHR9LFpvLnZhbHVlcz1mdW5jdGlvbihuKXt2YXIgdD1bXTtmb3IodmFyIGUg
aW4gbil0LnB1c2gobltlXSk7cmV0dXJuIHR9LFpvLmVudHJpZXM9ZnVuY3Rpb24obil7dmFyIHQ9
W107Zm9yKHZhciBlIGluIG4pdC5wdXNoKHtrZXk6ZSx2YWx1ZTpuW2VdfSk7cmV0dXJuIHR9LFpv
Lm1lcmdlPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxlLHIsdT1uLmxlbmd0aCxpPS0xLG89MDsrK2k8
dTspbys9bltpXS5sZW5ndGg7Zm9yKGU9bmV3IEFycmF5KG8pOy0tdT49MDspZm9yKHI9blt1XSx0
PXIubGVuZ3RoOy0tdD49MDspZVstLW9dPXJbdF07cmV0dXJuIGV9O3ZhciB1YT1NYXRoLmFiczta
by5yYW5nZT1mdW5jdGlvbihuLHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwzJiYoZT0xLGFyZ3Vt
ZW50cy5sZW5ndGg8MiYmKHQ9bixuPTApKSwxLzA9PT0odC1uKS9lKXRocm93IG5ldyBFcnJvcigi
aW5maW5pdGUgcmFuZ2UiKTt2YXIgcixpPVtdLG89dSh1YShlKSksYT0tMTtpZihuKj1vLHQqPW8s
ZSo9bywwPmUpZm9yKDsocj1uK2UqKythKT50OylpLnB1c2goci9vKTtlbHNlIGZvcig7KHI9bitl
KisrYSk8dDspaS5wdXNoKHIvbyk7cmV0dXJuIGl9LFpvLm1hcD1mdW5jdGlvbihuKXt2YXIgdD1u
ZXcgbztpZihuIGluc3RhbmNlb2YgbyluLmZvckVhY2goZnVuY3Rpb24obixlKXt0LnNldChuLGUp
fSk7ZWxzZSBmb3IodmFyIGUgaW4gbil0LnNldChlLG5bZV0pO3JldHVybiB0fSxpKG8se2hhczph
LGdldDpmdW5jdGlvbihuKXtyZXR1cm4gdGhpc1tpYStuXX0sc2V0OmZ1bmN0aW9uKG4sdCl7cmV0
dXJuIHRoaXNbaWErbl09dH0scmVtb3ZlOmMsa2V5czpzLHZhbHVlczpmdW5jdGlvbigpe3ZhciBu
PVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCxlKXtuLnB1c2goZSl9KSxufSxlbnRy
aWVzOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LGUp
e24ucHVzaCh7a2V5OnQsdmFsdWU6ZX0pfSksbn0sc2l6ZTpsLGVtcHR5OmYsZm9yRWFjaDpmdW5j
dGlvbihuKXtmb3IodmFyIHQgaW4gdGhpcyl0LmNoYXJDb2RlQXQoMCk9PT1vYSYmbi5jYWxsKHRo
aXMsdC5zdWJzdHJpbmcoMSksdGhpc1t0XSl9fSk7dmFyIGlhPSJceDAwIixvYT1pYS5jaGFyQ29k
ZUF0KDApO1pvLm5lc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKHQsYSxjKXtpZihjPj1pLmxlbmd0
aClyZXR1cm4gcj9yLmNhbGwodSxhKTplP2Euc29ydChlKTphO2Zvcih2YXIgcyxsLGYsaCxnPS0x
LHA9YS5sZW5ndGgsdj1pW2MrK10sZD1uZXcgbzsrK2c8cDspKGg9ZC5nZXQocz12KGw9YVtnXSkp
KT9oLnB1c2gobCk6ZC5zZXQocyxbbF0pO3JldHVybiB0PyhsPXQoKSxmPWZ1bmN0aW9uKGUscil7
bC5zZXQoZSxuKHQscixjKSl9KToobD17fSxmPWZ1bmN0aW9uKGUscil7bFtlXT1uKHQscixjKX0p
LGQuZm9yRWFjaChmKSxsfWZ1bmN0aW9uIHQobixlKXtpZihlPj1pLmxlbmd0aClyZXR1cm4gbjt2
YXIgcj1bXSx1PWFbZSsrXTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKG4sdSl7ci5wdXNoKHtr
ZXk6bix2YWx1ZXM6dCh1LGUpfSl9KSx1P3Iuc29ydChmdW5jdGlvbihuLHQpe3JldHVybiB1KG4u
a2V5LHQua2V5KX0pOnJ9dmFyIGUscix1PXt9LGk9W10sYT1bXTtyZXR1cm4gdS5tYXA9ZnVuY3Rp
b24odCxlKXtyZXR1cm4gbihlLHQsMCl9LHUuZW50cmllcz1mdW5jdGlvbihlKXtyZXR1cm4gdChu
KFpvLm1hcCxlLDApLDApfSx1LmtleT1mdW5jdGlvbihuKXtyZXR1cm4gaS5wdXNoKG4pLHV9LHUu
c29ydEtleXM9ZnVuY3Rpb24obil7cmV0dXJuIGFbaS5sZW5ndGgtMV09bix1fSx1LnNvcnRWYWx1
ZXM9ZnVuY3Rpb24obil7cmV0dXJuIGU9bix1fSx1LnJvbGx1cD1mdW5jdGlvbihuKXtyZXR1cm4g
cj1uLHV9LHV9LFpvLnNldD1mdW5jdGlvbihuKXt2YXIgdD1uZXcgaDtpZihuKWZvcih2YXIgZT0w
LHI9bi5sZW5ndGg7cj5lOysrZSl0LmFkZChuW2VdKTtyZXR1cm4gdH0saShoLHtoYXM6YSxhZGQ6
ZnVuY3Rpb24obil7cmV0dXJuIHRoaXNbaWErbl09ITAsbn0scmVtb3ZlOmZ1bmN0aW9uKG4pe3Jl
dHVybiBuPWlhK24sbiBpbiB0aGlzJiZkZWxldGUgdGhpc1tuXX0sdmFsdWVzOnMsc2l6ZTpsLGVt
cHR5OmYsZm9yRWFjaDpmdW5jdGlvbihuKXtmb3IodmFyIHQgaW4gdGhpcyl0LmNoYXJDb2RlQXQo
MCk9PT1vYSYmbi5jYWxsKHRoaXMsdC5zdWJzdHJpbmcoMSkpfX0pLFpvLmJlaGF2aW9yPXt9LFpv
LnJlYmluZD1mdW5jdGlvbihuLHQpe2Zvcih2YXIgZSxyPTEsdT1hcmd1bWVudHMubGVuZ3RoOysr
cjx1OyluW2U9YXJndW1lbnRzW3JdXT1nKG4sdCx0W2VdKTtyZXR1cm4gbn07dmFyIGFhPVsid2Vi
a2l0IiwibXMiLCJtb3oiLCJNb3oiLCJvIiwiTyJdO1pvLmRpc3BhdGNoPWZ1bmN0aW9uKCl7Zm9y
KHZhciBuPW5ldyBkLHQ9LTEsZT1hcmd1bWVudHMubGVuZ3RoOysrdDxlOyluW2FyZ3VtZW50c1t0
XV09bShuKTtyZXR1cm4gbn0sZC5wcm90b3R5cGUub249ZnVuY3Rpb24obix0KXt2YXIgZT1uLmlu
ZGV4T2YoIi4iKSxyPSIiO2lmKGU+PTAmJihyPW4uc3Vic3RyaW5nKGUrMSksbj1uLnN1YnN0cmlu
ZygwLGUpKSxuKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/dGhpc1tuXS5vbihyKTp0aGlzW25d
Lm9uKHIsdCk7aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgpe2lmKG51bGw9PXQpZm9yKG4gaW4gdGhp
cyl0aGlzLmhhc093blByb3BlcnR5KG4pJiZ0aGlzW25dLm9uKHIsbnVsbCk7cmV0dXJuIHRoaXN9
fSxaby5ldmVudD1udWxsLFpvLnJlcXVvdGU9ZnVuY3Rpb24obil7cmV0dXJuIG4ucmVwbGFjZShj
YSwiXFwkJiIpfTt2YXIgY2E9L1tcXFxeXCRcKlwrXD9cfFxbXF1cKFwpXC5ce1x9XS9nLHNhPXt9
Ll9fcHJvdG9fXz9mdW5jdGlvbihuLHQpe24uX19wcm90b19fPXR9OmZ1bmN0aW9uKG4sdCl7Zm9y
KHZhciBlIGluIHQpbltlXT10W2VdfSxsYT1mdW5jdGlvbihuLHQpe3JldHVybiB0LnF1ZXJ5U2Vs
ZWN0b3Iobil9LGZhPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQucXVlcnlTZWxlY3RvckFsbChuKX0s
aGE9Qm8ubWF0Y2hlc3x8Qm9bcChCbywibWF0Y2hlc1NlbGVjdG9yIildLGdhPWZ1bmN0aW9uKG4s
dCl7cmV0dXJuIGhhLmNhbGwobix0KX07ImZ1bmN0aW9uIj09dHlwZW9mIFNpenpsZSYmKGxhPWZ1
bmN0aW9uKG4sdCl7cmV0dXJuIFNpenpsZShuLHQpWzBdfHxudWxsfSxmYT1TaXp6bGUsZ2E9U2l6
emxlLm1hdGNoZXNTZWxlY3RvciksWm8uc2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIG1hfTt2
YXIgcGE9Wm8uc2VsZWN0aW9uLnByb3RvdHlwZT1bXTtwYS5zZWxlY3Q9ZnVuY3Rpb24obil7dmFy
IHQsZSxyLHUsaT1bXTtuPWIobik7Zm9yKHZhciBvPS0xLGE9dGhpcy5sZW5ndGg7KytvPGE7KXtp
LnB1c2godD1bXSksdC5wYXJlbnROb2RlPShyPXRoaXNbb10pLnBhcmVudE5vZGU7Zm9yKHZhciBj
PS0xLHM9ci5sZW5ndGg7KytjPHM7KSh1PXJbY10pPyh0LnB1c2goZT1uLmNhbGwodSx1Ll9fZGF0
YV9fLGMsbykpLGUmJiJfX2RhdGFfXyJpbiB1JiYoZS5fX2RhdGFfXz11Ll9fZGF0YV9fKSk6dC5w
dXNoKG51bGwpfXJldHVybiBfKGkpfSxwYS5zZWxlY3RBbGw9ZnVuY3Rpb24obil7dmFyIHQsZSxy
PVtdO249dyhuKTtmb3IodmFyIHU9LTEsaT10aGlzLmxlbmd0aDsrK3U8aTspZm9yKHZhciBvPXRo
aXNbdV0sYT0tMSxjPW8ubGVuZ3RoOysrYTxjOykoZT1vW2FdKSYmKHIucHVzaCh0PVhvKG4uY2Fs
bChlLGUuX19kYXRhX18sYSx1KSkpLHQucGFyZW50Tm9kZT1lKTtyZXR1cm4gXyhyKX07dmFyIHZh
PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDoiaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCIseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoi
aHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53
My5vcmcvMjAwMC94bWxucy8ifTtaby5ucz17cHJlZml4OnZhLHF1YWxpZnk6ZnVuY3Rpb24obil7
dmFyIHQ9bi5pbmRleE9mKCI6IiksZT1uO3JldHVybiB0Pj0wJiYoZT1uLnN1YnN0cmluZygwLHQp
LG49bi5zdWJzdHJpbmcodCsxKSksdmEuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOnZhW2VdLGxv
Y2FsOm59Om59fSxwYS5hdHRyPWZ1bmN0aW9uKG4sdCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtp
Zigic3RyaW5nIj09dHlwZW9mIG4pe3ZhciBlPXRoaXMubm9kZSgpO3JldHVybiBuPVpvLm5zLnF1
YWxpZnkobiksbi5sb2NhbD9lLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6ZS5nZXRB
dHRyaWJ1dGUobil9Zm9yKHQgaW4gbil0aGlzLmVhY2goUyh0LG5bdF0pKTtyZXR1cm4gdGhpc31y
ZXR1cm4gdGhpcy5lYWNoKFMobix0KSl9LHBhLmNsYXNzZWQ9ZnVuY3Rpb24obix0KXtpZihhcmd1
bWVudHMubGVuZ3RoPDIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7dmFyIGU9dGhpcy5ub2RlKCks
cj0obj1BKG4pKS5sZW5ndGgsdT0tMTtpZih0PWUuY2xhc3NMaXN0KXtmb3IoOysrdTxyOylpZigh
dC5jb250YWlucyhuW3VdKSlyZXR1cm4hMX1lbHNlIGZvcih0PWUuZ2V0QXR0cmlidXRlKCJjbGFz
cyIpOysrdTxyOylpZighRShuW3VdKS50ZXN0KHQpKXJldHVybiExO3JldHVybiEwfWZvcih0IGlu
IG4pdGhpcy5lYWNoKEModCxuW3RdKSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFjaChDKG4s
dCkpfSxwYS5zdHlsZT1mdW5jdGlvbihuLHQsZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDtpZigz
PnIpe2lmKCJzdHJpbmciIT10eXBlb2Ygbil7Mj5yJiYodD0iIik7Zm9yKGUgaW4gbil0aGlzLmVh
Y2goeihlLG5bZV0sdCkpO3JldHVybiB0aGlzfWlmKDI+cilyZXR1cm4gV28uZ2V0Q29tcHV0ZWRT
dHlsZSh0aGlzLm5vZGUoKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKG4pO2U9IiJ9cmV0dXJuIHRo
aXMuZWFjaCh6KG4sdCxlKSl9LHBhLnByb3BlcnR5PWZ1bmN0aW9uKG4sdCl7aWYoYXJndW1lbnRz
Lmxlbmd0aDwyKXtpZigic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIHRoaXMubm9kZSgpW25dO2Zv
cih0IGluIG4pdGhpcy5lYWNoKEwodCxuW3RdKSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFj
aChMKG4sdCkpfSxwYS50ZXh0PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3Ro
aXMuZWFjaCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbigpe3ZhciB0PW4uYXBwbHkodGhp
cyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09dD8iIjp0fTpudWxsPT1uP2Z1bmN0
aW9uKCl7dGhpcy50ZXh0Q29udGVudD0iIn06ZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PW59
KTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0scGEuaHRtbD1mdW5jdGlvbihuKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD90aGlzLmVhY2goImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVuY3Rpb24oKXt2
YXIgdD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT10PyIiOnR9
Om51bGw9PW4/ZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD0iIn06ZnVuY3Rpb24oKXt0aGlzLmlu
bmVySFRNTD1ufSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxwYS5hcHBlbmQ9ZnVuY3Rpb24obil7
cmV0dXJuIG49VChuKSx0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENo
aWxkKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pfSxwYS5pbnNlcnQ9ZnVuY3Rpb24obix0KXty
ZXR1cm4gbj1UKG4pLHQ9Yih0KSx0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmlu
c2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRz
KXx8bnVsbCl9KX0scGEucmVtb3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlv
bigpe3ZhciBuPXRoaXMucGFyZW50Tm9kZTtuJiZuLnJlbW92ZUNoaWxkKHRoaXMpfSl9LHBhLmRh
dGE9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKG4sZSl7dmFyIHIsdSxpLGE9bi5sZW5ndGgsZj1l
Lmxlbmd0aCxoPU1hdGgubWluKGEsZiksZz1uZXcgQXJyYXkoZikscD1uZXcgQXJyYXkoZiksdj1u
ZXcgQXJyYXkoYSk7aWYodCl7dmFyIGQsbT1uZXcgbyx5PW5ldyBvLHg9W107Zm9yKHI9LTE7Kyty
PGE7KWQ9dC5jYWxsKHU9bltyXSx1Ll9fZGF0YV9fLHIpLG0uaGFzKGQpP3Zbcl09dTptLnNldChk
LHUpLHgucHVzaChkKTtmb3Iocj0tMTsrK3I8ZjspZD10LmNhbGwoZSxpPWVbcl0sciksKHU9bS5n
ZXQoZCkpPyhnW3JdPXUsdS5fX2RhdGFfXz1pKTp5LmhhcyhkKXx8KHBbcl09cShpKSkseS5zZXQo
ZCxpKSxtLnJlbW92ZShkKTtmb3Iocj0tMTsrK3I8YTspbS5oYXMoeFtyXSkmJih2W3JdPW5bcl0p
fWVsc2V7Zm9yKHI9LTE7KytyPGg7KXU9bltyXSxpPWVbcl0sdT8odS5fX2RhdGFfXz1pLGdbcl09
dSk6cFtyXT1xKGkpO2Zvcig7Zj5yOysrcilwW3JdPXEoZVtyXSk7Zm9yKDthPnI7KytyKXZbcl09
bltyXX1wLnVwZGF0ZT1nLHAucGFyZW50Tm9kZT1nLnBhcmVudE5vZGU9di5wYXJlbnROb2RlPW4u
cGFyZW50Tm9kZSxjLnB1c2gocCkscy5wdXNoKGcpLGwucHVzaCh2KX12YXIgcix1LGk9LTEsYT10
aGlzLmxlbmd0aDtpZighYXJndW1lbnRzLmxlbmd0aCl7Zm9yKG49bmV3IEFycmF5KGE9KHI9dGhp
c1swXSkubGVuZ3RoKTsrK2k8YTspKHU9cltpXSkmJihuW2ldPXUuX19kYXRhX18pO3JldHVybiBu
fXZhciBjPVUoW10pLHM9XyhbXSksbD1fKFtdKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbilmb3Io
OysraTxhOyllKHI9dGhpc1tpXSxuLmNhbGwocixyLnBhcmVudE5vZGUuX19kYXRhX18saSkpO2Vs
c2UgZm9yKDsrK2k8YTspZShyPXRoaXNbaV0sbik7cmV0dXJuIHMuZW50ZXI9ZnVuY3Rpb24oKXty
ZXR1cm4gY30scy5leGl0PWZ1bmN0aW9uKCl7cmV0dXJuIGx9LHN9LHBhLmRhdHVtPWZ1bmN0aW9u
KG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIixuKTp0
aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIpfSxwYS5maWx0ZXI9ZnVuY3Rpb24obil7dmFyIHQsZSxy
LHU9W107ImZ1bmN0aW9uIiE9dHlwZW9mIG4mJihuPVIobikpO2Zvcih2YXIgaT0wLG89dGhpcy5s
ZW5ndGg7bz5pO2krKyl7dS5wdXNoKHQ9W10pLHQucGFyZW50Tm9kZT0oZT10aGlzW2ldKS5wYXJl
bnROb2RlO2Zvcih2YXIgYT0wLGM9ZS5sZW5ndGg7Yz5hO2ErKykocj1lW2FdKSYmbi5jYWxsKHIs
ci5fX2RhdGFfXyxhLGkpJiZ0LnB1c2gocil9cmV0dXJuIF8odSl9LHBhLm9yZGVyPWZ1bmN0aW9u
KCl7Zm9yKHZhciBuPS0xLHQ9dGhpcy5sZW5ndGg7KytuPHQ7KWZvcih2YXIgZSxyPXRoaXNbbl0s
dT1yLmxlbmd0aC0xLGk9clt1XTstLXU+PTA7KShlPXJbdV0pJiYoaSYmaSE9PWUubmV4dFNpYmxp
bmcmJmkucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSxpKSxpPWUpO3JldHVybiB0aGlzfSxwYS5z
b3J0PWZ1bmN0aW9uKG4pe249RC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7Zm9yKHZhciB0PS0xLGU9
dGhpcy5sZW5ndGg7Kyt0PGU7KXRoaXNbdF0uc29ydChuKTtyZXR1cm4gdGhpcy5vcmRlcigpfSxw
YS5lYWNoPWZ1bmN0aW9uKG4pe3JldHVybiBQKHRoaXMsZnVuY3Rpb24odCxlLHIpe24uY2FsbCh0
LHQuX19kYXRhX18sZSxyKX0pfSxwYS5jYWxsPWZ1bmN0aW9uKG4pe3ZhciB0PVhvKGFyZ3VtZW50
cyk7cmV0dXJuIG4uYXBwbHkodFswXT10aGlzLHQpLHRoaXN9LHBhLmVtcHR5PWZ1bmN0aW9uKCl7
cmV0dXJuIXRoaXMubm9kZSgpfSxwYS5ub2RlPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPTAsdD10aGlz
Lmxlbmd0aDt0Pm47bisrKWZvcih2YXIgZT10aGlzW25dLHI9MCx1PWUubGVuZ3RoO3U+cjtyKysp
e3ZhciBpPWVbcl07aWYoaSlyZXR1cm4gaX1yZXR1cm4gbnVsbH0scGEuc2l6ZT1mdW5jdGlvbigp
e3ZhciBuPTA7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpeysrbn0pLG59O3ZhciBkYT1bXTta
by5zZWxlY3Rpb24uZW50ZXI9VSxaby5zZWxlY3Rpb24uZW50ZXIucHJvdG90eXBlPWRhLGRhLmFw
cGVuZD1wYS5hcHBlbmQsZGEuZW1wdHk9cGEuZW1wdHksZGEubm9kZT1wYS5ub2RlLGRhLmNhbGw9
cGEuY2FsbCxkYS5zaXplPXBhLnNpemUsZGEuc2VsZWN0PWZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxl
LHIsdSxpLG89W10sYT0tMSxjPXRoaXMubGVuZ3RoOysrYTxjOyl7cj0odT10aGlzW2FdKS51cGRh
dGUsby5wdXNoKHQ9W10pLHQucGFyZW50Tm9kZT11LnBhcmVudE5vZGU7Zm9yKHZhciBzPS0xLGw9
dS5sZW5ndGg7KytzPGw7KShpPXVbc10pPyh0LnB1c2gocltzXT1lPW4uY2FsbCh1LnBhcmVudE5v
ZGUsaS5fX2RhdGFfXyxzLGEpKSxlLl9fZGF0YV9fPWkuX19kYXRhX18pOnQucHVzaChudWxsKX1y
ZXR1cm4gXyhvKX0sZGEuaW5zZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg8MiYmKHQ9aih0aGlzKSkscGEuaW5zZXJ0LmNhbGwodGhpcyxuLHQpfSxwYS50cmFuc2l0aW9u
PWZ1bmN0aW9uKCl7Zm9yKHZhciBuLHQsZT1Tc3x8KytOcyxyPVtdLHU9a3N8fHt0aW1lOkRhdGUu
bm93KCksZWFzZTp4dSxkZWxheTowLGR1cmF0aW9uOjI1MH0saT0tMSxvPXRoaXMubGVuZ3RoOysr
aTxvOyl7ci5wdXNoKG49W10pO2Zvcih2YXIgYT10aGlzW2ldLGM9LTEscz1hLmxlbmd0aDsrK2M8
czspKHQ9YVtjXSkmJlBvKHQsYyxlLHUpLG4ucHVzaCh0KX1yZXR1cm4gcW8ocixlKX0scGEuaW50
ZXJydXB0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChIKX0sWm8uc2VsZWN0PWZ1bmN0aW9u
KG4pe3ZhciB0PVsic3RyaW5nIj09dHlwZW9mIG4/bGEobiwkbyk6bl07cmV0dXJuIHQucGFyZW50
Tm9kZT1CbyxfKFt0XSl9LFpvLnNlbGVjdEFsbD1mdW5jdGlvbihuKXt2YXIgdD1Ybygic3RyaW5n
Ij09dHlwZW9mIG4/ZmEobiwkbyk6bik7cmV0dXJuIHQucGFyZW50Tm9kZT1CbyxfKFt0XSl9O3Zh
ciBtYT1aby5zZWxlY3QoQm8pO3BhLm9uPWZ1bmN0aW9uKG4sdCxlKXt2YXIgcj1hcmd1bWVudHMu
bGVuZ3RoO2lmKDM+cil7aWYoInN0cmluZyIhPXR5cGVvZiBuKXsyPnImJih0PSExKTtmb3IoZSBp
biBuKXRoaXMuZWFjaChGKGUsbltlXSx0KSk7cmV0dXJuIHRoaXN9aWYoMj5yKXJldHVybihyPXRo
aXMubm9kZSgpWyJfX29uIituXSkmJnIuXztlPSExfXJldHVybiB0aGlzLmVhY2goRihuLHQsZSkp
fTt2YXIgeWE9Wm8ubWFwKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNl
b3V0In0pO3lhLmZvckVhY2goZnVuY3Rpb24obil7Im9uIituIGluICRvJiZ5YS5yZW1vdmUobil9
KTt2YXIgeGE9Im9uc2VsZWN0c3RhcnQiaW4gJG8/bnVsbDpwKEJvLnN0eWxlLCJ1c2VyU2VsZWN0
IiksTWE9MDtaby5tb3VzZT1mdW5jdGlvbihuKXtyZXR1cm4gWihuLHgoKSl9O3ZhciBfYT0vV2Vi
S2l0Ly50ZXN0KFdvLm5hdmlnYXRvci51c2VyQWdlbnQpPy0xOjA7Wm8udG91Y2hlcz1mdW5jdGlv
bihuLHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PXgoKS50b3VjaGVzKSx0P1hvKHQp
Lm1hcChmdW5jdGlvbih0KXt2YXIgZT1aKG4sdCk7cmV0dXJuIGUuaWRlbnRpZmllcj10LmlkZW50
aWZpZXIsZX0pOltdfSxaby5iZWhhdmlvci5kcmFnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3Ro
aXMub24oIm1vdXNlZG93bi5kcmFnIix1KS5vbigidG91Y2hzdGFydC5kcmFnIixpKX1mdW5jdGlv
biB0KG4sdCx1LGksbyl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3ZhciBuLGUscj10
KGgsdik7ciYmKG49clswXS14WzBdLGU9clsxXS14WzFdLHB8PW58ZSx4PXIsZyh7dHlwZToiZHJh
ZyIseDpyWzBdK3NbMF0seTpyWzFdK3NbMV0sZHg6bixkeTplfSkpfWZ1bmN0aW9uIGMoKXt0KGgs
dikmJihtLm9uKGkrZCxudWxsKS5vbihvK2QsbnVsbCkseShwJiZaby5ldmVudC50YXJnZXQ9PT1m
KSxnKHt0eXBlOiJkcmFnZW5kIn0pKX12YXIgcyxsPXRoaXMsZj1aby5ldmVudC50YXJnZXQsaD1s
LnBhcmVudE5vZGUsZz1lLm9mKGwsYXJndW1lbnRzKSxwPTAsdj1uKCksZD0iLmRyYWciKyhudWxs
PT12PyIiOiItIit2KSxtPVpvLnNlbGVjdCh1KCkpLm9uKGkrZCxhKS5vbihvK2QsYykseT1JKCks
eD10KGgsdik7cj8ocz1yLmFwcGx5KGwsYXJndW1lbnRzKSxzPVtzLngteFswXSxzLnkteFsxXV0p
OnM9WzAsMF0sZyh7dHlwZToiZHJhZ3N0YXJ0In0pfX12YXIgZT1NKG4sImRyYWciLCJkcmFnc3Rh
cnQiLCJkcmFnZW5kIikscj1udWxsLHU9dCh2LFpvLm1vdXNlLCQsIm1vdXNlbW92ZSIsIm1vdXNl
dXAiKSxpPXQoVixaby50b3VjaCxYLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIpO3JldHVybiBuLm9y
aWdpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LFpvLnJl
YmluZChuLGUsIm9uIil9O3ZhciBiYT1NYXRoLlBJLHdhPTIqYmEsU2E9YmEvMixrYT0xZS02LEVh
PWthKmthLEFhPWJhLzE4MCxDYT0xODAvYmEsTmE9TWF0aC5TUVJUMix6YT0yLExhPTQ7Wm8uaW50
ZXJwb2xhdGVab29tPWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZShuKXt2YXIgdD1uKnk7aWYobSl7
dmFyIGU9USh2KSxvPWkvKHphKmgpKihlKm50KE5hKnQrdiktSyh2KSk7cmV0dXJuW3IrbypzLHUr
bypsLGkqZS9RKE5hKnQrdildfXJldHVybltyK24qcyx1K24qbCxpKk1hdGguZXhwKE5hKnQpXX12
YXIgcj1uWzBdLHU9blsxXSxpPW5bMl0sbz10WzBdLGE9dFsxXSxjPXRbMl0scz1vLXIsbD1hLXUs
Zj1zKnMrbCpsLGg9TWF0aC5zcXJ0KGYpLGc9KGMqYy1pKmkrTGEqZikvKDIqaSp6YSpoKSxwPShj
KmMtaSppLUxhKmYpLygyKmMqemEqaCksdj1NYXRoLmxvZyhNYXRoLnNxcnQoZypnKzEpLWcpLGQ9
TWF0aC5sb2coTWF0aC5zcXJ0KHAqcCsxKS1wKSxtPWQtdix5PShtfHxNYXRoLmxvZyhjL2kpKS9O
YTtyZXR1cm4gZS5kdXJhdGlvbj0xZTMqeSxlfSxaby5iZWhhdmlvci56b29tPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gbihuKXtuLm9uKEEscykub24oUmErIi56b29tIixmKS5vbigiZGJsY2xpY2suem9v
bSIsaCkub24oeixsKX1mdW5jdGlvbiB0KG4pe3JldHVyblsoblswXS1TLngpL1MuaywoblsxXS1T
LnkpL1Mua119ZnVuY3Rpb24gZShuKXtyZXR1cm5bblswXSpTLmsrUy54LG5bMV0qUy5rK1MueV19
ZnVuY3Rpb24gcihuKXtTLms9TWF0aC5tYXgoRVswXSxNYXRoLm1pbihFWzFdLG4pKX1mdW5jdGlv
biB1KG4sdCl7dD1lKHQpLFMueCs9blswXS10WzBdLFMueSs9blsxXS10WzFdfWZ1bmN0aW9uIGko
KXtfJiZfLmRvbWFpbih4LnJhbmdlKCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybihuLVMueCkvUy5r
fSkubWFwKHguaW52ZXJ0KSksdyYmdy5kb21haW4oYi5yYW5nZSgpLm1hcChmdW5jdGlvbihuKXty
ZXR1cm4obi1TLnkpL1Mua30pLm1hcChiLmludmVydCkpfWZ1bmN0aW9uIG8obil7bih7dHlwZToi
em9vbXN0YXJ0In0pfWZ1bmN0aW9uIGEobil7aSgpLG4oe3R5cGU6Inpvb20iLHNjYWxlOlMuayx0
cmFuc2xhdGU6W1MueCxTLnldfSl9ZnVuY3Rpb24gYyhuKXtuKHt0eXBlOiJ6b29tZW5kIn0pfWZ1
bmN0aW9uIHMoKXtmdW5jdGlvbiBuKCl7bD0xLHUoWm8ubW91c2UociksaCksYShzKX1mdW5jdGlv
biBlKCl7Zi5vbihDLG51bGwpLm9uKE4sbnVsbCksZyhsJiZaby5ldmVudC50YXJnZXQ9PT1pKSxj
KHMpfXZhciByPXRoaXMsaT1aby5ldmVudC50YXJnZXQscz1MLm9mKHIsYXJndW1lbnRzKSxsPTAs
Zj1aby5zZWxlY3QoV28pLm9uKEMsbikub24oTixlKSxoPXQoWm8ubW91c2UocikpLGc9SSgpO0gu
Y2FsbChyKSxvKHMpfWZ1bmN0aW9uIGwoKXtmdW5jdGlvbiBuKCl7dmFyIG49Wm8udG91Y2hlcyhn
KTtyZXR1cm4gaD1TLmssbi5mb3JFYWNoKGZ1bmN0aW9uKG4pe24uaWRlbnRpZmllciBpbiB2JiYo
dltuLmlkZW50aWZpZXJdPXQobikpfSksbn1mdW5jdGlvbiBlKCl7dmFyIHQ9Wm8uZXZlbnQudGFy
Z2V0O1pvLnNlbGVjdCh0KS5vbihNLGkpLm9uKF8sZiksYi5wdXNoKHQpO2Zvcih2YXIgZT1aby5l
dmVudC5jaGFuZ2VkVG91Y2hlcyxvPTAsYz1lLmxlbmd0aDtjPm87KytvKXZbZVtvXS5pZGVudGlm
aWVyXT1udWxsO3ZhciBzPW4oKSxsPURhdGUubm93KCk7aWYoMT09PXMubGVuZ3RoKXtpZig1MDA+
bC1tKXt2YXIgaD1zWzBdLGc9dltoLmlkZW50aWZpZXJdO3IoMipTLmspLHUoaCxnKSx5KCksYShw
KX1tPWx9ZWxzZSBpZihzLmxlbmd0aD4xKXt2YXIgaD1zWzBdLHg9c1sxXSx3PWhbMF0teFswXSxr
PWhbMV0teFsxXTtkPXcqdytrKmt9fWZ1bmN0aW9uIGkoKXtmb3IodmFyIG4sdCxlLGksbz1aby50
b3VjaGVzKGcpLGM9MCxzPW8ubGVuZ3RoO3M+YzsrK2MsaT1udWxsKWlmKGU9b1tjXSxpPXZbZS5p
ZGVudGlmaWVyXSl7aWYodClicmVhaztuPWUsdD1pfWlmKGkpe3ZhciBsPShsPWVbMF0tblswXSkq
bCsobD1lWzFdLW5bMV0pKmwsZj1kJiZNYXRoLnNxcnQobC9kKTtuPVsoblswXStlWzBdKS8yLChu
WzFdK2VbMV0pLzJdLHQ9Wyh0WzBdK2lbMF0pLzIsKHRbMV0raVsxXSkvMl0scihmKmgpfW09bnVs
bCx1KG4sdCksYShwKX1mdW5jdGlvbiBmKCl7aWYoWm8uZXZlbnQudG91Y2hlcy5sZW5ndGgpe2Zv
cih2YXIgdD1aby5ldmVudC5jaGFuZ2VkVG91Y2hlcyxlPTAscj10Lmxlbmd0aDtyPmU7KytlKWRl
bGV0ZSB2W3RbZV0uaWRlbnRpZmllcl07Zm9yKHZhciB1IGluIHYpcmV0dXJuIHZvaWQgbigpfVpv
LnNlbGVjdEFsbChiKS5vbih4LG51bGwpLHcub24oQSxzKS5vbih6LGwpLGsoKSxjKHApfXZhciBo
LGc9dGhpcyxwPUwub2YoZyxhcmd1bWVudHMpLHY9e30sZD0wLHg9Ii56b29tLSIrWm8uZXZlbnQu
Y2hhbmdlZFRvdWNoZXNbMF0uaWRlbnRpZmllcixNPSJ0b3VjaG1vdmUiK3gsXz0idG91Y2hlbmQi
K3gsYj1bXSx3PVpvLnNlbGVjdChnKS5vbihBLG51bGwpLm9uKHosZSksaz1JKCk7SC5jYWxsKGcp
LGUoKSxvKHApfWZ1bmN0aW9uIGYoKXt2YXIgbj1MLm9mKHRoaXMsYXJndW1lbnRzKTtkP2NsZWFy
VGltZW91dChkKTooZz10KHA9dnx8Wm8ubW91c2UodGhpcykpLEguY2FsbCh0aGlzKSxvKG4pKSxk
PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtkPW51bGwsYyhuKX0sNTApLHkoKSxyKE1hdGgucG93KDIs
LjAwMipUYSgpKSpTLmspLHUocCxnKSxhKG4pfWZ1bmN0aW9uIGgoKXt2YXIgbj1MLm9mKHRoaXMs
YXJndW1lbnRzKSxlPVpvLm1vdXNlKHRoaXMpLGk9dChlKSxzPU1hdGgubG9nKFMuaykvTWF0aC5M
TjI7byhuKSxyKE1hdGgucG93KDIsWm8uZXZlbnQuc2hpZnRLZXk/TWF0aC5jZWlsKHMpLTE6TWF0
aC5mbG9vcihzKSsxKSksdShlLGkpLGEobiksYyhuKX12YXIgZyxwLHYsZCxtLHgsXyxiLHcsUz17
eDowLHk6MCxrOjF9LGs9Wzk2MCw1MDBdLEU9cWEsQT0ibW91c2Vkb3duLnpvb20iLEM9Im1vdXNl
bW92ZS56b29tIixOPSJtb3VzZXVwLnpvb20iLHo9InRvdWNoc3RhcnQuem9vbSIsTD1NKG4sInpv
b21zdGFydCIsInpvb20iLCJ6b29tZW5kIik7cmV0dXJuIG4uZXZlbnQ9ZnVuY3Rpb24obil7bi5l
YWNoKGZ1bmN0aW9uKCl7dmFyIG49TC5vZih0aGlzLGFyZ3VtZW50cyksdD1TO1NzP1pvLnNlbGVj
dCh0aGlzKS50cmFuc2l0aW9uKCkuZWFjaCgic3RhcnQuem9vbSIsZnVuY3Rpb24oKXtTPXRoaXMu
X19jaGFydF9ffHx7eDowLHk6MCxrOjF9LG8obil9KS50d2Vlbigiem9vbTp6b29tIixmdW5jdGlv
bigpe3ZhciBlPWtbMF0scj1rWzFdLHU9ZS8yLGk9ci8yLG89Wm8uaW50ZXJwb2xhdGVab29tKFso
dS1TLngpL1MuaywoaS1TLnkpL1MuayxlL1Mua10sWyh1LXQueCkvdC5rLChpLXQueSkvdC5rLGUv
dC5rXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPW8odCksYz1lL3JbMl07dGhpcy5fX2NoYXJ0
X189Uz17eDp1LXJbMF0qYyx5OmktclsxXSpjLGs6Y30sYShuKX19KS5lYWNoKCJlbmQuem9vbSIs
ZnVuY3Rpb24oKXtjKG4pfSk6KHRoaXMuX19jaGFydF9fPVMsbyhuKSxhKG4pLGMobikpfSl9LG4u
dHJhbnNsYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPXt4Oit0WzBd
LHk6K3RbMV0sazpTLmt9LGkoKSxuKTpbUy54LFMueV19LG4uc2NhbGU9ZnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9e3g6Uy54LHk6Uy55LGs6K3R9LGkoKSxuKTpTLmt9LG4u
c2NhbGVFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9bnVsbD09
dD9xYTpbK3RbMF0sK3RbMV1dLG4pOkV9LG4uY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyh2PXQmJlsrdFswXSwrdFsxXV0sbik6dn0sbi5zaXplPWZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhrPXQmJlsrdFswXSwrdFsxXV0sbik6a30sbi54PWZ1
bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhfPXQseD10LmNvcHkoKSxTPXt4OjAs
eTowLGs6MX0sbik6X30sbi55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3
PXQsYj10LmNvcHkoKSxTPXt4OjAseTowLGs6MX0sbik6d30sWm8ucmViaW5kKG4sTCwib24iKX07
dmFyIFRhLHFhPVswLDEvMF0sUmE9Im9ud2hlZWwiaW4gJG8/KFRhPWZ1bmN0aW9uKCl7cmV0dXJu
LVpvLmV2ZW50LmRlbHRhWSooWm8uZXZlbnQuZGVsdGFNb2RlPzEyMDoxKX0sIndoZWVsIik6Im9u
bW91c2V3aGVlbCJpbiAkbz8oVGE9ZnVuY3Rpb24oKXtyZXR1cm4gWm8uZXZlbnQud2hlZWxEZWx0
YX0sIm1vdXNld2hlZWwiKTooVGE9ZnVuY3Rpb24oKXtyZXR1cm4tWm8uZXZlbnQuZGV0YWlsfSwi
TW96TW91c2VQaXhlbFNjcm9sbCIpO1pvLmNvbG9yPWV0LGV0LnByb3RvdHlwZS50b1N0cmluZz1m
dW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpKyIifSxaby5oc2w9cnQ7dmFyIERhPXJ0LnByb3Rv
dHlwZT1uZXcgZXQ7RGEuYnJpZ2h0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIG49TWF0aC5wb3coLjcs
YXJndW1lbnRzLmxlbmd0aD9uOjEpLG5ldyBydCh0aGlzLmgsdGhpcy5zLHRoaXMubC9uKX0sRGEu
ZGFya2VyPWZ1bmN0aW9uKG4pe3JldHVybiBuPU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/
bjoxKSxuZXcgcnQodGhpcy5oLHRoaXMucyxuKnRoaXMubCl9LERhLnJnYj1mdW5jdGlvbigpe3Jl
dHVybiB1dCh0aGlzLmgsdGhpcy5zLHRoaXMubCl9LFpvLmhjbD1pdDt2YXIgUGE9aXQucHJvdG90
eXBlPW5ldyBldDtQYS5icmlnaHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IGl0KHRoaXMuaCx0
aGlzLmMsTWF0aC5taW4oMTAwLHRoaXMubCtVYSooYXJndW1lbnRzLmxlbmd0aD9uOjEpKSl9LFBh
LmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IGl0KHRoaXMuaCx0aGlzLmMsTWF0aC5tYXgo
MCx0aGlzLmwtVWEqKGFyZ3VtZW50cy5sZW5ndGg/bjoxKSkpfSxQYS5yZ2I9ZnVuY3Rpb24oKXty
ZXR1cm4gb3QodGhpcy5oLHRoaXMuYyx0aGlzLmwpLnJnYigpfSxaby5sYWI9YXQ7dmFyIFVhPTE4
LGphPS45NTA0NyxIYT0xLEZhPTEuMDg4ODMsT2E9YXQucHJvdG90eXBlPW5ldyBldDtPYS5icmln
aHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IGF0KE1hdGgubWluKDEwMCx0aGlzLmwrVWEqKGFy
Z3VtZW50cy5sZW5ndGg/bjoxKSksdGhpcy5hLHRoaXMuYil9LE9hLmRhcmtlcj1mdW5jdGlvbihu
KXtyZXR1cm4gbmV3IGF0KE1hdGgubWF4KDAsdGhpcy5sLVVhKihhcmd1bWVudHMubGVuZ3RoP246
MSkpLHRoaXMuYSx0aGlzLmIpfSxPYS5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gY3QodGhpcy5sLHRo
aXMuYSx0aGlzLmIpfSxaby5yZ2I9Z3Q7dmFyIFlhPWd0LnByb3RvdHlwZT1uZXcgZXQ7WWEuYnJp
Z2h0ZXI9ZnVuY3Rpb24obil7bj1NYXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3RoP246MSk7dmFy
IHQ9dGhpcy5yLGU9dGhpcy5nLHI9dGhpcy5iLHU9MzA7cmV0dXJuIHR8fGV8fHI/KHQmJnU+dCYm
KHQ9dSksZSYmdT5lJiYoZT11KSxyJiZ1PnImJihyPXUpLG5ldyBndChNYXRoLm1pbigyNTUsdC9u
KSxNYXRoLm1pbigyNTUsZS9uKSxNYXRoLm1pbigyNTUsci9uKSkpOm5ldyBndCh1LHUsdSl9LFlh
LmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4gbj1NYXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3Ro
P246MSksbmV3IGd0KG4qdGhpcy5yLG4qdGhpcy5nLG4qdGhpcy5iKX0sWWEuaHNsPWZ1bmN0aW9u
KCl7cmV0dXJuIHl0KHRoaXMucix0aGlzLmcsdGhpcy5iKX0sWWEudG9TdHJpbmc9ZnVuY3Rpb24o
KXtyZXR1cm4iIyIrZHQodGhpcy5yKStkdCh0aGlzLmcpK2R0KHRoaXMuYil9O3ZhciBJYT1aby5t
YXAoe2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxh
cXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2
NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xl
dDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2
NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0Mjcy
LGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEw
MCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEy
MDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAx
NyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1
NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkx
MDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVi
bHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxk
YXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0Nyxk
ZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJs
dWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0
Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdo
aXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUw
NCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6
MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUz
MzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5k
ZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUs
bGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5
LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdy
ZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNh
bG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYs
bGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxi
bHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMz
MjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRp
dW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3
LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVi
bHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIz
MDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVh
bToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hp
dGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZl
ZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0
MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJx
dW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3
LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUy
NDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlZDoxNjcxMTY4MCxyb3N5
YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxt
b246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxs
OjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMx
LHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNu
b3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4
NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNl
OjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdo
aXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fSk7
SWEuZm9yRWFjaChmdW5jdGlvbihuLHQpe0lhLnNldChuLHB0KHQpKX0pLFpvLmZ1bmN0b3I9YnQs
Wm8ueGhyPVN0KHd0KSxaby5kc3Y9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKG4sZSxpKXthcmd1
bWVudHMubGVuZ3RoPDMmJihpPWUsZT1udWxsKTt2YXIgbz1rdChuLHQsbnVsbD09ZT9yOnUoZSks
aSk7cmV0dXJuIG8ucm93PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP28ucmVz
cG9uc2UobnVsbD09KGU9bik/cjp1KG4pKTplfSxvfWZ1bmN0aW9uIHIobil7cmV0dXJuIGUucGFy
c2Uobi5yZXNwb25zZVRleHQpfWZ1bmN0aW9uIHUobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVy
biBlLnBhcnNlKHQucmVzcG9uc2VUZXh0LG4pfX1mdW5jdGlvbiBpKHQpe3JldHVybiB0Lm1hcChv
KS5qb2luKG4pfWZ1bmN0aW9uIG8obil7cmV0dXJuIGEudGVzdChuKT8nIicrbi5yZXBsYWNlKC9c
Ii9nLCciIicpKyciJzpufXZhciBhPW5ldyBSZWdFeHAoJ1siJytuKyJcbl0iKSxjPW4uY2hhckNv
ZGVBdCgwKTtyZXR1cm4gZS5wYXJzZT1mdW5jdGlvbihuLHQpe3ZhciByO3JldHVybiBlLnBhcnNl
Um93cyhuLGZ1bmN0aW9uKG4sZSl7aWYocilyZXR1cm4gcihuLGUtMSk7dmFyIHU9bmV3IEZ1bmN0
aW9uKCJkIiwicmV0dXJuIHsiK24ubWFwKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIEpTT04uc3RyaW5n
aWZ5KG4pKyI6IGRbIit0KyJdIn0pLmpvaW4oIiwiKSsifSIpO3I9dD9mdW5jdGlvbihuLGUpe3Jl
dHVybiB0KHUobiksZSl9OnV9KX0sZS5wYXJzZVJvd3M9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBl
KCl7aWYobD49cylyZXR1cm4gbztpZih1KXJldHVybiB1PSExLGk7dmFyIHQ9bDtpZigzND09PW4u
Y2hhckNvZGVBdCh0KSl7Zm9yKHZhciBlPXQ7ZSsrPHM7KWlmKDM0PT09bi5jaGFyQ29kZUF0KGUp
KXtpZigzNCE9PW4uY2hhckNvZGVBdChlKzEpKWJyZWFrOysrZX1sPWUrMjt2YXIgcj1uLmNoYXJD
b2RlQXQoZSsxKTtyZXR1cm4gMTM9PT1yPyh1PSEwLDEwPT09bi5jaGFyQ29kZUF0KGUrMikmJisr
bCk6MTA9PT1yJiYodT0hMCksbi5zdWJzdHJpbmcodCsxLGUpLnJlcGxhY2UoLyIiL2csJyInKX1m
b3IoO3M+bDspe3ZhciByPW4uY2hhckNvZGVBdChsKyspLGE9MTtpZigxMD09PXIpdT0hMDtlbHNl
IGlmKDEzPT09cil1PSEwLDEwPT09bi5jaGFyQ29kZUF0KGwpJiYoKytsLCsrYSk7ZWxzZSBpZihy
IT09Yyljb250aW51ZTtyZXR1cm4gbi5zdWJzdHJpbmcodCxsLWEpfXJldHVybiBuLnN1YnN0cmlu
Zyh0KX1mb3IodmFyIHIsdSxpPXt9LG89e30sYT1bXSxzPW4ubGVuZ3RoLGw9MCxmPTA7KHI9ZSgp
KSE9PW87KXtmb3IodmFyIGg9W107ciE9PWkmJnIhPT1vOyloLnB1c2gocikscj1lKCk7KCF0fHwo
aD10KGgsZisrKSkpJiZhLnB1c2goaCl9cmV0dXJuIGF9LGUuZm9ybWF0PWZ1bmN0aW9uKHQpe2lm
KEFycmF5LmlzQXJyYXkodFswXSkpcmV0dXJuIGUuZm9ybWF0Um93cyh0KTt2YXIgcj1uZXcgaCx1
PVtdO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24obil7Zm9yKHZhciB0IGluIG4pci5oYXModCl8
fHUucHVzaChyLmFkZCh0KSl9KSxbdS5tYXAobykuam9pbihuKV0uY29uY2F0KHQubWFwKGZ1bmN0
aW9uKHQpe3JldHVybiB1Lm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbyh0W25dKX0pLmpvaW4obil9
KSkuam9pbigiXG4iKX0sZS5mb3JtYXRSb3dzPWZ1bmN0aW9uKG4pe3JldHVybiBuLm1hcChpKS5q
b2luKCJcbiIpfSxlfSxaby5jc3Y9Wm8uZHN2KCIsIiwidGV4dC9jc3YiKSxaby50c3Y9Wm8uZHN2
KCIgICAgIiwidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyIpLFpvLnRvdWNoPWZ1bmN0aW9uKG4s
dCxlKXtpZihhcmd1bWVudHMubGVuZ3RoPDMmJihlPXQsdD14KCkuY2hhbmdlZFRvdWNoZXMpLHQp
Zm9yKHZhciByLHU9MCxpPXQubGVuZ3RoO2k+dTsrK3UpaWYoKHI9dFt1XSkuaWRlbnRpZmllcj09
PWUpcmV0dXJuIFoobixyKX07dmFyIFphLFZhLFhhLCRhLEJhLFdhPVdvW3AoV28sInJlcXVlc3RB
bmltYXRpb25GcmFtZSIpXXx8ZnVuY3Rpb24obil7c2V0VGltZW91dChuLDE3KX07Wm8udGltZXI9
ZnVuY3Rpb24obix0LGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7Mj5yJiYodD0wKSwzPnImJihl
PURhdGUubm93KCkpO3ZhciB1PWUrdCxpPXtjOm4sdDp1LGY6ITEsbjpudWxsfTtWYT9WYS5uPWk6
WmE9aSxWYT1pLFhhfHwoJGE9Y2xlYXJUaW1lb3V0KCRhKSxYYT0xLFdhKEF0KSl9LFpvLnRpbWVy
LmZsdXNoPWZ1bmN0aW9uKCl7Q3QoKSxOdCgpfSxaby5yb3VuZD1mdW5jdGlvbihuLHQpe3JldHVy
biB0P01hdGgucm91bmQobioodD1NYXRoLnBvdygxMCx0KSkpL3Q6TWF0aC5yb3VuZChuKX07dmFy
IEphPVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiXHhiNSIsIm0iLCIiLCJrIiwiTSIsIkciLCJU
IiwiUCIsIkUiLCJaIiwiWSJdLm1hcChMdCk7Wm8uZm9ybWF0UHJlZml4PWZ1bmN0aW9uKG4sdCl7
dmFyIGU9MDtyZXR1cm4gbiYmKDA+biYmKG4qPS0xKSx0JiYobj1aby5yb3VuZChuLHp0KG4sdCkp
KSxlPTErTWF0aC5mbG9vcigxZS0xMitNYXRoLmxvZyhuKS9NYXRoLkxOMTApLGU9TWF0aC5tYXgo
LTI0LE1hdGgubWluKDI0LDMqTWF0aC5mbG9vcigoZS0xKS8zKSkpKSxKYVs4K2UvM119O3ZhciBH
YT0vKD86KFtee10pPyhbPD49Xl0pKT8oWytcLSBdKT8oWyQjXSk/KDApPyhcZCspPygsKT8oXC4t
P1xkKyk/KFthLXolXSk/L2ksS2E9Wm8ubWFwKHtiOmZ1bmN0aW9uKG4pe3JldHVybiBuLnRvU3Ry
aW5nKDIpfSxjOmZ1bmN0aW9uKG4pe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG4pfSxvOmZ1
bmN0aW9uKG4pe3JldHVybiBuLnRvU3RyaW5nKDgpfSx4OmZ1bmN0aW9uKG4pe3JldHVybiBuLnRv
U3RyaW5nKDE2KX0sWDpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZygxNikudG9VcHBlckNh
c2UoKX0sZzpmdW5jdGlvbihuLHQpe3JldHVybiBuLnRvUHJlY2lzaW9uKHQpfSxlOmZ1bmN0aW9u
KG4sdCl7cmV0dXJuIG4udG9FeHBvbmVudGlhbCh0KX0sZjpmdW5jdGlvbihuLHQpe3JldHVybiBu
LnRvRml4ZWQodCl9LHI6ZnVuY3Rpb24obix0KXtyZXR1cm4obj1aby5yb3VuZChuLHp0KG4sdCkp
KS50b0ZpeGVkKE1hdGgubWF4KDAsTWF0aC5taW4oMjAsenQobiooMSsxZS0xNSksdCkpKSl9fSks
UWE9Wm8udGltZT17fSxuYz1EYXRlO1J0LnByb3RvdHlwZT17Z2V0RGF0ZTpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl8uZ2V0VVRDRGF0ZSgpfSxnZXREYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
LmdldFVUQ0RheSgpfSxnZXRGdWxsWWVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRD
RnVsbFllYXIoKX0sZ2V0SG91cnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ0hvdXJz
KCl9LGdldE1pbGxpc2Vjb25kczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDTWlsbGlz
ZWNvbmRzKCl9LGdldE1pbnV0ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ01pbnV0
ZXMoKX0sZ2V0TW9udGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ01vbnRoKCl9LGdl
dFNlY29uZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ1NlY29uZHMoKX0sZ2V0VGlt
ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VGltZSgpfSxnZXRUaW1lem9uZU9mZnNldDpm
dW5jdGlvbigpe3JldHVybiAwfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy52YWx1
ZU9mKCl9LHNldERhdGU6ZnVuY3Rpb24oKXt0Yy5zZXRVVENEYXRlLmFwcGx5KHRoaXMuXyxhcmd1
bWVudHMpfSxzZXREYXk6ZnVuY3Rpb24oKXt0Yy5zZXRVVENEYXkuYXBwbHkodGhpcy5fLGFyZ3Vt
ZW50cyl9LHNldEZ1bGxZZWFyOmZ1bmN0aW9uKCl7dGMuc2V0VVRDRnVsbFllYXIuYXBwbHkodGhp
cy5fLGFyZ3VtZW50cyl9LHNldEhvdXJzOmZ1bmN0aW9uKCl7dGMuc2V0VVRDSG91cnMuYXBwbHko
dGhpcy5fLGFyZ3VtZW50cyl9LHNldE1pbGxpc2Vjb25kczpmdW5jdGlvbigpe3RjLnNldFVUQ01p
bGxpc2Vjb25kcy5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0TWludXRlczpmdW5jdGlvbigp
e3RjLnNldFVUQ01pbnV0ZXMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldE1vbnRoOmZ1bmN0
aW9uKCl7dGMuc2V0VVRDTW9udGguYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldFNlY29uZHM6
ZnVuY3Rpb24oKXt0Yy5zZXRVVENTZWNvbmRzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRU
aW1lOmZ1bmN0aW9uKCl7dGMuc2V0VGltZS5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX19O3ZhciB0
Yz1EYXRlLnByb3RvdHlwZTtRYS55ZWFyPUR0KGZ1bmN0aW9uKG4pe3JldHVybiBuPVFhLmRheShu
KSxuLnNldE1vbnRoKDAsMSksbn0sZnVuY3Rpb24obix0KXtuLnNldEZ1bGxZZWFyKG4uZ2V0RnVs
bFllYXIoKSt0KX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0RnVsbFllYXIoKX0pLFFhLnllYXJz
PVFhLnllYXIucmFuZ2UsUWEueWVhcnMudXRjPVFhLnllYXIudXRjLnJhbmdlLFFhLmRheT1EdChm
dW5jdGlvbihuKXt2YXIgdD1uZXcgbmMoMmUzLDApO3JldHVybiB0LnNldEZ1bGxZZWFyKG4uZ2V0
RnVsbFllYXIoKSxuLmdldE1vbnRoKCksbi5nZXREYXRlKCkpLHR9LGZ1bmN0aW9uKG4sdCl7bi5z
ZXREYXRlKG4uZ2V0RGF0ZSgpK3QpfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXREYXRlKCktMX0p
LFFhLmRheXM9UWEuZGF5LnJhbmdlLFFhLmRheXMudXRjPVFhLmRheS51dGMucmFuZ2UsUWEuZGF5
T2ZZZWFyPWZ1bmN0aW9uKG4pe3ZhciB0PVFhLnllYXIobik7cmV0dXJuIE1hdGguZmxvb3IoKG4t
dC02ZTQqKG4uZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKS84NjRl
NSl9LFsic3VuZGF5IiwibW9uZGF5IiwidHVlc2RheSIsIndlZG5lc2RheSIsInRodXJzZGF5Iiwi
ZnJpZGF5Iiwic2F0dXJkYXkiXS5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7dD03LXQ7dmFyIGU9UWFb
bl09RHQoZnVuY3Rpb24obil7cmV0dXJuKG49UWEuZGF5KG4pKS5zZXREYXRlKG4uZ2V0RGF0ZSgp
LShuLmdldERheSgpK3QpJTcpLG59LGZ1bmN0aW9uKG4sdCl7bi5zZXREYXRlKG4uZ2V0RGF0ZSgp
KzcqTWF0aC5mbG9vcih0KSl9LGZ1bmN0aW9uKG4pe3ZhciBlPVFhLnllYXIobikuZ2V0RGF5KCk7
cmV0dXJuIE1hdGguZmxvb3IoKFFhLmRheU9mWWVhcihuKSsoZSt0KSU3KS83KS0oZSE9PXQpfSk7
UWFbbisicyJdPWUucmFuZ2UsUWFbbisicyJdLnV0Yz1lLnV0Yy5yYW5nZSxRYVtuKyJPZlllYXIi
XT1mdW5jdGlvbihuKXt2YXIgZT1RYS55ZWFyKG4pLmdldERheSgpO3JldHVybiBNYXRoLmZsb29y
KChRYS5kYXlPZlllYXIobikrKGUrdCklNykvNyl9fSksUWEud2Vlaz1RYS5zdW5kYXksUWEud2Vl
a3M9UWEuc3VuZGF5LnJhbmdlLFFhLndlZWtzLnV0Yz1RYS5zdW5kYXkudXRjLnJhbmdlLFFhLndl
ZWtPZlllYXI9UWEuc3VuZGF5T2ZZZWFyO3ZhciBlYz17Ii0iOiIiLF86IiAiLDA6IjAifSxyYz0v
XlxzKlxkKy8sdWM9L14lLztaby5sb2NhbGU9ZnVuY3Rpb24obil7cmV0dXJue251bWJlckZvcm1h
dDpUdChuKSx0aW1lRm9ybWF0OlV0KG4pfX07dmFyIGljPVpvLmxvY2FsZSh7ZGVjaW1hbDoiLiIs
dGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl0sZGF0ZVRpbWU6IiVh
ICViICVlICVYICVZIixkYXRlOiIlbS8lZC8lWSIsdGltZToiJUg6JU06JVMiLHBlcmlvZHM6WyJB
TSIsIlBNIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJU
aHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVl
IiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5Iiwi
TWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwi
T2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIs
Ik1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRl
YyJdfSk7Wm8uZm9ybWF0PWljLm51bWJlckZvcm1hdCxaby5nZW89e30sdWUucHJvdG90eXBlPXtz
OjAsdDowLGFkZDpmdW5jdGlvbihuKXtpZShuLHRoaXMudCxvYyksaWUob2Mucyx0aGlzLnMsdGhp
cyksdGhpcy5zP3RoaXMudCs9b2MudDp0aGlzLnM9b2MudH0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlz
LnM9dGhpcy50PTB9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zfX07dmFyIG9jPW5l
dyB1ZTtaby5nZW8uc3RyZWFtPWZ1bmN0aW9uKG4sdCl7biYmYWMuaGFzT3duUHJvcGVydHkobi50
eXBlKT9hY1tuLnR5cGVdKG4sdCk6b2Uobix0KX07dmFyIGFjPXtGZWF0dXJlOmZ1bmN0aW9uKG4s
dCl7b2Uobi5nZW9tZXRyeSx0KX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24obix0KXtmb3Io
dmFyIGU9bi5mZWF0dXJlcyxyPS0xLHU9ZS5sZW5ndGg7KytyPHU7KW9lKGVbcl0uZ2VvbWV0cnks
dCl9fSxjYz17U3BoZXJlOmZ1bmN0aW9uKG4sdCl7dC5zcGhlcmUoKX0sUG9pbnQ6ZnVuY3Rpb24o
bix0KXtuPW4uY29vcmRpbmF0ZXMsdC5wb2ludChuWzBdLG5bMV0sblsyXSl9LE11bHRpUG9pbnQ6
ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9bi5jb29yZGluYXRlcyxyPS0xLHU9ZS5sZW5ndGg7Kyty
PHU7KW49ZVtyXSx0LnBvaW50KG5bMF0sblsxXSxuWzJdKX0sTGluZVN0cmluZzpmdW5jdGlvbihu
LHQpe2FlKG4uY29vcmRpbmF0ZXMsdCwwKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKG4sdCl7
Zm9yKHZhciBlPW4uY29vcmRpbmF0ZXMscj0tMSx1PWUubGVuZ3RoOysrcjx1OylhZShlW3JdLHQs
MCl9LFBvbHlnb246ZnVuY3Rpb24obix0KXtjZShuLmNvb3JkaW5hdGVzLHQpfSxNdWx0aVBvbHln
b246ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9bi5jb29yZGluYXRlcyxyPS0xLHU9ZS5sZW5ndGg7
KytyPHU7KWNlKGVbcl0sdCl9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbihuLHQpe2Zvcih2
YXIgZT1uLmdlb21ldHJpZXMscj0tMSx1PWUubGVuZ3RoOysrcjx1OylvZShlW3JdLHQpfX07Wm8u
Z2VvLmFyZWE9ZnVuY3Rpb24obil7cmV0dXJuIHNjPTAsWm8uZ2VvLnN0cmVhbShuLGZjKSxzY307
dmFyIHNjLGxjPW5ldyB1ZSxmYz17c3BoZXJlOmZ1bmN0aW9uKCl7c2MrPTQqYmF9LHBvaW50OnYs
bGluZVN0YXJ0OnYsbGluZUVuZDp2LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2xjLnJlc2V0KCks
ZmMubGluZVN0YXJ0PXNlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIG49MipsYztzYys9MD5u
PzQqYmErbjpuLGZjLmxpbmVTdGFydD1mYy5saW5lRW5kPWZjLnBvaW50PXZ9fTtaby5nZW8uYm91
bmRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHQpe3gucHVzaChNPVtsPW4saD1uXSksZj50JiYo
Zj10KSx0PmcmJihnPXQpfWZ1bmN0aW9uIHQodCxlKXt2YXIgcj1sZShbdCpBYSxlKkFhXSk7aWYo
bSl7dmFyIHU9aGUobSxyKSxpPVt1WzFdLC11WzBdLDBdLG89aGUoaSx1KTt2ZShvKSxvPWRlKG8p
O3ZhciBjPXQtcCxzPWM+MD8xOi0xLHY9b1swXSpDYSpzLGQ9dWEoYyk+MTgwO2lmKGReKHY+cypw
JiZzKnQ+dikpe3ZhciB5PW9bMV0qQ2E7eT5nJiYoZz15KX1lbHNlIGlmKHY9KHYrMzYwKSUzNjAt
MTgwLGReKHY+cypwJiZzKnQ+dikpe3ZhciB5PS1vWzFdKkNhO2Y+eSYmKGY9eSl9ZWxzZSBmPmUm
JihmPWUpLGU+ZyYmKGc9ZSk7ZD9wPnQ/YShsLHQpPmEobCxoKSYmKGg9dCk6YSh0LGgpPmEobCxo
KSYmKGw9dCk6aD49bD8obD50JiYobD10KSx0PmgmJihoPXQpKTp0PnA/YShsLHQpPmEobCxoKSYm
KGg9dCk6YSh0LGgpPmEobCxoKSYmKGw9dCl9ZWxzZSBuKHQsZSk7bT1yLHA9dH1mdW5jdGlvbiBl
KCl7Xy5wb2ludD10fWZ1bmN0aW9uIHIoKXtNWzBdPWwsTVsxXT1oLF8ucG9pbnQ9bixtPW51bGx9
ZnVuY3Rpb24gdShuLGUpe2lmKG0pe3ZhciByPW4tcDt5Kz11YShyKT4xODA/cisocj4wPzM2MDot
MzYwKTpyfWVsc2Ugdj1uLGQ9ZTtmYy5wb2ludChuLGUpLHQobixlKX1mdW5jdGlvbiBpKCl7ZmMu
bGluZVN0YXJ0KCl9ZnVuY3Rpb24gbygpe3UodixkKSxmYy5saW5lRW5kKCksdWEoeSk+a2EmJihs
PS0oaD0xODApKSxNWzBdPWwsTVsxXT1oLG09bnVsbH1mdW5jdGlvbiBhKG4sdCl7cmV0dXJuKHQt
PW4pPDA/dCszNjA6dH1mdW5jdGlvbiBjKG4sdCl7cmV0dXJuIG5bMF0tdFswXX1mdW5jdGlvbiBz
KG4sdCl7cmV0dXJuIHRbMF08PXRbMV0/dFswXTw9biYmbjw9dFsxXTpuPHRbMF18fHRbMV08bn12
YXIgbCxmLGgsZyxwLHYsZCxtLHkseCxNLF89e3BvaW50Om4sbGluZVN0YXJ0OmUsbGluZUVuZDpy
LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe18ucG9pbnQ9dSxfLmxpbmVTdGFydD1pLF8ubGluZUVu
ZD1vLHk9MCxmYy5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2ZjLnBvbHln
b25FbmQoKSxfLnBvaW50PW4sXy5saW5lU3RhcnQ9ZSxfLmxpbmVFbmQ9ciwwPmxjPyhsPS0oaD0x
ODApLGY9LShnPTkwKSk6eT5rYT9nPTkwOi1rYT55JiYoZj0tOTApLE1bMF09bCxNWzFdPWh9fTty
ZXR1cm4gZnVuY3Rpb24obil7Zz1oPS0obD1mPTEvMCkseD1bXSxaby5nZW8uc3RyZWFtKG4sXyk7
dmFyIHQ9eC5sZW5ndGg7aWYodCl7eC5zb3J0KGMpO2Zvcih2YXIgZSxyPTEsdT14WzBdLGk9W3Vd
O3Q+cjsrK3IpZT14W3JdLHMoZVswXSx1KXx8cyhlWzFdLHUpPyhhKHVbMF0sZVsxXSk+YSh1WzBd
LHVbMV0pJiYodVsxXT1lWzFdKSxhKGVbMF0sdVsxXSk+YSh1WzBdLHVbMV0pJiYodVswXT1lWzBd
KSk6aS5wdXNoKHU9ZSk7Citmb3IodmFyIG8sZSxwPS0xLzAsdD1pLmxlbmd0aC0xLHI9MCx1PWlb
dF07dD49cjt1PWUsKytyKWU9aVtyXSwobz1hKHVbMV0sZVswXSkpPnAmJihwPW8sbD1lWzBdLGg9
dVsxXSl9cmV0dXJuIHg9TT1udWxsLDEvMD09PWx8fDEvMD09PWY/W1swLzAsMC8wXSxbMC8wLDAv
MF1dOltbbCxmXSxbaCxnXV19fSgpLFpvLmdlby5jZW50cm9pZD1mdW5jdGlvbihuKXtoYz1nYz1w
Yz12Yz1kYz1tYz15Yz14Yz1NYz1fYz1iYz0wLFpvLmdlby5zdHJlYW0obix3Yyk7dmFyIHQ9TWMs
ZT1fYyxyPWJjLHU9dCp0K2UqZStyKnI7cmV0dXJuIEVhPnUmJih0PW1jLGU9eWMscj14YyxrYT5n
YyYmKHQ9cGMsZT12YyxyPWRjKSx1PXQqdCtlKmUrcipyLEVhPnUpP1swLzAsMC8wXTpbTWF0aC5h
dGFuMihlLHQpKkNhLEcoci9NYXRoLnNxcnQodSkpKkNhXX07dmFyIGhjLGdjLHBjLHZjLGRjLG1j
LHljLHhjLE1jLF9jLGJjLHdjPXtzcGhlcmU6dixwb2ludDp5ZSxsaW5lU3RhcnQ6TWUsbGluZUVu
ZDpfZSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt3Yy5saW5lU3RhcnQ9YmV9LHBvbHlnb25FbmQ6
ZnVuY3Rpb24oKXt3Yy5saW5lU3RhcnQ9TWV9fSxTYz1BZSh3ZSxUZSxSZSxbLWJhLC1iYS8yXSks
a2M9MWU5O1pvLmdlby5jbGlwRXh0ZW50PWZ1bmN0aW9uKCl7dmFyIG4sdCxlLHIsdSxpLG89e3N0
cmVhbTpmdW5jdGlvbihuKXtyZXR1cm4gdSYmKHUudmFsaWQ9ITEpLHU9aShuKSx1LnZhbGlkPSEw
LHV9LGV4dGVudDpmdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1VZShuPSth
WzBdWzBdLHQ9K2FbMF1bMV0sZT0rYVsxXVswXSxyPSthWzFdWzFdKSx1JiYodS52YWxpZD0hMSx1
PW51bGwpLG8pOltbbix0XSxbZSxyXV19fTtyZXR1cm4gby5leHRlbnQoW1swLDBdLFs5NjAsNTAw
XV0pfSwoWm8uZ2VvLmNvbmljRXF1YWxBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIEhlKEZlKX0pLnJh
dz1GZSxaby5nZW8uYWxiZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIFpvLmdlby5jb25pY0VxdWFsQXJl
YSgpLnJvdGF0ZShbOTYsMF0pLmNlbnRlcihbLS42LDM4LjddKS5wYXJhbGxlbHMoWzI5LjUsNDUu
NV0pLnNjYWxlKDEwNzApfSxaby5nZW8uYWxiZXJzVXNhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihu
KXt2YXIgaT1uWzBdLG89blsxXTtyZXR1cm4gdD1udWxsLGUoaSxvKSx0fHwocihpLG8pLHQpfHx1
KGksbyksdH12YXIgdCxlLHIsdSxpPVpvLmdlby5hbGJlcnMoKSxvPVpvLmdlby5jb25pY0VxdWFs
QXJlYSgpLnJvdGF0ZShbMTU0LDBdKS5jZW50ZXIoWy0yLDU4LjVdKS5wYXJhbGxlbHMoWzU1LDY1
XSksYT1aby5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzE1NywwXSkuY2VudGVyKFstMywx
OS45XSkucGFyYWxsZWxzKFs4LDE4XSksYz17cG9pbnQ6ZnVuY3Rpb24obixlKXt0PVtuLGVdfX07
cmV0dXJuIG4uaW52ZXJ0PWZ1bmN0aW9uKG4pe3ZhciB0PWkuc2NhbGUoKSxlPWkudHJhbnNsYXRl
KCkscj0oblswXS1lWzBdKS90LHU9KG5bMV0tZVsxXSkvdDtyZXR1cm4odT49LjEyJiYuMjM0PnUm
JnI+PS0uNDI1JiYtLjIxND5yP286dT49LjE2NiYmLjIzND51JiZyPj0tLjIxNCYmLS4xMTU+cj9h
OmkpLmludmVydChuKX0sbi5zdHJlYW09ZnVuY3Rpb24obil7dmFyIHQ9aS5zdHJlYW0obiksZT1v
LnN0cmVhbShuKSxyPWEuc3RyZWFtKG4pO3JldHVybntwb2ludDpmdW5jdGlvbihuLHUpe3QucG9p
bnQobix1KSxlLnBvaW50KG4sdSksci5wb2ludChuLHUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0LnNw
aGVyZSgpLGUuc3BoZXJlKCksci5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5saW5l
U3RhcnQoKSxlLmxpbmVTdGFydCgpLHIubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0
LmxpbmVFbmQoKSxlLmxpbmVFbmQoKSxyLmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9u
KCl7dC5wb2x5Z29uU3RhcnQoKSxlLnBvbHlnb25TdGFydCgpLHIucG9seWdvblN0YXJ0KCl9LHBv
bHlnb25FbmQ6ZnVuY3Rpb24oKXt0LnBvbHlnb25FbmQoKSxlLnBvbHlnb25FbmQoKSxyLnBvbHln
b25FbmQoKX19fSxuLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oaS5wcmVjaXNpb24odCksby5wcmVjaXNpb24odCksYS5wcmVjaXNpb24odCksbik6aS5wcmVj
aXNpb24oKX0sbi5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaS5z
Y2FsZSh0KSxvLnNjYWxlKC4zNSp0KSxhLnNjYWxlKHQpLG4udHJhbnNsYXRlKGkudHJhbnNsYXRl
KCkpKTppLnNjYWxlKCl9LG4udHJhbnNsYXRlPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVu
Z3RoKXJldHVybiBpLnRyYW5zbGF0ZSgpO3ZhciBzPWkuc2NhbGUoKSxsPSt0WzBdLGY9K3RbMV07
cmV0dXJuIGU9aS50cmFuc2xhdGUodCkuY2xpcEV4dGVudChbW2wtLjQ1NSpzLGYtLjIzOCpzXSxb
bCsuNDU1KnMsZisuMjM4KnNdXSkuc3RyZWFtKGMpLnBvaW50LHI9by50cmFuc2xhdGUoW2wtLjMw
NypzLGYrLjIwMSpzXSkuY2xpcEV4dGVudChbW2wtLjQyNSpzK2thLGYrLjEyKnMra2FdLFtsLS4y
MTQqcy1rYSxmKy4yMzQqcy1rYV1dKS5zdHJlYW0oYykucG9pbnQsdT1hLnRyYW5zbGF0ZShbbC0u
MjA1KnMsZisuMjEyKnNdKS5jbGlwRXh0ZW50KFtbbC0uMjE0KnMra2EsZisuMTY2KnMra2FdLFts
LS4xMTUqcy1rYSxmKy4yMzQqcy1rYV1dKS5zdHJlYW0oYykucG9pbnQsbn0sbi5zY2FsZSgxMDcw
KX07dmFyIEVjLEFjLENjLE5jLHpjLExjLFRjPXtwb2ludDp2LGxpbmVTdGFydDp2LGxpbmVFbmQ6
dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtBYz0wLFRjLmxpbmVTdGFydD1PZX0scG9seWdvbkVu
ZDpmdW5jdGlvbigpe1RjLmxpbmVTdGFydD1UYy5saW5lRW5kPVRjLnBvaW50PXYsRWMrPXVhKEFj
LzIpfX0scWM9e3BvaW50OlllLGxpbmVTdGFydDp2LGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6dixw
b2x5Z29uRW5kOnZ9LFJjPXtwb2ludDpWZSxsaW5lU3RhcnQ6WGUsbGluZUVuZDokZSxwb2x5Z29u
U3RhcnQ6ZnVuY3Rpb24oKXtSYy5saW5lU3RhcnQ9QmV9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtS
Yy5wb2ludD1WZSxSYy5saW5lU3RhcnQ9WGUsUmMubGluZUVuZD0kZX19O1pvLmdlby5wYXRoPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gbiYmKCJmdW5jdGlvbiI9PXR5cGVvZiBhJiZp
LnBvaW50UmFkaXVzKCthLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksbyYmby52YWxpZHx8KG89dShp
KSksWm8uZ2VvLnN0cmVhbShuLG8pKSxpLnJlc3VsdCgpfWZ1bmN0aW9uIHQoKXtyZXR1cm4gbz1u
dWxsLG59dmFyIGUscix1LGksbyxhPTQuNTtyZXR1cm4gbi5hcmVhPWZ1bmN0aW9uKG4pe3JldHVy
biBFYz0wLFpvLmdlby5zdHJlYW0obix1KFRjKSksRWN9LG4uY2VudHJvaWQ9ZnVuY3Rpb24obil7
cmV0dXJuIHBjPXZjPWRjPW1jPXljPXhjPU1jPV9jPWJjPTAsWm8uZ2VvLnN0cmVhbShuLHUoUmMp
KSxiYz9bTWMvYmMsX2MvYmNdOnhjP1ttYy94Yyx5Yy94Y106ZGM/W3BjL2RjLHZjL2RjXTpbMC8w
LDAvMF19LG4uYm91bmRzPWZ1bmN0aW9uKG4pe3JldHVybiB6Yz1MYz0tKENjPU5jPTEvMCksWm8u
Z2VvLnN0cmVhbShuLHUocWMpKSxbW0NjLE5jXSxbemMsTGNdXX0sbi5wcm9qZWN0aW9uPWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PShlPW4pP24uc3RyZWFtfHxHZShuKTp3
dCx0KCkpOmV9LG4uY29udGV4dD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
aT1udWxsPT0ocj1uKT9uZXcgSWU6bmV3IFdlKG4pLCJmdW5jdGlvbiIhPXR5cGVvZiBhJiZpLnBv
aW50UmFkaXVzKGEpLHQoKSk6cn0sbi5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OihpLnBvaW50UmFkaXVzKCt0
KSwrdCksbik6YX0sbi5wcm9qZWN0aW9uKFpvLmdlby5hbGJlcnNVc2EoKSkuY29udGV4dChudWxs
KX0sWm8uZ2VvLnRyYW5zZm9ybT1mdW5jdGlvbihuKXtyZXR1cm57c3RyZWFtOmZ1bmN0aW9uKHQp
e3ZhciBlPW5ldyBLZSh0KTtmb3IodmFyIHIgaW4gbillW3JdPW5bcl07cmV0dXJuIGV9fX0sS2Uu
cHJvdG90eXBlPXtwb2ludDpmdW5jdGlvbihuLHQpe3RoaXMuc3RyZWFtLnBvaW50KG4sdCl9LHNw
aGVyZTpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24o
KXt0aGlzLnN0cmVhbS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFt
LmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvblN0
YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29uRW5kKCl9fSxa
by5nZW8ucHJvamVjdGlvbj1ucixaby5nZW8ucHJvamVjdGlvbk11dGF0b3I9dHIsKFpvLmdlby5l
cXVpcmVjdGFuZ3VsYXI9ZnVuY3Rpb24oKXtyZXR1cm4gbnIocnIpfSkucmF3PXJyLmludmVydD1y
cixaby5nZW8ucm90YXRpb249ZnVuY3Rpb24obil7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gdD1uKHRb
MF0qQWEsdFsxXSpBYSksdFswXSo9Q2EsdFsxXSo9Q2EsdH1yZXR1cm4gbj1pcihuWzBdJTM2MCpB
YSxuWzFdKkFhLG4ubGVuZ3RoPjI/blsyXSpBYTowKSx0LmludmVydD1mdW5jdGlvbih0KXtyZXR1
cm4gdD1uLmludmVydCh0WzBdKkFhLHRbMV0qQWEpLHRbMF0qPUNhLHRbMV0qPUNhLHR9LHR9LHVy
LmludmVydD1ycixaby5nZW8uY2lyY2xlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3ZhciBuPSJm
dW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkodGhpcyxhcmd1bWVudHMpOnIsdD1pcigtblswXSpB
YSwtblsxXSpBYSwwKS5pbnZlcnQsdT1bXTtyZXR1cm4gZShudWxsLG51bGwsMSx7cG9pbnQ6ZnVu
Y3Rpb24obixlKXt1LnB1c2gobj10KG4sZSkpLG5bMF0qPUNhLG5bMV0qPUNhfX0pLHt0eXBlOiJQ
b2x5Z29uIixjb29yZGluYXRlczpbdV19fXZhciB0LGUscj1bMCwwXSx1PTY7cmV0dXJuIG4ub3Jp
Z2luPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbik6cn0sbi5hbmds
ZT1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1zcigodD0rcikqQWEsdSpB
YSksbik6dH0sbi5wcmVjaXNpb249ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGU9c3IodCpBYSwodT0rcikqQWEpLG4pOnV9LG4uYW5nbGUoOTApfSxaby5nZW8uZGlzdGFuY2U9
ZnVuY3Rpb24obix0KXt2YXIgZSxyPSh0WzBdLW5bMF0pKkFhLHU9blsxXSpBYSxpPXRbMV0qQWEs
bz1NYXRoLnNpbihyKSxhPU1hdGguY29zKHIpLGM9TWF0aC5zaW4odSkscz1NYXRoLmNvcyh1KSxs
PU1hdGguc2luKGkpLGY9TWF0aC5jb3MoaSk7cmV0dXJuIE1hdGguYXRhbjIoTWF0aC5zcXJ0KChl
PWYqbykqZSsoZT1zKmwtYypmKmEpKmUpLGMqbCtzKmYqYSl9LFpvLmdlby5ncmF0aWN1bGU9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiBuKCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRp
bmF0ZXM6dCgpfX1mdW5jdGlvbiB0KCl7cmV0dXJuIFpvLnJhbmdlKE1hdGguY2VpbChpL2QpKmQs
dSxkKS5tYXAoaCkuY29uY2F0KFpvLnJhbmdlKE1hdGguY2VpbChzL20pKm0sYyxtKS5tYXAoZykp
LmNvbmNhdChaby5yYW5nZShNYXRoLmNlaWwoci9wKSpwLGUscCkuZmlsdGVyKGZ1bmN0aW9uKG4p
e3JldHVybiB1YShuJWQpPmthfSkubWFwKGwpKS5jb25jYXQoWm8ucmFuZ2UoTWF0aC5jZWlsKGEv
dikqdixvLHYpLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gdWEobiVtKT5rYX0pLm1hcChmKSl9
dmFyIGUscix1LGksbyxhLGMscyxsLGYsaCxnLHA9MTAsdj1wLGQ9OTAsbT0zNjAseT0yLjU7cmV0
dXJuIG4ubGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm57
dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6bn19KX0sbi5vdXRsaW5lPWZ1bmN0aW9uKCl7
cmV0dXJue3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOltoKGkpLmNvbmNhdChnKGMpLnNsaWNl
KDEpLGgodSkucmV2ZXJzZSgpLnNsaWNlKDEpLGcocykucmV2ZXJzZSgpLnNsaWNlKDEpKV19fSxu
LmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uLm1ham9yRXh0ZW50
KHQpLm1pbm9yRXh0ZW50KHQpOm4ubWlub3JFeHRlbnQoKX0sbi5tYWpvckV4dGVudD1mdW5jdGlv
bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdFswXVswXSx1PSt0WzFdWzBdLHM9K3Rb
MF1bMV0sYz0rdFsxXVsxXSxpPnUmJih0PWksaT11LHU9dCkscz5jJiYodD1zLHM9YyxjPXQpLG4u
cHJlY2lzaW9uKHkpKTpbW2ksc10sW3UsY11dfSxuLm1pbm9yRXh0ZW50PWZ1bmN0aW9uKHQpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0WzBdWzBdLGU9K3RbMV1bMF0sYT0rdFswXVsxXSxv
PSt0WzFdWzFdLHI+ZSYmKHQ9cixyPWUsZT10KSxhPm8mJih0PWEsYT1vLG89dCksbi5wcmVjaXNp
b24oeSkpOltbcixhXSxbZSxvXV19LG4uc3RlcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD9uLm1ham9yU3RlcCh0KS5taW5vclN0ZXAodCk6bi5taW5vclN0ZXAoKX0sbi5tYWpv
clN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3RbMF0sbT0rdFsx
XSxuKTpbZCxtXX0sbi5taW5vclN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHA9K3RbMF0sdj0rdFsxXSxuKTpbcCx2XX0sbi5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9K3QsbD1mcihhLG8sOTApLGY9aHIocixlLHkpLGg9ZnIo
cyxjLDkwKSxnPWhyKGksdSx5KSxuKTp5fSxuLm1ham9yRXh0ZW50KFtbLTE4MCwtOTAra2FdLFsx
ODAsOTAta2FdXSkubWlub3JFeHRlbnQoW1stMTgwLC04MC1rYV0sWzE4MCw4MCtrYV1dKX0sWm8u
Z2VvLmdyZWF0QXJjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3JldHVybnt0eXBlOiJMaW5lU3Ry
aW5nIixjb29yZGluYXRlczpbdHx8ci5hcHBseSh0aGlzLGFyZ3VtZW50cyksZXx8dS5hcHBseSh0
aGlzLGFyZ3VtZW50cyldfX12YXIgdCxlLHI9Z3IsdT1wcjtyZXR1cm4gbi5kaXN0YW5jZT1mdW5j
dGlvbigpe3JldHVybiBaby5nZW8uZGlzdGFuY2UodHx8ci5hcHBseSh0aGlzLGFyZ3VtZW50cyks
ZXx8dS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxuLnNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8ocj1lLHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/bnVsbDplLG4pOnJ9
LG4udGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsZT0iZnVu
Y3Rpb24iPT10eXBlb2YgdD9udWxsOnQsbik6dX0sbi5wcmVjaXNpb249ZnVuY3Rpb24oKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD9uOjB9LG59LFpvLmdlby5pbnRlcnBvbGF0ZT1mdW5jdGlvbihu
LHQpe3JldHVybiB2cihuWzBdKkFhLG5bMV0qQWEsdFswXSpBYSx0WzFdKkFhKX0sWm8uZ2VvLmxl
bmd0aD1mdW5jdGlvbihuKXtyZXR1cm4gRGM9MCxaby5nZW8uc3RyZWFtKG4sUGMpLERjfTt2YXIg
RGMsUGM9e3NwaGVyZTp2LHBvaW50OnYsbGluZVN0YXJ0OmRyLGxpbmVFbmQ6dixwb2x5Z29uU3Rh
cnQ6dixwb2x5Z29uRW5kOnZ9LFVjPW1yKGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnNxcnQoMi8o
MStuKSl9LGZ1bmN0aW9uKG4pe3JldHVybiAyKk1hdGguYXNpbihuLzIpfSk7KFpvLmdlby5hemlt
dXRoYWxFcXVhbEFyZWE9ZnVuY3Rpb24oKXtyZXR1cm4gbnIoVWMpfSkucmF3PVVjO3ZhciBqYz1t
cihmdW5jdGlvbihuKXt2YXIgdD1NYXRoLmFjb3Mobik7cmV0dXJuIHQmJnQvTWF0aC5zaW4odCl9
LHd0KTsoWm8uZ2VvLmF6aW11dGhhbEVxdWlkaXN0YW50PWZ1bmN0aW9uKCl7cmV0dXJuIG5yKGpj
KX0pLnJhdz1qYywoWm8uZ2VvLmNvbmljQ29uZm9ybWFsPWZ1bmN0aW9uKCl7cmV0dXJuIEhlKHly
KX0pLnJhdz15ciwoWm8uZ2VvLmNvbmljRXF1aWRpc3RhbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gSGUo
eHIpfSkucmF3PXhyO3ZhciBIYz1tcihmdW5jdGlvbihuKXtyZXR1cm4gMS9ufSxNYXRoLmF0YW4p
Oyhaby5nZW8uZ25vbW9uaWM9ZnVuY3Rpb24oKXtyZXR1cm4gbnIoSGMpfSkucmF3PUhjLE1yLmlu
dmVydD1mdW5jdGlvbihuLHQpe3JldHVybltuLDIqTWF0aC5hdGFuKE1hdGguZXhwKHQpKS1TYV19
LChaby5nZW8ubWVyY2F0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gX3IoTXIpfSkucmF3PU1yO3ZhciBG
Yz1tcihmdW5jdGlvbigpe3JldHVybiAxfSxNYXRoLmFzaW4pOyhaby5nZW8ub3J0aG9ncmFwaGlj
PWZ1bmN0aW9uKCl7cmV0dXJuIG5yKEZjKX0pLnJhdz1GYzt2YXIgT2M9bXIoZnVuY3Rpb24obil7
cmV0dXJuIDEvKDErbil9LGZ1bmN0aW9uKG4pe3JldHVybiAyKk1hdGguYXRhbihuKX0pOyhaby5n
ZW8uc3RlcmVvZ3JhcGhpYz1mdW5jdGlvbigpe3JldHVybiBucihPYyl9KS5yYXc9T2MsYnIuaW52
ZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuWy10LDIqTWF0aC5hdGFuKE1hdGguZXhwKG4pKS1TYV19
LChaby5nZW8udHJhbnN2ZXJzZU1lcmNhdG9yPWZ1bmN0aW9uKCl7dmFyIG49X3IoYnIpLHQ9bi5j
ZW50ZXIsZT1uLnJvdGF0ZTtyZXR1cm4gbi5jZW50ZXI9ZnVuY3Rpb24obil7cmV0dXJuIG4/dChb
LW5bMV0sblswXV0pOihuPXQoKSxbblsxXSwtblswXV0pfSxuLnJvdGF0ZT1mdW5jdGlvbihuKXty
ZXR1cm4gbj9lKFtuWzBdLG5bMV0sbi5sZW5ndGg+Mj9uWzJdKzkwOjkwXSk6KG49ZSgpLFtuWzBd
LG5bMV0sblsyXS05MF0pfSxlKFswLDAsOTBdKX0pLnJhdz1icixaby5nZW9tPXt9LFpvLmdlb20u
aHVsbD1mdW5jdGlvbihuKXtmdW5jdGlvbiB0KG4pe2lmKG4ubGVuZ3RoPDMpcmV0dXJuW107dmFy
IHQsdT1idChlKSxpPWJ0KHIpLG89bi5sZW5ndGgsYT1bXSxjPVtdO2Zvcih0PTA7bz50O3QrKylh
LnB1c2goWyt1LmNhbGwodGhpcyxuW3RdLHQpLCtpLmNhbGwodGhpcyxuW3RdLHQpLHRdKTtmb3Io
YS5zb3J0KEVyKSx0PTA7bz50O3QrKyljLnB1c2goW2FbdF1bMF0sLWFbdF1bMV1dKTt2YXIgcz1r
cihhKSxsPWtyKGMpLGY9bFswXT09PXNbMF0saD1sW2wubGVuZ3RoLTFdPT09c1tzLmxlbmd0aC0x
XSxnPVtdO2Zvcih0PXMubGVuZ3RoLTE7dD49MDstLXQpZy5wdXNoKG5bYVtzW3RdXVsyXV0pO2Zv
cih0PStmO3Q8bC5sZW5ndGgtaDsrK3QpZy5wdXNoKG5bYVtsW3RdXVsyXV0pO3JldHVybiBnfXZh
ciBlPXdyLHI9U3I7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dChuKToodC54PWZ1bmN0aW9uKG4p
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdCk6ZX0sdC55PWZ1bmN0aW9uKG4pe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdCk6cn0sdCl9LFpvLmdlb20ucG9seWdvbj1mdW5jdGlv
bihuKXtyZXR1cm4gc2EobixZYyksbn07dmFyIFljPVpvLmdlb20ucG9seWdvbi5wcm90b3R5cGU9
W107WWMuYXJlYT1mdW5jdGlvbigpe2Zvcih2YXIgbix0PS0xLGU9dGhpcy5sZW5ndGgscj10aGlz
W2UtMV0sdT0wOysrdDxlOyluPXIscj10aGlzW3RdLHUrPW5bMV0qclswXS1uWzBdKnJbMV07cmV0
dXJuLjUqdX0sWWMuY2VudHJvaWQ9ZnVuY3Rpb24obil7dmFyIHQsZSxyPS0xLHU9dGhpcy5sZW5n
dGgsaT0wLG89MCxhPXRoaXNbdS0xXTtmb3IoYXJndW1lbnRzLmxlbmd0aHx8KG49LTEvKDYqdGhp
cy5hcmVhKCkpKTsrK3I8dTspdD1hLGE9dGhpc1tyXSxlPXRbMF0qYVsxXS1hWzBdKnRbMV0saSs9
KHRbMF0rYVswXSkqZSxvKz0odFsxXSthWzFdKSplO3JldHVybltpKm4sbypuXX0sWWMuY2xpcD1m
dW5jdGlvbihuKXtmb3IodmFyIHQsZSxyLHUsaSxvLGE9TnIobiksYz0tMSxzPXRoaXMubGVuZ3Ro
LU5yKHRoaXMpLGw9dGhpc1tzLTFdOysrYzxzOyl7Zm9yKHQ9bi5zbGljZSgpLG4ubGVuZ3RoPTAs
dT10aGlzW2NdLGk9dFsocj10Lmxlbmd0aC1hKS0xXSxlPS0xOysrZTxyOylvPXRbZV0sQXIobyxs
LHUpPyhBcihpLGwsdSl8fG4ucHVzaChDcihpLG8sbCx1KSksbi5wdXNoKG8pKTpBcihpLGwsdSkm
Jm4ucHVzaChDcihpLG8sbCx1KSksaT1vO2EmJm4ucHVzaChuWzBdKSxsPXV9cmV0dXJuIG59O3Zh
ciBJYyxaYyxWYyxYYywkYyxCYz1bXSxXYz1bXTtVci5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlv
bigpe2Zvcih2YXIgbix0PXRoaXMuZWRnZXMsZT10Lmxlbmd0aDtlLS07KW49dFtlXS5lZGdlLG4u
YiYmbi5hfHx0LnNwbGljZShlLDEpO3JldHVybiB0LnNvcnQoSHIpLHQubGVuZ3RofSxXci5wcm90
b3R5cGU9e3N0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZS5sPT09dGhpcy5zaXRlP3Ro
aXMuZWRnZS5hOnRoaXMuZWRnZS5ifSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlLmw9
PT10aGlzLnNpdGU/dGhpcy5lZGdlLmI6dGhpcy5lZGdlLmF9fSxKci5wcm90b3R5cGU9e2luc2Vy
dDpmdW5jdGlvbihuLHQpe3ZhciBlLHIsdTtpZihuKXtpZih0LlA9bix0Lk49bi5OLG4uTiYmKG4u
Ti5QPXQpLG4uTj10LG4uUil7Zm9yKG49bi5SO24uTDspbj1uLkw7bi5MPXR9ZWxzZSBuLlI9dDtl
PW59ZWxzZSB0aGlzLl8/KG49bnUodGhpcy5fKSx0LlA9bnVsbCx0Lk49bixuLlA9bi5MPXQsZT1u
KToodC5QPXQuTj1udWxsLHRoaXMuXz10LGU9bnVsbCk7Zm9yKHQuTD10LlI9bnVsbCx0LlU9ZSx0
LkM9ITAsbj10O2UmJmUuQzspcj1lLlUsZT09PXIuTD8odT1yLlIsdSYmdS5DPyhlLkM9dS5DPSEx
LHIuQz0hMCxuPXIpOihuPT09ZS5SJiYoS3IodGhpcyxlKSxuPWUsZT1uLlUpLGUuQz0hMSxyLkM9
ITAsUXIodGhpcyxyKSkpOih1PXIuTCx1JiZ1LkM/KGUuQz11LkM9ITEsci5DPSEwLG49cik6KG49
PT1lLkwmJihRcih0aGlzLGUpLG49ZSxlPW4uVSksZS5DPSExLHIuQz0hMCxLcih0aGlzLHIpKSks
ZT1uLlU7dGhpcy5fLkM9ITF9LHJlbW92ZTpmdW5jdGlvbihuKXtuLk4mJihuLk4uUD1uLlApLG4u
UCYmKG4uUC5OPW4uTiksbi5OPW4uUD1udWxsO3ZhciB0LGUscix1PW4uVSxpPW4uTCxvPW4uUjtp
ZihlPWk/bz9udShvKTppOm8sdT91Lkw9PT1uP3UuTD1lOnUuUj1lOnRoaXMuXz1lLGkmJm8/KHI9
ZS5DLGUuQz1uLkMsZS5MPWksaS5VPWUsZSE9PW8/KHU9ZS5VLGUuVT1uLlUsbj1lLlIsdS5MPW4s
ZS5SPW8sby5VPWUpOihlLlU9dSx1PWUsbj1lLlIpKToocj1uLkMsbj1lKSxuJiYobi5VPXUpLCFy
KXtpZihuJiZuLkMpcmV0dXJuIG4uQz0hMSx2b2lkIDA7ZG97aWYobj09PXRoaXMuXylicmVhaztp
ZihuPT09dS5MKXtpZih0PXUuUix0LkMmJih0LkM9ITEsdS5DPSEwLEtyKHRoaXMsdSksdD11LlIp
LHQuTCYmdC5MLkN8fHQuUiYmdC5SLkMpe3QuUiYmdC5SLkN8fCh0LkwuQz0hMSx0LkM9ITAsUXIo
dGhpcyx0KSx0PXUuUiksdC5DPXUuQyx1LkM9dC5SLkM9ITEsS3IodGhpcyx1KSxuPXRoaXMuXzti
cmVha319ZWxzZSBpZih0PXUuTCx0LkMmJih0LkM9ITEsdS5DPSEwLFFyKHRoaXMsdSksdD11Lkwp
LHQuTCYmdC5MLkN8fHQuUiYmdC5SLkMpe3QuTCYmdC5MLkN8fCh0LlIuQz0hMSx0LkM9ITAsS3Io
dGhpcyx0KSx0PXUuTCksdC5DPXUuQyx1LkM9dC5MLkM9ITEsUXIodGhpcyx1KSxuPXRoaXMuXzti
cmVha310LkM9ITAsbj11LHU9dS5VfXdoaWxlKCFuLkMpO24mJihuLkM9ITEpfX19LFpvLmdlb20u
dm9yb25vaT1mdW5jdGlvbihuKXtmdW5jdGlvbiB0KG4pe3ZhciB0PW5ldyBBcnJheShuLmxlbmd0
aCkscj1hWzBdWzBdLHU9YVswXVsxXSxpPWFbMV1bMF0sbz1hWzFdWzFdO3JldHVybiB0dShlKG4p
LGEpLmNlbGxzLmZvckVhY2goZnVuY3Rpb24oZSxhKXt2YXIgYz1lLmVkZ2VzLHM9ZS5zaXRlLGw9
dFthXT1jLmxlbmd0aD9jLm1hcChmdW5jdGlvbihuKXt2YXIgdD1uLnN0YXJ0KCk7cmV0dXJuW3Qu
eCx0LnldfSk6cy54Pj1yJiZzLng8PWkmJnMueT49dSYmcy55PD1vP1tbcixvXSxbaSxvXSxbaSx1
XSxbcix1XV06W107bC5wb2ludD1uW2FdfSksdH1mdW5jdGlvbiBlKG4pe3JldHVybiBuLm1hcChm
dW5jdGlvbihuLHQpe3JldHVybnt4Ok1hdGgucm91bmQoaShuLHQpL2thKSprYSx5Ok1hdGgucm91
bmQobyhuLHQpL2thKSprYSxpOnR9fSl9dmFyIHI9d3IsdT1TcixpPXIsbz11LGE9SmM7cmV0dXJu
IG4/dChuKToodC5saW5rcz1mdW5jdGlvbihuKXtyZXR1cm4gdHUoZShuKSkuZWRnZXMuZmlsdGVy
KGZ1bmN0aW9uKG4pe3JldHVybiBuLmwmJm4ucn0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm57c291
cmNlOm5bdC5sLmldLHRhcmdldDpuW3Quci5pXX19KX0sdC50cmlhbmdsZXM9ZnVuY3Rpb24obil7
dmFyIHQ9W107cmV0dXJuIHR1KGUobikpLmNlbGxzLmZvckVhY2goZnVuY3Rpb24oZSxyKXtmb3Io
dmFyIHUsaSxvPWUuc2l0ZSxhPWUuZWRnZXMuc29ydChIciksYz0tMSxzPWEubGVuZ3RoLGw9YVtz
LTFdLmVkZ2UsZj1sLmw9PT1vP2wucjpsLmw7KytjPHM7KXU9bCxpPWYsbD1hW2NdLmVkZ2UsZj1s
Lmw9PT1vP2wucjpsLmwscjxpLmkmJnI8Zi5pJiZydShvLGksZik8MCYmdC5wdXNoKFtuW3JdLG5b
aS5pXSxuW2YuaV1dKX0pLHR9LHQueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oaT1idChyPW4pLHQpOnJ9LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8obz1idCh1PW4pLHQpOnV9LHQuY2xpcEV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYT1udWxsPT1uP0pjOm4sdCk6YT09PUpjP251bGw6YX0sdC5zaXplPWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QuY2xpcEV4dGVudChuJiZbWzAsMF0sbl0p
OmE9PT1KYz9udWxsOmEmJmFbMV19LHQpfTt2YXIgSmM9W1stMWU2LC0xZTZdLFsxZTYsMWU2XV07
Wm8uZ2VvbS5kZWxhdW5heT1mdW5jdGlvbihuKXtyZXR1cm4gWm8uZ2VvbS52b3Jvbm9pKCkudHJp
YW5nbGVzKG4pfSxaby5nZW9tLnF1YWR0cmVlPWZ1bmN0aW9uKG4sdCxlLHIsdSl7ZnVuY3Rpb24g
aShuKXtmdW5jdGlvbiBpKG4sdCxlLHIsdSxpLG8sYSl7aWYoIWlzTmFOKGUpJiYhaXNOYU4ocikp
aWYobi5sZWFmKXt2YXIgYz1uLngsbD1uLnk7aWYobnVsbCE9YylpZih1YShjLWUpK3VhKGwtcik8
LjAxKXMobix0LGUscix1LGksbyxhKTtlbHNle3ZhciBmPW4ucG9pbnQ7bi54PW4ueT1uLnBvaW50
PW51bGwscyhuLGYsYyxsLHUsaSxvLGEpLHMobix0LGUscix1LGksbyxhKX1lbHNlIG4ueD1lLG4u
eT1yLG4ucG9pbnQ9dH1lbHNlIHMobix0LGUscix1LGksbyxhKX1mdW5jdGlvbiBzKG4sdCxlLHIs
dSxvLGEsYyl7dmFyIHM9LjUqKHUrYSksbD0uNSoobytjKSxmPWU+PXMsaD1yPj1sLGc9KGg8PDEp
K2Y7bi5sZWFmPSExLG49bi5ub2Rlc1tnXXx8KG4ubm9kZXNbZ109b3UoKSksZj91PXM6YT1zLGg/
bz1sOmM9bCxpKG4sdCxlLHIsdSxvLGEsYyl9dmFyIGwsZixoLGcscCx2LGQsbSx5LHg9YnQoYSks
TT1idChjKTtpZihudWxsIT10KXY9dCxkPWUsbT1yLHk9dTtlbHNlIGlmKG09eT0tKHY9ZD0xLzAp
LGY9W10saD1bXSxwPW4ubGVuZ3RoLG8pZm9yKGc9MDtwPmc7KytnKWw9bltnXSxsLng8diYmKHY9
bC54KSxsLnk8ZCYmKGQ9bC55KSxsLng+bSYmKG09bC54KSxsLnk+eSYmKHk9bC55KSxmLnB1c2go
bC54KSxoLnB1c2gobC55KTtlbHNlIGZvcihnPTA7cD5nOysrZyl7dmFyIF89K3gobD1uW2ddLGcp
LGI9K00obCxnKTt2Pl8mJih2PV8pLGQ+YiYmKGQ9YiksXz5tJiYobT1fKSxiPnkmJih5PWIpLGYu
cHVzaChfKSxoLnB1c2goYil9dmFyIHc9bS12LFM9eS1kO3c+Uz95PWQrdzptPXYrUzt2YXIgaz1v
dSgpO2lmKGsuYWRkPWZ1bmN0aW9uKG4pe2koayxuLCt4KG4sKytnKSwrTShuLGcpLHYsZCxtLHkp
fSxrLnZpc2l0PWZ1bmN0aW9uKG4pe2F1KG4sayx2LGQsbSx5KX0sZz0tMSxudWxsPT10KXtmb3Io
OysrZzxwOylpKGssbltnXSxmW2ddLGhbZ10sdixkLG0seSk7LS1nfWVsc2Ugbi5mb3JFYWNoKGsu
YWRkKTtyZXR1cm4gZj1oPW49bD1udWxsLGt9dmFyIG8sYT13cixjPVNyO3JldHVybihvPWFyZ3Vt
ZW50cy5sZW5ndGgpPyhhPXV1LGM9aXUsMz09PW8mJih1PWUscj10LGU9dD0wKSxpKG4pKTooaS54
PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPW4saSk6YX0saS55PWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPW4saSk6Y30saS5leHRlbnQ9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PW4/dD1lPXI9dT1udWxsOih0PStu
WzBdWzBdLGU9K25bMF1bMV0scj0rblsxXVswXSx1PStuWzFdWzFdKSxpKTpudWxsPT10P251bGw6
W1t0LGVdLFtyLHVdXX0saS5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhudWxsPT1uP3Q9ZT1yPXU9bnVsbDoodD1lPTAscj0rblswXSx1PStuWzFdKSxpKTpudWxsPT10
P251bGw6W3ItdCx1LWVdfSxpKX0sWm8uaW50ZXJwb2xhdGVSZ2I9Y3UsWm8uaW50ZXJwb2xhdGVP
YmplY3Q9c3UsWm8uaW50ZXJwb2xhdGVOdW1iZXI9bHUsWm8uaW50ZXJwb2xhdGVTdHJpbmc9ZnU7
dmFyIEdjPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxLYz1u
ZXcgUmVnRXhwKEdjLnNvdXJjZSwiZyIpO1pvLmludGVycG9sYXRlPWh1LFpvLmludGVycG9sYXRv
cnM9W2Z1bmN0aW9uKG4sdCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuKCJzdHJpbmciPT09ZT9JYS5o
YXModCl8fC9eKCN8cmdiXCh8aHNsXCgpLy50ZXN0KHQpP2N1OmZ1OnQgaW5zdGFuY2VvZiBldD9j
dTpBcnJheS5pc0FycmF5KHQpP2d1OiJvYmplY3QiPT09ZSYmaXNOYU4odCk/c3U6bHUpKG4sdCl9
XSxaby5pbnRlcnBvbGF0ZUFycmF5PWd1O3ZhciBRYz1mdW5jdGlvbigpe3JldHVybiB3dH0sbnM9
Wm8ubWFwKHtsaW5lYXI6UWMscG9seTpNdSxxdWFkOmZ1bmN0aW9uKCl7cmV0dXJuIG11fSxjdWJp
YzpmdW5jdGlvbigpe3JldHVybiB5dX0sc2luOmZ1bmN0aW9uKCl7cmV0dXJuIF91fSxleHA6ZnVu
Y3Rpb24oKXtyZXR1cm4gYnV9LGNpcmNsZTpmdW5jdGlvbigpe3JldHVybiB3dX0sZWxhc3RpYzpT
dSxiYWNrOmt1LGJvdW5jZTpmdW5jdGlvbigpe3JldHVybiBFdX19KSx0cz1aby5tYXAoeyJpbiI6
d3Qsb3V0OnZ1LCJpbi1vdXQiOmR1LCJvdXQtaW4iOmZ1bmN0aW9uKG4pe3JldHVybiBkdSh2dShu
KSl9fSk7Wm8uZWFzZT1mdW5jdGlvbihuKXt2YXIgdD1uLmluZGV4T2YoIi0iKSxlPXQ+PTA/bi5z
dWJzdHJpbmcoMCx0KTpuLHI9dD49MD9uLnN1YnN0cmluZyh0KzEpOiJpbiI7cmV0dXJuIGU9bnMu
Z2V0KGUpfHxRYyxyPXRzLmdldChyKXx8d3QscHUocihlLmFwcGx5KG51bGwsVm8uY2FsbChhcmd1
bWVudHMsMSkpKSl9LFpvLmludGVycG9sYXRlSGNsPUF1LFpvLmludGVycG9sYXRlSHNsPUN1LFpv
LmludGVycG9sYXRlTGFiPU51LFpvLmludGVycG9sYXRlUm91bmQ9enUsWm8udHJhbnNmb3JtPWZ1
bmN0aW9uKG4pe3ZhciB0PSRvLmNyZWF0ZUVsZW1lbnROUyhaby5ucy5wcmVmaXguc3ZnLCJnIik7
cmV0dXJuKFpvLnRyYW5zZm9ybT1mdW5jdGlvbihuKXtpZihudWxsIT1uKXt0LnNldEF0dHJpYnV0
ZSgidHJhbnNmb3JtIixuKTt2YXIgZT10LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCl9
cmV0dXJuIG5ldyBMdShlP2UubWF0cml4OmVzKX0pKG4pfSxMdS5wcm90b3R5cGUudG9TdHJpbmc9
ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy50cmFuc2xhdGUrIilyb3RhdGUoIit0
aGlzLnJvdGF0ZSsiKXNrZXdYKCIrdGhpcy5za2V3KyIpc2NhbGUoIit0aGlzLnNjYWxlKyIpIn07
dmFyIGVzPXthOjEsYjowLGM6MCxkOjEsZTowLGY6MH07Wm8uaW50ZXJwb2xhdGVUcmFuc2Zvcm09
RHUsWm8ubGF5b3V0PXt9LFpvLmxheW91dC5idW5kbGU9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rp
b24obil7Zm9yKHZhciB0PVtdLGU9LTEscj1uLmxlbmd0aDsrK2U8cjspdC5wdXNoKGp1KG5bZV0p
KTtyZXR1cm4gdH19LFpvLmxheW91dC5jaG9yZD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt2YXIg
bixzLGYsaCxnLHA9e30sdj1bXSxkPVpvLnJhbmdlKGkpLG09W107Zm9yKGU9W10scj1bXSxuPTAs
aD0tMTsrK2g8aTspe2ZvcihzPTAsZz0tMTsrK2c8aTspcys9dVtoXVtnXTt2LnB1c2gocyksbS5w
dXNoKFpvLnJhbmdlKGkpKSxuKz1zfWZvcihvJiZkLnNvcnQoZnVuY3Rpb24obix0KXtyZXR1cm4g
byh2W25dLHZbdF0pfSksYSYmbS5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7bi5zb3J0KGZ1bmN0aW9u
KG4sZSl7cmV0dXJuIGEodVt0XVtuXSx1W3RdW2VdKX0pfSksbj0od2EtbCppKS9uLHM9MCxoPS0x
OysraDxpOyl7Zm9yKGY9cyxnPS0xOysrZzxpOyl7dmFyIHk9ZFtoXSx4PW1beV1bZ10sTT11W3ld
W3hdLF89cyxiPXMrPU0qbjtwW3krIi0iK3hdPXtpbmRleDp5LHN1YmluZGV4Ongsc3RhcnRBbmds
ZTpfLGVuZEFuZ2xlOmIsdmFsdWU6TX19clt5XT17aW5kZXg6eSxzdGFydEFuZ2xlOmYsZW5kQW5n
bGU6cyx2YWx1ZToocy1mKS9ufSxzKz1sfWZvcihoPS0xOysraDxpOylmb3IoZz1oLTE7KytnPGk7
KXt2YXIgdz1wW2grIi0iK2ddLFM9cFtnKyItIitoXTsody52YWx1ZXx8Uy52YWx1ZSkmJmUucHVz
aCh3LnZhbHVlPFMudmFsdWU/e3NvdXJjZTpTLHRhcmdldDp3fTp7c291cmNlOncsdGFyZ2V0OlN9
KX1jJiZ0KCl9ZnVuY3Rpb24gdCgpe2Uuc29ydChmdW5jdGlvbihuLHQpe3JldHVybiBjKChuLnNv
dXJjZS52YWx1ZStuLnRhcmdldC52YWx1ZSkvMiwodC5zb3VyY2UudmFsdWUrdC50YXJnZXQudmFs
dWUpLzIpfSl9dmFyIGUscix1LGksbyxhLGMscz17fSxsPTA7cmV0dXJuIHMubWF0cml4PWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSh1PW4pJiZ1Lmxlbmd0aCxlPXI9bnVs
bCxzKTp1fSxzLnBhZGRpbmc9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9
bixlPXI9bnVsbCxzKTpsfSxzLnNvcnRHcm91cHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG89bixlPXI9bnVsbCxzKTpvfSxzLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bixlPW51bGwscyk6YX0scy5zb3J0Q2hvcmRzPWZ1
bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPW4sZSYmdCgpLHMpOmN9LHMuY2hv
cmRzPWZ1bmN0aW9uKCl7cmV0dXJuIGV8fG4oKSxlfSxzLmdyb3Vwcz1mdW5jdGlvbigpe3JldHVy
biByfHxuKCkscn0sc30sWm8ubGF5b3V0LmZvcmNlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXty
ZXR1cm4gZnVuY3Rpb24odCxlLHIsdSl7aWYodC5wb2ludCE9PW4pe3ZhciBpPXQuY3gtbi54LG89
dC5jeS1uLnksYT11LWUsYz1pKmkrbypvO2lmKGM+YSphL2Qpe2lmKHA+Yyl7dmFyIHM9dC5jaGFy
Z2UvYztuLnB4LT1pKnMsbi5weS09bypzfXJldHVybiEwfWlmKHQucG9pbnQmJmMmJnA+Yyl7dmFy
IHM9dC5wb2ludENoYXJnZS9jO24ucHgtPWkqcyxuLnB5LT1vKnN9fXJldHVybiF0LmNoYXJnZX19
ZnVuY3Rpb24gdChuKXtuLnB4PVpvLmV2ZW50Lngsbi5weT1aby5ldmVudC55LGEucmVzdW1lKCl9
dmFyIGUscix1LGksbyxhPXt9LGM9Wm8uZGlzcGF0Y2goInN0YXJ0IiwidGljayIsImVuZCIpLHM9
WzEsMV0sbD0uOSxmPXJzLGg9dXMsZz0tMzAscD1pcyx2PS4xLGQ9LjY0LG09W10seT1bXTtyZXR1
cm4gYS50aWNrPWZ1bmN0aW9uKCl7aWYoKHIqPS45OSk8LjAwNSlyZXR1cm4gYy5lbmQoe3R5cGU6
ImVuZCIsYWxwaGE6cj0wfSksITA7dmFyIHQsZSxhLGYsaCxwLGQseCxNLF89bS5sZW5ndGgsYj15
Lmxlbmd0aDtmb3IoZT0wO2I+ZTsrK2UpYT15W2VdLGY9YS5zb3VyY2UsaD1hLnRhcmdldCx4PWgu
eC1mLngsTT1oLnktZi55LChwPXgqeCtNKk0pJiYocD1yKmlbZV0qKChwPU1hdGguc3FydChwKSkt
dVtlXSkvcCx4Kj1wLE0qPXAsaC54LT14KihkPWYud2VpZ2h0LyhoLndlaWdodCtmLndlaWdodCkp
LGgueS09TSpkLGYueCs9eCooZD0xLWQpLGYueSs9TSpkKTtpZigoZD1yKnYpJiYoeD1zWzBdLzIs
TT1zWzFdLzIsZT0tMSxkKSlmb3IoOysrZTxfOylhPW1bZV0sYS54Kz0oeC1hLngpKmQsYS55Kz0o
TS1hLnkpKmQ7aWYoZylmb3IoVnUodD1aby5nZW9tLnF1YWR0cmVlKG0pLHIsbyksZT0tMTsrK2U8
XzspKGE9bVtlXSkuZml4ZWR8fHQudmlzaXQobihhKSk7Zm9yKGU9LTE7KytlPF87KWE9bVtlXSxh
LmZpeGVkPyhhLng9YS5weCxhLnk9YS5weSk6KGEueC09KGEucHgtKGEucHg9YS54KSkqbCxhLnkt
PShhLnB5LShhLnB5PWEueSkpKmwpO2MudGljayh7dHlwZToidGljayIsYWxwaGE6cn0pfSxhLm5v
ZGVzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPW4sYSk6bX0sYS5saW5r
cz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT1uLGEpOnl9LGEuc2l6ZT1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1uLGEpOnN9LGEubGlua0Rpc3Rh
bmNlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSJmdW5jdGlvbiI9PXR5
cGVvZiBuP246K24sYSk6Zn0sYS5kaXN0YW5jZT1hLmxpbmtEaXN0YW5jZSxhLmxpbmtTdHJlbmd0
aD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0iZnVuY3Rpb24iPT10eXBl
b2Ygbj9uOituLGEpOmh9LGEuZnJpY3Rpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGw9K24sYSk6bH0sYS5jaGFyZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGc9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjorbixhKTpnfSxhLmNoYXJnZURpc3RhbmNl
PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPW4qbixhKTpNYXRoLnNxcnQo
cCl9LGEuZ3Jhdml0eT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0rbixh
KTp2fSxhLnRoZXRhPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPW4qbixh
KTpNYXRoLnNxcnQoZCl9LGEuYWxwaGE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KG49K24scj9yPW4+MD9uOjA6bj4wJiYoYy5zdGFydCh7dHlwZToic3RhcnQiLGFscGhhOnI9
bn0pLFpvLnRpbWVyKGEudGljaykpLGEpOnJ9LGEuc3RhcnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBu
KG4scil7aWYoIWUpe2ZvcihlPW5ldyBBcnJheShjKSxhPTA7Yz5hOysrYSllW2FdPVtdO2Zvcihh
PTA7cz5hOysrYSl7dmFyIHU9eVthXTtlW3Uuc291cmNlLmluZGV4XS5wdXNoKHUudGFyZ2V0KSxl
W3UudGFyZ2V0LmluZGV4XS5wdXNoKHUuc291cmNlKX19Zm9yKHZhciBpLG89ZVt0XSxhPS0xLHM9
by5sZW5ndGg7KythPHM7KWlmKCFpc05hTihpPW9bYV1bbl0pKXJldHVybiBpO3JldHVybiBNYXRo
LnJhbmRvbSgpKnJ9dmFyIHQsZSxyLGM9bS5sZW5ndGgsbD15Lmxlbmd0aCxwPXNbMF0sdj1zWzFd
O2Zvcih0PTA7Yz50OysrdCkocj1tW3RdKS5pbmRleD10LHIud2VpZ2h0PTA7Zm9yKHQ9MDtsPnQ7
Kyt0KXI9eVt0XSwibnVtYmVyIj09dHlwZW9mIHIuc291cmNlJiYoci5zb3VyY2U9bVtyLnNvdXJj
ZV0pLCJudW1iZXIiPT10eXBlb2Ygci50YXJnZXQmJihyLnRhcmdldD1tW3IudGFyZ2V0XSksKyty
LnNvdXJjZS53ZWlnaHQsKytyLnRhcmdldC53ZWlnaHQ7Zm9yKHQ9MDtjPnQ7Kyt0KXI9bVt0XSxp
c05hTihyLngpJiYoci54PW4oIngiLHApKSxpc05hTihyLnkpJiYoci55PW4oInkiLHYpKSxpc05h
TihyLnB4KSYmKHIucHg9ci54KSxpc05hTihyLnB5KSYmKHIucHk9ci55KTtpZih1PVtdLCJmdW5j
dGlvbiI9PXR5cGVvZiBmKWZvcih0PTA7bD50OysrdCl1W3RdPStmLmNhbGwodGhpcyx5W3RdLHQp
O2Vsc2UgZm9yKHQ9MDtsPnQ7Kyt0KXVbdF09ZjtpZihpPVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBo
KWZvcih0PTA7bD50OysrdClpW3RdPStoLmNhbGwodGhpcyx5W3RdLHQpO2Vsc2UgZm9yKHQ9MDts
PnQ7Kyt0KWlbdF09aDtpZihvPVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBnKWZvcih0PTA7Yz50Oysr
dClvW3RdPStnLmNhbGwodGhpcyxtW3RdLHQpO2Vsc2UgZm9yKHQ9MDtjPnQ7Kyt0KW9bdF09Zzty
ZXR1cm4gYS5yZXN1bWUoKX0sYS5yZXN1bWU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hbHBoYSguMSl9
LGEuc3RvcD1mdW5jdGlvbigpe3JldHVybiBhLmFscGhhKDApfSxhLmRyYWc9ZnVuY3Rpb24oKXty
ZXR1cm4gZXx8KGU9Wm8uYmVoYXZpb3IuZHJhZygpLm9yaWdpbih3dCkub24oImRyYWdzdGFydC5m
b3JjZSIsT3UpLm9uKCJkcmFnLmZvcmNlIix0KS5vbigiZHJhZ2VuZC5mb3JjZSIsWXUpKSxhcmd1
bWVudHMubGVuZ3RoPyh0aGlzLm9uKCJtb3VzZW92ZXIuZm9yY2UiLEl1KS5vbigibW91c2VvdXQu
Zm9yY2UiLFp1KS5jYWxsKGUpLHZvaWQgMCk6ZX0sWm8ucmViaW5kKGEsYywib24iKX07dmFyIHJz
PTIwLHVzPTEsaXM9MS8wO1pvLmxheW91dC5oaWVyYXJjaHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBu
KHUpe3ZhciBpLG89W3VdLGE9W107Zm9yKHUuZGVwdGg9MDtudWxsIT0oaT1vLnBvcCgpKTspaWYo
YS5wdXNoKGkpLChzPWUuY2FsbChuLGksaS5kZXB0aCkpJiYoYz1zLmxlbmd0aCkpe2Zvcih2YXIg
YyxzLGw7LS1jPj0wOylvLnB1c2gobD1zW2NdKSxsLnBhcmVudD1pLGwuZGVwdGg9aS5kZXB0aCsx
O3ImJihpLnZhbHVlPTApLGkuY2hpbGRyZW49c31lbHNlIHImJihpLnZhbHVlPStyLmNhbGwobixp
LGkuZGVwdGgpfHwwKSxkZWxldGUgaS5jaGlsZHJlbjtyZXR1cm4gQnUodSxmdW5jdGlvbihuKXt2
YXIgZSx1O3QmJihlPW4uY2hpbGRyZW4pJiZlLnNvcnQodCksciYmKHU9bi5wYXJlbnQpJiYodS52
YWx1ZSs9bi52YWx1ZSl9KSxhfXZhciB0PUd1LGU9V3Uscj1KdTtyZXR1cm4gbi5zb3J0PWZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbik6dH0sbi5jaGlsZHJlbj1mdW5j
dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4udmFsdWU9ZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxuLnJldmFsdWU9ZnVuY3Rp
b24odCl7cmV0dXJuIHImJigkdSh0LGZ1bmN0aW9uKG4pe24uY2hpbGRyZW4mJihuLnZhbHVlPTAp
fSksQnUodCxmdW5jdGlvbih0KXt2YXIgZTt0LmNoaWxkcmVufHwodC52YWx1ZT0rci5jYWxsKG4s
dCx0LmRlcHRoKXx8MCksKGU9dC5wYXJlbnQpJiYoZS52YWx1ZSs9dC52YWx1ZSl9KSksdH0sbn0s
Wm8ubGF5b3V0LnBhcnRpdGlvbj1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odCxlLHIsdSl7dmFyIGk9
dC5jaGlsZHJlbjtpZih0Lng9ZSx0Lnk9dC5kZXB0aCp1LHQuZHg9cix0LmR5PXUsaSYmKG89aS5s
ZW5ndGgpKXt2YXIgbyxhLGMscz0tMTtmb3Iocj10LnZhbHVlP3IvdC52YWx1ZTowOysrczxvOylu
KGE9aVtzXSxlLGM9YS52YWx1ZSpyLHUpLGUrPWN9fWZ1bmN0aW9uIHQobil7dmFyIGU9bi5jaGls
ZHJlbixyPTA7aWYoZSYmKHU9ZS5sZW5ndGgpKWZvcih2YXIgdSxpPS0xOysraTx1OylyPU1hdGgu
bWF4KHIsdChlW2ldKSk7cmV0dXJuIDErcn1mdW5jdGlvbiBlKGUsaSl7dmFyIG89ci5jYWxsKHRo
aXMsZSxpKTtyZXR1cm4gbihvWzBdLDAsdVswXSx1WzFdL3Qob1swXSkpLG99dmFyIHI9Wm8ubGF5
b3V0LmhpZXJhcmNoeSgpLHU9WzEsMV07cmV0dXJuIGUuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odT1uLGUpOnV9LFh1KGUscil9LFpvLmxheW91dC5waWU9ZnVuY3Rp
b24oKXtmdW5jdGlvbiBuKGkpe3ZhciBvPWkubWFwKGZ1bmN0aW9uKGUscil7cmV0dXJuK3QuY2Fs
bChuLGUscil9KSxhPSsoImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseSh0aGlzLGFyZ3VtZW50
cyk6ciksYz0oKCJmdW5jdGlvbiI9PXR5cGVvZiB1P3UuYXBwbHkodGhpcyxhcmd1bWVudHMpOnUp
LWEpL1pvLnN1bShvKSxzPVpvLnJhbmdlKGkubGVuZ3RoKTtudWxsIT1lJiZzLnNvcnQoZT09PW9z
P2Z1bmN0aW9uKG4sdCl7cmV0dXJuIG9bdF0tb1tuXX06ZnVuY3Rpb24obix0KXtyZXR1cm4gZShp
W25dLGlbdF0pfSk7dmFyIGw9W107cmV0dXJuIHMuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgdDts
W25dPXtkYXRhOmlbbl0sdmFsdWU6dD1vW25dLHN0YXJ0QW5nbGU6YSxlbmRBbmdsZTphKz10KmN9
fSksbH12YXIgdD1OdW1iZXIsZT1vcyxyPTAsdT13YTtyZXR1cm4gbi52YWx1ZT1mdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLG4pOnR9LG4uc29ydD1mdW5jdGlvbih0KXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4uc3RhcnRBbmdsZT1mdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LG4uZW5kQW5nbGU9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxuKTp1fSxufTt2YXIgb3M9e307Wm8ubGF5
b3V0LnN0YWNrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihhLGMpe3ZhciBzPWEubWFwKGZ1bmN0aW9u
KGUscil7cmV0dXJuIHQuY2FsbChuLGUscil9KSxsPXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0
Lm1hcChmdW5jdGlvbih0LGUpe3JldHVybltpLmNhbGwobix0LGUpLG8uY2FsbChuLHQsZSldfSl9
KSxmPWUuY2FsbChuLGwsYyk7cz1aby5wZXJtdXRlKHMsZiksbD1aby5wZXJtdXRlKGwsZik7dmFy
IGgsZyxwLHY9ci5jYWxsKG4sbCxjKSxkPXMubGVuZ3RoLG09c1swXS5sZW5ndGg7Zm9yKGc9MDtt
Pmc7KytnKWZvcih1LmNhbGwobixzWzBdW2ddLHA9dltnXSxsWzBdW2ddWzFdKSxoPTE7ZD5oOysr
aCl1LmNhbGwobixzW2hdW2ddLHArPWxbaC0xXVtnXVsxXSxsW2hdW2ddWzFdKTtyZXR1cm4gYX12
YXIgdD13dCxlPWVpLHI9cmksdT10aSxpPVF1LG89bmk7cmV0dXJuIG4udmFsdWVzPWZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbik6dH0sbi5vcmRlcj1mdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmFzLmdl
dCh0KXx8ZWksbik6ZX0sbi5vZmZzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjcy5nZXQodCl8fHJpLG4pOnJ9LG4ueD1mdW5j
dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LG4pOml9LG4ueT1mdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10LG4pOm99LG4ub3V0PWZ1bmN0aW9uKHQpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsbik6dX0sbn07dmFyIGFzPVpvLm1hcCh7Imluc2lk
ZS1vdXQiOmZ1bmN0aW9uKG4pe3ZhciB0LGUscj1uLmxlbmd0aCx1PW4ubWFwKHVpKSxpPW4ubWFw
KGlpKSxvPVpvLnJhbmdlKHIpLnNvcnQoZnVuY3Rpb24obix0KXtyZXR1cm4gdVtuXS11W3RdfSks
YT0wLGM9MCxzPVtdLGw9W107Zm9yKHQ9MDtyPnQ7Kyt0KWU9b1t0XSxjPmE/KGErPWlbZV0scy5w
dXNoKGUpKTooYys9aVtlXSxsLnB1c2goZSkpO3JldHVybiBsLnJldmVyc2UoKS5jb25jYXQocyl9
LHJldmVyc2U6ZnVuY3Rpb24obil7cmV0dXJuIFpvLnJhbmdlKG4ubGVuZ3RoKS5yZXZlcnNlKCl9
LCJkZWZhdWx0IjplaX0pLGNzPVpvLm1hcCh7c2lsaG91ZXR0ZTpmdW5jdGlvbihuKXt2YXIgdCxl
LHIsdT1uLmxlbmd0aCxpPW5bMF0ubGVuZ3RoLG89W10sYT0wLGM9W107Zm9yKGU9MDtpPmU7Kytl
KXtmb3IodD0wLHI9MDt1PnQ7dCsrKXIrPW5bdF1bZV1bMV07cj5hJiYoYT1yKSxvLnB1c2gocil9
Zm9yKGU9MDtpPmU7KytlKWNbZV09KGEtb1tlXSkvMjtyZXR1cm4gY30sd2lnZ2xlOmZ1bmN0aW9u
KG4pe3ZhciB0LGUscix1LGksbyxhLGMscyxsPW4ubGVuZ3RoLGY9blswXSxoPWYubGVuZ3RoLGc9
W107Zm9yKGdbMF09Yz1zPTAsZT0xO2g+ZTsrK2Upe2Zvcih0PTAsdT0wO2w+dDsrK3QpdSs9blt0
XVtlXVsxXTtmb3IodD0wLGk9MCxhPWZbZV1bMF0tZltlLTFdWzBdO2w+dDsrK3Qpe2ZvcihyPTAs
bz0oblt0XVtlXVsxXS1uW3RdW2UtMV1bMV0pLygyKmEpO3Q+cjsrK3Ipbys9KG5bcl1bZV1bMV0t
bltyXVtlLTFdWzFdKS9hO2krPW8qblt0XVtlXVsxXX1nW2VdPWMtPXU/aS91KmE6MCxzPmMmJihz
PWMpfWZvcihlPTA7aD5lOysrZSlnW2VdLT1zO3JldHVybiBnfSxleHBhbmQ6ZnVuY3Rpb24obil7
dmFyIHQsZSxyLHU9bi5sZW5ndGgsaT1uWzBdLmxlbmd0aCxvPTEvdSxhPVtdO2ZvcihlPTA7aT5l
OysrZSl7Zm9yKHQ9MCxyPTA7dT50O3QrKylyKz1uW3RdW2VdWzFdO2lmKHIpZm9yKHQ9MDt1PnQ7
dCsrKW5bdF1bZV1bMV0vPXI7ZWxzZSBmb3IodD0wO3U+dDt0Kyspblt0XVtlXVsxXT1vfWZvcihl
PTA7aT5lOysrZSlhW2VdPTA7cmV0dXJuIGF9LHplcm86cml9KTtaby5sYXlvdXQuaGlzdG9ncmFt
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLGkpe2Zvcih2YXIgbyxhLGM9W10scz1uLm1hcChlLHRo
aXMpLGw9ci5jYWxsKHRoaXMscyxpKSxmPXUuY2FsbCh0aGlzLGwscyxpKSxpPS0xLGg9cy5sZW5n
dGgsZz1mLmxlbmd0aC0xLHA9dD8xOjEvaDsrK2k8Zzspbz1jW2ldPVtdLG8uZHg9ZltpKzFdLShv
Lng9ZltpXSksby55PTA7aWYoZz4wKWZvcihpPS0xOysraTxoOylhPXNbaV0sYT49bFswXSYmYTw9
bFsxXSYmKG89Y1taby5iaXNlY3QoZixhLDEsZyktMV0sby55Kz1wLG8ucHVzaChuW2ldKSk7cmV0
dXJuIGN9dmFyIHQ9ITAsZT1OdW1iZXIscj1zaSx1PWFpO3JldHVybiBuLnZhbHVlPWZ1bmN0aW9u
KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsbik6ZX0sbi5yYW5nZT1mdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1idCh0KSxuKTpyfSxuLmJpbnM9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9Im51bWJlciI9PXR5cGVvZiB0P2Z1bmN0aW9u
KG4pe3JldHVybiBjaShuLHQpfTpidCh0KSxuKTp1fSxuLmZyZXF1ZW5jeT1mdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0hIWUsbik6dH0sbn0sWm8ubGF5b3V0LnBhY2s9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiBuKG4saSl7dmFyIG89ZS5jYWxsKHRoaXMsbixpKSxhPW9bMF0sYz11
WzBdLHM9dVsxXSxsPW51bGw9PXQ/TWF0aC5zcXJ0OiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZnVu
Y3Rpb24oKXtyZXR1cm4gdH07aWYoYS54PWEueT0wLEJ1KGEsZnVuY3Rpb24obil7bi5yPStsKG4u
dmFsdWUpfSksQnUoYSxwaSkscil7dmFyIGY9cioodD8xOk1hdGgubWF4KDIqYS5yL2MsMiphLnIv
cykpLzI7QnUoYSxmdW5jdGlvbihuKXtuLnIrPWZ9KSxCdShhLHBpKSxCdShhLGZ1bmN0aW9uKG4p
e24uci09Zn0pfXJldHVybiBtaShhLGMvMixzLzIsdD8xOjEvTWF0aC5tYXgoMiphLnIvYywyKmEu
ci9zKSksb312YXIgdCxlPVpvLmxheW91dC5oaWVyYXJjaHkoKS5zb3J0KGxpKSxyPTAsdT1bMSwx
XTtyZXR1cm4gbi5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQs
bik6dX0sbi5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bnVs
bD09ZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTorZSxuKTp0fSxuLnBhZGRpbmc9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3Qsbik6cn0sWHUobixlKX0sWm8ubGF5b3V0
LnRyZWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sdSl7dmFyIGw9by5jYWxsKHRoaXMsbix1KSxm
PWxbMF0saD10KGYpO2lmKEJ1KGgsZSksaC5wYXJlbnQubT0taC56LCR1KGgscikscykkdShmLGkp
O2Vsc2V7dmFyIGc9ZixwPWYsdj1mOyR1KGYsZnVuY3Rpb24obil7bi54PGcueCYmKGc9biksbi54
PnAueCYmKHA9biksbi5kZXB0aD52LmRlcHRoJiYodj1uKX0pO3ZhciBkPWEoZyxwKS8yLWcueCxt
PWNbMF0vKHAueCthKHAsZykvMitkKSx5PWNbMV0vKHYuZGVwdGh8fDEpOyR1KGYsZnVuY3Rpb24o
bil7bi54PShuLngrZCkqbSxuLnk9bi5kZXB0aCp5fSl9cmV0dXJuIGx9ZnVuY3Rpb24gdChuKXtm
b3IodmFyIHQsZT17QTpudWxsLGNoaWxkcmVuOltuXX0scj1bZV07bnVsbCE9KHQ9ci5wb3AoKSk7
KWZvcih2YXIgdSxpPXQuY2hpbGRyZW4sbz0wLGE9aS5sZW5ndGg7YT5vOysrbylyLnB1c2goKGlb
b109dT17XzppW29dLHBhcmVudDp0LGNoaWxkcmVuOih1PWlbb10uY2hpbGRyZW4pJiZ1LnNsaWNl
KCl8fFtdLEE6bnVsbCxhOm51bGwsejowLG06MCxjOjAsczowLHQ6bnVsbCxpOm99KS5hPXUpO3Jl
dHVybiBlLmNoaWxkcmVuWzBdfWZ1bmN0aW9uIGUobil7dmFyIHQ9bi5jaGlsZHJlbixlPW4ucGFy
ZW50LmNoaWxkcmVuLHI9bi5pP2Vbbi5pLTFdOm51bGw7aWYodC5sZW5ndGgpe3dpKG4pO3ZhciBp
PSh0WzBdLnordFt0Lmxlbmd0aC0xXS56KS8yO3I/KG4uej1yLnorYShuLl8sci5fKSxuLm09bi56
LWkpOm4uej1pfWVsc2UgciYmKG4uej1yLnorYShuLl8sci5fKSk7bi5wYXJlbnQuQT11KG4scixu
LnBhcmVudC5BfHxlWzBdKX1mdW5jdGlvbiByKG4pe24uXy54PW4ueituLnBhcmVudC5tLG4ubSs9
bi5wYXJlbnQubX1mdW5jdGlvbiB1KG4sdCxlKXtpZih0KXtmb3IodmFyIHIsdT1uLGk9bixvPXQs
Yz11LnBhcmVudC5jaGlsZHJlblswXSxzPXUubSxsPWkubSxmPW8ubSxoPWMubTtvPV9pKG8pLHU9
TWkodSksbyYmdTspYz1NaShjKSxpPV9pKGkpLGkuYT1uLHI9by56K2YtdS56LXMrYShvLl8sdS5f
KSxyPjAmJihiaShTaShvLG4sZSksbixyKSxzKz1yLGwrPXIpLGYrPW8ubSxzKz11Lm0saCs9Yy5t
LGwrPWkubTtvJiYhX2koaSkmJihpLnQ9byxpLm0rPWYtbCksdSYmIU1pKGMpJiYoYy50PXUsYy5t
Kz1zLWgsZT1uKX1yZXR1cm4gZX1mdW5jdGlvbiBpKG4pe24ueCo9Y1swXSxuLnk9bi5kZXB0aCpj
WzFdfXZhciBvPVpvLmxheW91dC5oaWVyYXJjaHkoKS5zb3J0KG51bGwpLnZhbHVlKG51bGwpLGE9
eGksYz1bMSwxXSxzPW51bGw7cmV0dXJuIG4uc2VwYXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oYT10LG4pOmF9LG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocz1udWxsPT0oYz10KT9pOm51bGwsbik6cz9udWxsOmN9LG4ubm9kZVNp
emU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bnVsbD09KGM9dCk/bnVs
bDppLG4pOnM/YzpudWxsfSxYdShuLG8pfSxaby5sYXlvdXQuY2x1c3Rlcj1mdW5jdGlvbigpe2Z1
bmN0aW9uIG4obixpKXt2YXIgbyxhPXQuY2FsbCh0aGlzLG4saSksYz1hWzBdLHM9MDtCdShjLGZ1
bmN0aW9uKG4pe3ZhciB0PW4uY2hpbGRyZW47dCYmdC5sZW5ndGg/KG4ueD1FaSh0KSxuLnk9a2ko
dCkpOihuLng9bz9zKz1lKG4sbyk6MCxuLnk9MCxvPW4pfSk7dmFyIGw9QWkoYyksZj1DaShjKSxo
PWwueC1lKGwsZikvMixnPWYueCtlKGYsbCkvMjtyZXR1cm4gQnUoYyx1P2Z1bmN0aW9uKG4pe24u
eD0obi54LWMueCkqclswXSxuLnk9KGMueS1uLnkpKnJbMV19OmZ1bmN0aW9uKG4pe24ueD0obi54
LWgpLyhnLWgpKnJbMF0sbi55PSgxLShjLnk/bi55L2MueToxKSkqclsxXX0pLGF9dmFyIHQ9Wm8u
bGF5b3V0LmhpZXJhcmNoeSgpLnNvcnQobnVsbCkudmFsdWUobnVsbCksZT14aSxyPVsxLDFdLHU9
ITE7cmV0dXJuIG4uc2VwYXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZT10LG4pOmV9LG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
dT1udWxsPT0ocj10KSxuKTp1P251bGw6cn0sbi5ub2RlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odT1udWxsIT0ocj10KSxuKTp1P3I6bnVsbH0sWHUobix0KX0sWm8u
bGF5b3V0LnRyZWVtYXA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sdCl7Zm9yKHZhciBlLHIsdT0t
MSxpPW4ubGVuZ3RoOysrdTxpOylyPShlPW5bdV0pLnZhbHVlKigwPnQ/MDp0KSxlLmFyZWE9aXNO
YU4ocil8fDA+PXI/MDpyfWZ1bmN0aW9uIHQoZSl7dmFyIGk9ZS5jaGlsZHJlbjtpZihpJiZpLmxl
bmd0aCl7dmFyIG8sYSxjLHM9ZihlKSxsPVtdLGg9aS5zbGljZSgpLHA9MS8wLHY9InNsaWNlIj09
PWc/cy5keDoiZGljZSI9PT1nP3MuZHk6InNsaWNlLWRpY2UiPT09Zz8xJmUuZGVwdGg/cy5keTpz
LmR4Ok1hdGgubWluKHMuZHgscy5keSk7Zm9yKG4oaCxzLmR4KnMuZHkvZS52YWx1ZSksbC5hcmVh
PTA7KGM9aC5sZW5ndGgpPjA7KWwucHVzaChvPWhbYy0xXSksbC5hcmVhKz1vLmFyZWEsInNxdWFy
aWZ5IiE9PWd8fChhPXIobCx2KSk8PXA/KGgucG9wKCkscD1hKToobC5hcmVhLT1sLnBvcCgpLmFy
ZWEsdShsLHYscywhMSksdj1NYXRoLm1pbihzLmR4LHMuZHkpLGwubGVuZ3RoPWwuYXJlYT0wLHA9
MS8wKTtsLmxlbmd0aCYmKHUobCx2LHMsITApLGwubGVuZ3RoPWwuYXJlYT0wKSxpLmZvckVhY2go
dCl9fWZ1bmN0aW9uIGUodCl7dmFyIHI9dC5jaGlsZHJlbjtpZihyJiZyLmxlbmd0aCl7dmFyIGks
bz1mKHQpLGE9ci5zbGljZSgpLGM9W107Zm9yKG4oYSxvLmR4Km8uZHkvdC52YWx1ZSksYy5hcmVh
PTA7aT1hLnBvcCgpOyljLnB1c2goaSksYy5hcmVhKz1pLmFyZWEsbnVsbCE9aS56JiYodShjLGku
ej9vLmR4Om8uZHksbywhYS5sZW5ndGgpLGMubGVuZ3RoPWMuYXJlYT0wKTtyLmZvckVhY2goZSl9
fWZ1bmN0aW9uIHIobix0KXtmb3IodmFyIGUscj1uLmFyZWEsdT0wLGk9MS8wLG89LTEsYT1uLmxl
bmd0aDsrK288YTspKGU9bltvXS5hcmVhKSYmKGk+ZSYmKGk9ZSksZT51JiYodT1lKSk7cmV0dXJu
IHIqPXIsdCo9dCxyP01hdGgubWF4KHQqdSpwL3Isci8odCppKnApKToxLzB9ZnVuY3Rpb24gdShu
LHQsZSxyKXt2YXIgdSxpPS0xLG89bi5sZW5ndGgsYT1lLngscz1lLnksbD10P2Mobi5hcmVhL3Qp
OjA7aWYodD09ZS5keCl7Zm9yKChyfHxsPmUuZHkpJiYobD1lLmR5KTsrK2k8bzspdT1uW2ldLHUu
eD1hLHUueT1zLHUuZHk9bCxhKz11LmR4PU1hdGgubWluKGUueCtlLmR4LWEsbD9jKHUuYXJlYS9s
KTowKTt1Lno9ITAsdS5keCs9ZS54K2UuZHgtYSxlLnkrPWwsZS5keS09bH1lbHNle2Zvcigocnx8
bD5lLmR4KSYmKGw9ZS5keCk7KytpPG87KXU9bltpXSx1Lng9YSx1Lnk9cyx1LmR4PWwscys9dS5k
eT1NYXRoLm1pbihlLnkrZS5keS1zLGw/Yyh1LmFyZWEvbCk6MCk7dS56PSExLHUuZHkrPWUueStl
LmR5LXMsZS54Kz1sLGUuZHgtPWx9fWZ1bmN0aW9uIGkocil7dmFyIHU9b3x8YShyKSxpPXVbMF07
cmV0dXJuIGkueD0wLGkueT0wLGkuZHg9c1swXSxpLmR5PXNbMV0sbyYmYS5yZXZhbHVlKGkpLG4o
W2ldLGkuZHgqaS5keS9pLnZhbHVlKSwobz9lOnQpKGkpLGgmJihvPXUpLHV9dmFyIG8sYT1aby5s
YXlvdXQuaGllcmFyY2h5KCksYz1NYXRoLnJvdW5kLHM9WzEsMV0sbD1udWxsLGY9TmksaD0hMSxn
PSJzcXVhcmlmeSIscD0uNSooMStNYXRoLnNxcnQoNSkpO3JldHVybiBpLnNpemU9ZnVuY3Rpb24o
bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bixpKTpzfSxpLnBhZGRpbmc9ZnVuY3Rpb24o
bil7ZnVuY3Rpb24gdCh0KXt2YXIgZT1uLmNhbGwoaSx0LHQuZGVwdGgpO3JldHVybiBudWxsPT1l
P05pKHQpOnppKHQsIm51bWJlciI9PXR5cGVvZiBlP1tlLGUsZSxlXTplKX1mdW5jdGlvbiBlKHQp
e3JldHVybiB6aSh0LG4pfWlmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBsO3ZhciByO3JldHVy
biBmPW51bGw9PShsPW4pP05pOiJmdW5jdGlvbiI9PShyPXR5cGVvZiBuKT90OiJudW1iZXIiPT09
cj8obj1bbixuLG4sbl0sZSk6ZSxpfSxpLnJvdW5kPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhjPW4/TWF0aC5yb3VuZDpOdW1iZXIsaSk6YyE9TnVtYmVyfSxpLnN0aWNreT1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1uLG89bnVsbCxpKTpofSxpLnJh
dGlvPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPW4saSk6cH0saS5tb2Rl
PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPW4rIiIsaSk6Z30sWHUoaSxh
KX0sWm8ucmFuZG9tPXtub3JtYWw6ZnVuY3Rpb24obix0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3Ro
O3JldHVybiAyPmUmJih0PTEpLDE+ZSYmKG49MCksZnVuY3Rpb24oKXt2YXIgZSxyLHU7ZG8gZT0y
Kk1hdGgucmFuZG9tKCktMSxyPTIqTWF0aC5yYW5kb20oKS0xLHU9ZSplK3Iqcjt3aGlsZSghdXx8
dT4xKTtyZXR1cm4gbit0KmUqTWF0aC5zcXJ0KC0yKk1hdGgubG9nKHUpL3UpfX0sbG9nTm9ybWFs
OmZ1bmN0aW9uKCl7dmFyIG49Wm8ucmFuZG9tLm5vcm1hbC5hcHBseShabyxhcmd1bWVudHMpO3Jl
dHVybiBmdW5jdGlvbigpe3JldHVybiBNYXRoLmV4cChuKCkpfX0sYmF0ZXM6ZnVuY3Rpb24obil7
dmFyIHQ9Wm8ucmFuZG9tLmlyd2luSGFsbChuKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCgp
L259fSxpcndpbkhhbGw6ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAs
ZT0wO24+ZTtlKyspdCs9TWF0aC5yYW5kb20oKTtyZXR1cm4gdH19fSxaby5zY2FsZT17fTt2YXIg
c3M9e2Zsb29yOnd0LGNlaWw6d3R9O1pvLnNjYWxlLmxpbmVhcj1mdW5jdGlvbigpe3JldHVybiBV
aShbMCwxXSxbMCwxXSxodSwhMSl9O3ZhciBscz17czoxLGc6MSxwOjEscjoxLGU6MX07Wm8uc2Nh
bGUubG9nPWZ1bmN0aW9uKCl7cmV0dXJuIFZpKFpvLnNjYWxlLmxpbmVhcigpLmRvbWFpbihbMCwx
XSksMTAsITAsWzEsMTBdKX07dmFyIGZzPVpvLmZvcm1hdCgiLjBlIiksaHM9e2Zsb29yOmZ1bmN0
aW9uKG4pe3JldHVybi1NYXRoLmNlaWwoLW4pfSxjZWlsOmZ1bmN0aW9uKG4pe3JldHVybi1NYXRo
LmZsb29yKC1uKX19O1pvLnNjYWxlLnBvdz1mdW5jdGlvbigpe3JldHVybiBYaShaby5zY2FsZS5s
aW5lYXIoKSwxLFswLDFdKX0sWm8uc2NhbGUuc3FydD1mdW5jdGlvbigpe3JldHVybiBaby5zY2Fs
ZS5wb3coKS5leHBvbmVudCguNSl9LFpvLnNjYWxlLm9yZGluYWw9ZnVuY3Rpb24oKXtyZXR1cm4g
QmkoW10se3Q6InJhbmdlIixhOltbXV19KX0sWm8uc2NhbGUuY2F0ZWdvcnkxMD1mdW5jdGlvbigp
e3JldHVybiBaby5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoZ3MpfSxaby5zY2FsZS5jYXRlZ29yeTIw
PWZ1bmN0aW9uKCl7cmV0dXJuIFpvLnNjYWxlLm9yZGluYWwoKS5yYW5nZShwcyl9LFpvLnNjYWxl
LmNhdGVnb3J5MjBiPWZ1bmN0aW9uKCl7cmV0dXJuIFpvLnNjYWxlLm9yZGluYWwoKS5yYW5nZSh2
cyl9LFpvLnNjYWxlLmNhdGVnb3J5MjBjPWZ1bmN0aW9uKCl7cmV0dXJuIFpvLnNjYWxlLm9yZGlu
YWwoKS5yYW5nZShkcyl9O3ZhciBncz1bMjA2MjI2MCwxNjc0NDIwNiwyOTI0NTg4LDE0MDM0NzI4
LDk3MjU4ODUsOTE5NzEzMSwxNDkwNzMzMCw4MzU1NzExLDEyMzY5MTg2LDE1NTYxNzVdLm1hcCh2
dCkscHM9WzIwNjIyNjAsMTE0NTQ0NDAsMTY3NDQyMDYsMTY3NTk2NzIsMjkyNDU4OCwxMDAxODY5
OCwxNDAzNDcyOCwxNjc1MDc0Miw5NzI1ODg1LDEyOTU1ODYxLDkxOTcxMzEsMTI4ODUxNDAsMTQ5
MDczMzAsMTYyMzQxOTQsODM1NTcxMSwxMzA5MjgwNywxMjM2OTE4NiwxNDQwODU4OSwxNTU2MTc1
LDEwNDEwNzI1XS5tYXAodnQpLHZzPVszNzUwNzc3LDUzOTU2MTksNzA0MDcxOSwxMDI2NDI4Niw2
NTE5MDk3LDkyMTY1OTQsMTE5MTUxMTUsMTM1NTY2MzYsOTIwMjk5MywxMjQyNjgwOSwxNTE4NjUx
NCwxNTE5MDkzMiw4NjY2MTY5LDExMzU2NDkwLDE0MDQ5NjQzLDE1MTc3MzcyLDgwNzc2ODMsMTA4
MzQzMjQsMTM1Mjg1MDksMTQ1ODk2NTRdLm1hcCh2dCksZHM9WzMyNDQ3MzMsNzA1NzExMCwxMDQw
NjYyNSwxMzAzMjQzMSwxNTA5NTA1MywxNjYxNjc2NCwxNjYyNTI1OSwxNjYzNDAxOCwzMjUzMDc2
LDc2NTI0NzAsMTA2MDcwMDMsMTMxMDE1MDQsNzY5NTI4MSwxMDM5NDMxMiwxMjM2OTM3MiwxNDM0
Mjg5MSw2NTEzNTA3LDk4Njg5NTAsMTI0MzQ4NzcsMTQyNzcwODFdLm1hcCh2dCk7Wm8uc2NhbGUu
cXVhbnRpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gV2koW10sW10pfSxaby5zY2FsZS5xdWFudGl6ZT1m
dW5jdGlvbigpe3JldHVybiBKaSgwLDEsWzAsMV0pfSxaby5zY2FsZS50aHJlc2hvbGQ9ZnVuY3Rp
b24oKXtyZXR1cm4gR2koWy41XSxbMCwxXSl9LFpvLnNjYWxlLmlkZW50aXR5PWZ1bmN0aW9uKCl7
cmV0dXJuIEtpKFswLDFdKX0sWm8uc3ZnPXt9LFpvLnN2Zy5hcmM9ZnVuY3Rpb24oKXtmdW5jdGlv
biBuKCl7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksaT1lLmFwcGx5KHRoaXMsYXJndW1l
bnRzKSxvPXIuYXBwbHkodGhpcyxhcmd1bWVudHMpK21zLGE9dS5hcHBseSh0aGlzLGFyZ3VtZW50
cykrbXMsYz0obz5hJiYoYz1vLG89YSxhPWMpLGEtbykscz1iYT5jPyIwIjoiMSIsbD1NYXRoLmNv
cyhvKSxmPU1hdGguc2luKG8pLGg9TWF0aC5jb3MoYSksZz1NYXRoLnNpbihhKTsKK3JldHVybiBj
Pj15cz9uPyJNMCwiK2krIkEiK2krIiwiK2krIiAwIDEsMSAwLCIrLWkrIkEiK2krIiwiK2krIiAw
IDEsMSAwLCIraSsiTTAsIituKyJBIituKyIsIituKyIgMCAxLDAgMCwiKy1uKyJBIituKyIsIitu
KyIgMCAxLDAgMCwiK24rIloiOiJNMCwiK2krIkEiK2krIiwiK2krIiAwIDEsMSAwLCIrLWkrIkEi
K2krIiwiK2krIiAwIDEsMSAwLCIraSsiWiI6bj8iTSIraSpsKyIsIitpKmYrIkEiK2krIiwiK2kr
IiAwICIrcysiLDEgIitpKmgrIiwiK2kqZysiTCIrbipoKyIsIituKmcrIkEiK24rIiwiK24rIiAw
ICIrcysiLDAgIituKmwrIiwiK24qZisiWiI6Ik0iK2kqbCsiLCIraSpmKyJBIitpKyIsIitpKyIg
MCAiK3MrIiwxICIraSpoKyIsIitpKmcrIkwwLDAiKyJaIn12YXIgdD1RaSxlPW5vLHI9dG8sdT1l
bztyZXR1cm4gbi5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odD1idChlKSxuKTp0fSxuLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhlPWJ0KHQpLG4pOmV9LG4uc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8ocj1idCh0KSxuKTpyfSxuLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWJ0KHQpLG4pOnV9LG4uY2VudHJvaWQ9ZnVuY3Rpb24o
KXt2YXIgbj0odC5hcHBseSh0aGlzLGFyZ3VtZW50cykrZS5hcHBseSh0aGlzLGFyZ3VtZW50cykp
LzIsaT0oci5hcHBseSh0aGlzLGFyZ3VtZW50cykrdS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIr
bXM7cmV0dXJuW01hdGguY29zKGkpKm4sTWF0aC5zaW4oaSkqbl19LG59O3ZhciBtcz0tU2EseXM9
d2Eta2E7Wm8uc3ZnLmxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gcm8od3QpfTt2YXIgeHM9Wm8ubWFw
KHtsaW5lYXI6dW8sImxpbmVhci1jbG9zZWQiOmlvLHN0ZXA6b28sInN0ZXAtYmVmb3JlIjphbywi
c3RlcC1hZnRlciI6Y28sYmFzaXM6cG8sImJhc2lzLW9wZW4iOnZvLCJiYXNpcy1jbG9zZWQiOm1v
LGJ1bmRsZTp5byxjYXJkaW5hbDpmbywiY2FyZGluYWwtb3BlbiI6c28sImNhcmRpbmFsLWNsb3Nl
ZCI6bG8sbW9ub3RvbmU6U299KTt4cy5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7dC5rZXk9bix0LmNs
b3NlZD0vLWNsb3NlZCQvLnRlc3Qobil9KTt2YXIgTXM9WzAsMi8zLDEvMywwXSxfcz1bMCwxLzMs
Mi8zLDBdLGJzPVswLDEvNiwyLzMsMS82XTtaby5zdmcubGluZS5yYWRpYWw9ZnVuY3Rpb24oKXt2
YXIgbj1ybyhrbyk7cmV0dXJuIG4ucmFkaXVzPW4ueCxkZWxldGUgbi54LG4uYW5nbGU9bi55LGRl
bGV0ZSBuLnksbn0sYW8ucmV2ZXJzZT1jbyxjby5yZXZlcnNlPWFvLFpvLnN2Zy5hcmVhPWZ1bmN0
aW9uKCl7cmV0dXJuIEVvKHd0KX0sWm8uc3ZnLmFyZWEucmFkaWFsPWZ1bmN0aW9uKCl7dmFyIG49
RW8oa28pO3JldHVybiBuLnJhZGl1cz1uLngsZGVsZXRlIG4ueCxuLmlubmVyUmFkaXVzPW4ueDAs
ZGVsZXRlIG4ueDAsbi5vdXRlclJhZGl1cz1uLngxLGRlbGV0ZSBuLngxLG4uYW5nbGU9bi55LGRl
bGV0ZSBuLnksbi5zdGFydEFuZ2xlPW4ueTAsZGVsZXRlIG4ueTAsbi5lbmRBbmdsZT1uLnkxLGRl
bGV0ZSBuLnkxLG59LFpvLnN2Zy5jaG9yZD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixhKXt2YXIg
Yz10KHRoaXMsaSxuLGEpLHM9dCh0aGlzLG8sbixhKTtyZXR1cm4iTSIrYy5wMCtyKGMucixjLnAx
LGMuYTEtYy5hMCkrKGUoYyxzKT91KGMucixjLnAxLGMucixjLnAwKTp1KGMucixjLnAxLHMucixz
LnAwKStyKHMucixzLnAxLHMuYTEtcy5hMCkrdShzLnIscy5wMSxjLnIsYy5wMCkpKyJaIn1mdW5j
dGlvbiB0KG4sdCxlLHIpe3ZhciB1PXQuY2FsbChuLGUsciksaT1hLmNhbGwobix1LHIpLG89Yy5j
YWxsKG4sdSxyKSttcyxsPXMuY2FsbChuLHUscikrbXM7cmV0dXJue3I6aSxhMDpvLGExOmwscDA6
W2kqTWF0aC5jb3MobyksaSpNYXRoLnNpbihvKV0scDE6W2kqTWF0aC5jb3MobCksaSpNYXRoLnNp
bihsKV19fWZ1bmN0aW9uIGUobix0KXtyZXR1cm4gbi5hMD09dC5hMCYmbi5hMT09dC5hMX1mdW5j
dGlvbiByKG4sdCxlKXtyZXR1cm4iQSIrbisiLCIrbisiIDAgIisgKyhlPmJhKSsiLDEgIit0fWZ1
bmN0aW9uIHUobix0LGUscil7cmV0dXJuIlEgMCwwICIrcn12YXIgaT1ncixvPXByLGE9QW8sYz10
byxzPWVvO3JldHVybiBuLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oYT1idCh0KSxuKTphfSxuLnNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oaT1idCh0KSxuKTppfSxuLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8obz1idCh0KSxuKTpvfSxuLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGM9YnQodCksbik6Y30sbi5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1idCh0KSxuKTpzfSxufSxaby5zdmcuZGlhZ29uYWw9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiBuKG4sdSl7dmFyIGk9dC5jYWxsKHRoaXMsbix1KSxvPWUuY2FsbCh0
aGlzLG4sdSksYT0oaS55K28ueSkvMixjPVtpLHt4OmkueCx5OmF9LHt4Om8ueCx5OmF9LG9dO3Jl
dHVybiBjPWMubWFwKHIpLCJNIitjWzBdKyJDIitjWzFdKyIgIitjWzJdKyIgIitjWzNdfXZhciB0
PWdyLGU9cHIscj1DbztyZXR1cm4gbi5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHQ9YnQoZSksbik6dH0sbi50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGU9YnQodCksbik6ZX0sbi5wcm9qZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbik6cn0sbn0sWm8uc3ZnLmRpYWdvbmFsLnJhZGlhbD1m
dW5jdGlvbigpe3ZhciBuPVpvLnN2Zy5kaWFnb25hbCgpLHQ9Q28sZT1uLnByb2plY3Rpb247cmV0
dXJuIG4ucHJvamVjdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKE5v
KHQ9bikpOnR9LG59LFpvLnN2Zy5zeW1ib2w9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4scil7cmV0
dXJuKHdzLmdldCh0LmNhbGwodGhpcyxuLHIpKXx8VG8pKGUuY2FsbCh0aGlzLG4scikpfXZhciB0
PUxvLGU9em87cmV0dXJuIG4udHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odD1idChlKSxuKTp0fSxuLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGU9YnQodCksbik6ZX0sbn07dmFyIHdzPVpvLm1hcCh7Y2lyY2xlOlRvLGNyb3NzOmZ1bmN0
aW9uKG4pe3ZhciB0PU1hdGguc3FydChuLzUpLzI7cmV0dXJuIk0iKy0zKnQrIiwiKy10KyJIIist
dCsiViIrLTMqdCsiSCIrdCsiViIrLXQrIkgiKzMqdCsiViIrdCsiSCIrdCsiViIrMyp0KyJIIist
dCsiViIrdCsiSCIrLTMqdCsiWiJ9LGRpYW1vbmQ6ZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5zcXJ0
KG4vKDIqQXMpKSxlPXQqQXM7cmV0dXJuIk0wLCIrLXQrIkwiK2UrIiwwIisiIDAsIit0KyIgIist
ZSsiLDAiKyJaIn0sc3F1YXJlOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChuKS8yO3JldHVy
biJNIistdCsiLCIrLXQrIkwiK3QrIiwiKy10KyIgIit0KyIsIit0KyIgIistdCsiLCIrdCsiWiJ9
LCJ0cmlhbmdsZS1kb3duIjpmdW5jdGlvbihuKXt2YXIgdD1NYXRoLnNxcnQobi9FcyksZT10KkVz
LzI7cmV0dXJuIk0wLCIrZSsiTCIrdCsiLCIrLWUrIiAiKy10KyIsIistZSsiWiJ9LCJ0cmlhbmds
ZS11cCI6ZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5zcXJ0KG4vRXMpLGU9dCpFcy8yO3JldHVybiJN
MCwiKy1lKyJMIit0KyIsIitlKyIgIistdCsiLCIrZSsiWiJ9fSk7Wm8uc3ZnLnN5bWJvbFR5cGVz
PXdzLmtleXMoKTt2YXIgU3Msa3MsRXM9TWF0aC5zcXJ0KDMpLEFzPU1hdGgudGFuKDMwKkFhKSxD
cz1bXSxOcz0wO0NzLmNhbGw9cGEuY2FsbCxDcy5lbXB0eT1wYS5lbXB0eSxDcy5ub2RlPXBhLm5v
ZGUsQ3Muc2l6ZT1wYS5zaXplLFpvLnRyYW5zaXRpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/U3M/bi50cmFuc2l0aW9uKCk6bjptYS50cmFuc2l0aW9uKCl9LFpvLnRyYW5z
aXRpb24ucHJvdG90eXBlPUNzLENzLnNlbGVjdD1mdW5jdGlvbihuKXt2YXIgdCxlLHIsdT10aGlz
LmlkLGk9W107bj1iKG4pO2Zvcih2YXIgbz0tMSxhPXRoaXMubGVuZ3RoOysrbzxhOyl7aS5wdXNo
KHQ9W10pO2Zvcih2YXIgYz10aGlzW29dLHM9LTEsbD1jLmxlbmd0aDsrK3M8bDspKHI9Y1tzXSkm
JihlPW4uY2FsbChyLHIuX19kYXRhX18scyxvKSk/KCJfX2RhdGFfXyJpbiByJiYoZS5fX2RhdGFf
Xz1yLl9fZGF0YV9fKSxQbyhlLHMsdSxyLl9fdHJhbnNpdGlvbl9fW3VdKSx0LnB1c2goZSkpOnQu
cHVzaChudWxsKX1yZXR1cm4gcW8oaSx1KX0sQ3Muc2VsZWN0QWxsPWZ1bmN0aW9uKG4pe3ZhciB0
LGUscix1LGksbz10aGlzLmlkLGE9W107bj13KG4pO2Zvcih2YXIgYz0tMSxzPXRoaXMubGVuZ3Ro
OysrYzxzOylmb3IodmFyIGw9dGhpc1tjXSxmPS0xLGg9bC5sZW5ndGg7KytmPGg7KWlmKHI9bFtm
XSl7aT1yLl9fdHJhbnNpdGlvbl9fW29dLGU9bi5jYWxsKHIsci5fX2RhdGFfXyxmLGMpLGEucHVz
aCh0PVtdKTtmb3IodmFyIGc9LTEscD1lLmxlbmd0aDsrK2c8cDspKHU9ZVtnXSkmJlBvKHUsZyxv
LGkpLHQucHVzaCh1KX1yZXR1cm4gcW8oYSxvKX0sQ3MuZmlsdGVyPWZ1bmN0aW9uKG4pe3ZhciB0
LGUscix1PVtdOyJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj1SKG4pKTtmb3IodmFyIGk9MCxvPXRo
aXMubGVuZ3RoO28+aTtpKyspe3UucHVzaCh0PVtdKTtmb3IodmFyIGU9dGhpc1tpXSxhPTAsYz1l
Lmxlbmd0aDtjPmE7YSsrKShyPWVbYV0pJiZuLmNhbGwocixyLl9fZGF0YV9fLGEsaSkmJnQucHVz
aChyKX1yZXR1cm4gcW8odSx0aGlzLmlkKX0sQ3MudHdlZW49ZnVuY3Rpb24obix0KXt2YXIgZT10
aGlzLmlkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/dGhpcy5ub2RlKCkuX190cmFuc2l0aW9u
X19bZV0udHdlZW4uZ2V0KG4pOlAodGhpcyxudWxsPT10P2Z1bmN0aW9uKHQpe3QuX190cmFuc2l0
aW9uX19bZV0udHdlZW4ucmVtb3ZlKG4pfTpmdW5jdGlvbihyKXtyLl9fdHJhbnNpdGlvbl9fW2Vd
LnR3ZWVuLnNldChuLHQpfSl9LENzLmF0dHI9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKCl7dGhp
cy5yZW1vdmVBdHRyaWJ1dGUoYSl9ZnVuY3Rpb24gcigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMo
YS5zcGFjZSxhLmxvY2FsKX1mdW5jdGlvbiB1KG4pe3JldHVybiBudWxsPT1uP2U6KG4rPSIiLGZ1
bmN0aW9uKCl7dmFyIHQsZT10aGlzLmdldEF0dHJpYnV0ZShhKTtyZXR1cm4gZSE9PW4mJih0PW8o
ZSxuKSxmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZShhLHQobikpfSl9KX1mdW5jdGlvbiBp
KG4pe3JldHVybiBudWxsPT1uP3I6KG4rPSIiLGZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLmdldEF0
dHJpYnV0ZU5TKGEuc3BhY2UsYS5sb2NhbCk7cmV0dXJuIGUhPT1uJiYodD1vKGUsbiksZnVuY3Rp
b24obil7dGhpcy5zZXRBdHRyaWJ1dGVOUyhhLnNwYWNlLGEubG9jYWwsdChuKSl9KX0pfWlmKGFy
Z3VtZW50cy5sZW5ndGg8Mil7Zm9yKHQgaW4gbil0aGlzLmF0dHIodCxuW3RdKTtyZXR1cm4gdGhp
c312YXIgbz0idHJhbnNmb3JtIj09bj9EdTpodSxhPVpvLm5zLnF1YWxpZnkobik7cmV0dXJuIFJv
KHRoaXMsImF0dHIuIituLHQsYS5sb2NhbD9pOnUpfSxDcy5hdHRyVHdlZW49ZnVuY3Rpb24obix0
KXtmdW5jdGlvbiBlKG4sZSl7dmFyIHI9dC5jYWxsKHRoaXMsbixlLHRoaXMuZ2V0QXR0cmlidXRl
KHUpKTtyZXR1cm4gciYmZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodSxyKG4pKX19ZnVu
Y3Rpb24gcihuLGUpe3ZhciByPXQuY2FsbCh0aGlzLG4sZSx0aGlzLmdldEF0dHJpYnV0ZU5TKHUu
c3BhY2UsdS5sb2NhbCkpO3JldHVybiByJiZmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5T
KHUuc3BhY2UsdS5sb2NhbCxyKG4pKX19dmFyIHU9Wm8ubnMucXVhbGlmeShuKTtyZXR1cm4gdGhp
cy50d2VlbigiYXR0ci4iK24sdS5sb2NhbD9yOmUpfSxDcy5zdHlsZT1mdW5jdGlvbihuLHQsZSl7
ZnVuY3Rpb24gcigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobil9ZnVuY3Rpb24gdSh0KXty
ZXR1cm4gbnVsbD09dD9yOih0Kz0iIixmdW5jdGlvbigpe3ZhciByLHU9V28uZ2V0Q29tcHV0ZWRT
dHlsZSh0aGlzLG51bGwpLmdldFByb3BlcnR5VmFsdWUobik7cmV0dXJuIHUhPT10JiYocj1odSh1
LHQpLGZ1bmN0aW9uKHQpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobixyKHQpLGUpfSl9KX12YXIg
aT1hcmd1bWVudHMubGVuZ3RoO2lmKDM+aSl7aWYoInN0cmluZyIhPXR5cGVvZiBuKXsyPmkmJih0
PSIiKTtmb3IoZSBpbiBuKXRoaXMuc3R5bGUoZSxuW2VdLHQpO3JldHVybiB0aGlzfWU9IiJ9cmV0
dXJuIFJvKHRoaXMsInN0eWxlLiIrbix0LHUpfSxDcy5zdHlsZVR3ZWVuPWZ1bmN0aW9uKG4sdCxl
KXtmdW5jdGlvbiByKHIsdSl7dmFyIGk9dC5jYWxsKHRoaXMscix1LFdvLmdldENvbXB1dGVkU3R5
bGUodGhpcyxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKG4pKTtyZXR1cm4gaSYmZnVuY3Rpb24odCl7
dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLGkodCksZSl9fXJldHVybiBhcmd1bWVudHMubGVuZ3Ro
PDMmJihlPSIiKSx0aGlzLnR3ZWVuKCJzdHlsZS4iK24scil9LENzLnRleHQ9ZnVuY3Rpb24obil7
cmV0dXJuIFJvKHRoaXMsInRleHQiLG4sRG8pfSxDcy5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5lYWNoKCJlbmQudHJhbnNpdGlvbiIsZnVuY3Rpb24oKXt2YXIgbjt0aGlzLl9fdHJhbnNp
dGlvbl9fLmNvdW50PDImJihuPXRoaXMucGFyZW50Tm9kZSkmJm4ucmVtb3ZlQ2hpbGQodGhpcyl9
KX0sQ3MuZWFzZT1mdW5jdGlvbihuKXt2YXIgdD10aGlzLmlkO3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPDE/dGhpcy5ub2RlKCkuX190cmFuc2l0aW9uX19bdF0uZWFzZTooImZ1bmN0aW9uIiE9dHlw
ZW9mIG4mJihuPVpvLmVhc2UuYXBwbHkoWm8sYXJndW1lbnRzKSksUCh0aGlzLGZ1bmN0aW9uKGUp
e2UuX190cmFuc2l0aW9uX19bdF0uZWFzZT1ufSkpfSxDcy5kZWxheT1mdW5jdGlvbihuKXt2YXIg
dD10aGlzLmlkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/dGhpcy5ub2RlKCkuX190cmFuc2l0
aW9uX19bdF0uZGVsYXk6UCh0aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0aW9uKGUscix1
KXtlLl9fdHJhbnNpdGlvbl9fW3RdLmRlbGF5PStuLmNhbGwoZSxlLl9fZGF0YV9fLHIsdSl9Oihu
PStuLGZ1bmN0aW9uKGUpe2UuX190cmFuc2l0aW9uX19bdF0uZGVsYXk9bn0pKX0sQ3MuZHVyYXRp
b249ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP3Ro
aXMubm9kZSgpLl9fdHJhbnNpdGlvbl9fW3RdLmR1cmF0aW9uOlAodGhpcywiZnVuY3Rpb24iPT10
eXBlb2Ygbj9mdW5jdGlvbihlLHIsdSl7ZS5fX3RyYW5zaXRpb25fX1t0XS5kdXJhdGlvbj1NYXRo
Lm1heCgxLG4uY2FsbChlLGUuX19kYXRhX18scix1KSl9OihuPU1hdGgubWF4KDEsbiksZnVuY3Rp
b24oZSl7ZS5fX3RyYW5zaXRpb25fX1t0XS5kdXJhdGlvbj1ufSkpfSxDcy5lYWNoPWZ1bmN0aW9u
KG4sdCl7dmFyIGU9dGhpcy5pZDtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciByPWtzLHU9U3M7
U3M9ZSxQKHRoaXMsZnVuY3Rpb24odCxyLHUpe2tzPXQuX190cmFuc2l0aW9uX19bZV0sbi5jYWxs
KHQsdC5fX2RhdGFfXyxyLHUpfSksa3M9cixTcz11fWVsc2UgUCh0aGlzLGZ1bmN0aW9uKHIpe3Zh
ciB1PXIuX190cmFuc2l0aW9uX19bZV07KHUuZXZlbnR8fCh1LmV2ZW50PVpvLmRpc3BhdGNoKCJz
dGFydCIsImVuZCIpKSkub24obix0KX0pO3JldHVybiB0aGlzfSxDcy50cmFuc2l0aW9uPWZ1bmN0
aW9uKCl7Zm9yKHZhciBuLHQsZSxyLHU9dGhpcy5pZCxpPSsrTnMsbz1bXSxhPTAsYz10aGlzLmxl
bmd0aDtjPmE7YSsrKXtvLnB1c2gobj1bXSk7Zm9yKHZhciB0PXRoaXNbYV0scz0wLGw9dC5sZW5n
dGg7bD5zO3MrKykoZT10W3NdKSYmKHI9T2JqZWN0LmNyZWF0ZShlLl9fdHJhbnNpdGlvbl9fW3Vd
KSxyLmRlbGF5Kz1yLmR1cmF0aW9uLFBvKGUscyxpLHIpKSxuLnB1c2goZSl9cmV0dXJuIHFvKG8s
aSl9LFpvLnN2Zy5heGlzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtuLmVhY2goZnVuY3Rpb24o
KXt2YXIgbixzPVpvLnNlbGVjdCh0aGlzKSxsPXRoaXMuX19jaGFydF9ffHxlLGY9dGhpcy5fX2No
YXJ0X189ZS5jb3B5KCksaD1udWxsPT1jP2YudGlja3M/Zi50aWNrcy5hcHBseShmLGEpOmYuZG9t
YWluKCk6YyxnPW51bGw9PXQ/Zi50aWNrRm9ybWF0P2YudGlja0Zvcm1hdC5hcHBseShmLGEpOnd0
OnQscD1zLnNlbGVjdEFsbCgiLnRpY2siKS5kYXRhKGgsZiksdj1wLmVudGVyKCkuaW5zZXJ0KCJn
IiwiLmRvbWFpbiIpLmF0dHIoImNsYXNzIiwidGljayIpLnN0eWxlKCJvcGFjaXR5IixrYSksZD1a
by50cmFuc2l0aW9uKHAuZXhpdCgpKS5zdHlsZSgib3BhY2l0eSIsa2EpLnJlbW92ZSgpLG09Wm8u
dHJhbnNpdGlvbihwLm9yZGVyKCkpLnN0eWxlKCJvcGFjaXR5IiwxKSx5PVRpKGYpLHg9cy5zZWxl
Y3RBbGwoIi5kb21haW4iKS5kYXRhKFswXSksTT0oeC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0
dHIoImNsYXNzIiwiZG9tYWluIiksWm8udHJhbnNpdGlvbih4KSk7di5hcHBlbmQoImxpbmUiKSx2
LmFwcGVuZCgidGV4dCIpO3ZhciBfPXYuc2VsZWN0KCJsaW5lIiksYj1tLnNlbGVjdCgibGluZSIp
LHc9cC5zZWxlY3QoInRleHQiKS50ZXh0KGcpLFM9di5zZWxlY3QoInRleHQiKSxrPW0uc2VsZWN0
KCJ0ZXh0Iik7c3dpdGNoKHIpe2Nhc2UiYm90dG9tIjpuPVVvLF8uYXR0cigieTIiLHUpLFMuYXR0
cigieSIsTWF0aC5tYXgodSwwKStvKSxiLmF0dHIoIngyIiwwKS5hdHRyKCJ5MiIsdSksay5hdHRy
KCJ4IiwwKS5hdHRyKCJ5IixNYXRoLm1heCh1LDApK28pLHcuYXR0cigiZHkiLCIuNzFlbSIpLnN0
eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLE0uYXR0cigiZCIsIk0iK3lbMF0rIiwiK2krIlYw
SCIreVsxXSsiViIraSk7YnJlYWs7Y2FzZSJ0b3AiOm49VW8sXy5hdHRyKCJ5MiIsLXUpLFMuYXR0
cigieSIsLShNYXRoLm1heCh1LDApK28pKSxiLmF0dHIoIngyIiwwKS5hdHRyKCJ5MiIsLXUpLGsu
YXR0cigieCIsMCkuYXR0cigieSIsLShNYXRoLm1heCh1LDApK28pKSx3LmF0dHIoImR5IiwiMGVt
Iikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksTS5hdHRyKCJkIiwiTSIreVswXSsiLCIr
LWkrIlYwSCIreVsxXSsiViIrLWkpO2JyZWFrO2Nhc2UibGVmdCI6bj1qbyxfLmF0dHIoIngyIiwt
dSksUy5hdHRyKCJ4IiwtKE1hdGgubWF4KHUsMCkrbykpLGIuYXR0cigieDIiLC11KS5hdHRyKCJ5
MiIsMCksay5hdHRyKCJ4IiwtKE1hdGgubWF4KHUsMCkrbykpLmF0dHIoInkiLDApLHcuYXR0cigi
ZHkiLCIuMzJlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsImVuZCIpLE0uYXR0cigiZCIsIk0iKy1p
KyIsIit5WzBdKyJIMFYiK3lbMV0rIkgiKy1pKTticmVhaztjYXNlInJpZ2h0IjpuPWpvLF8uYXR0
cigieDIiLHUpLFMuYXR0cigieCIsTWF0aC5tYXgodSwwKStvKSxiLmF0dHIoIngyIix1KS5hdHRy
KCJ5MiIsMCksay5hdHRyKCJ4IixNYXRoLm1heCh1LDApK28pLmF0dHIoInkiLDApLHcuYXR0cigi
ZHkiLCIuMzJlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsInN0YXJ0IiksTS5hdHRyKCJkIiwiTSIr
aSsiLCIreVswXSsiSDBWIit5WzFdKyJIIitpKX1pZihmLnJhbmdlQmFuZCl7dmFyIEU9ZixBPUUu
cmFuZ2VCYW5kKCkvMjtsPWY9ZnVuY3Rpb24obil7cmV0dXJuIEUobikrQX19ZWxzZSBsLnJhbmdl
QmFuZD9sPWY6ZC5jYWxsKG4sZik7di5jYWxsKG4sbCksbS5jYWxsKG4sZil9KX12YXIgdCxlPVpv
LnNjYWxlLmxpbmVhcigpLHI9enMsdT02LGk9NixvPTMsYT1bMTBdLGM9bnVsbDtyZXR1cm4gbi5z
Y2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4ub3Jp
ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQgaW4gTHM/dCsiIjp6
cyxuKTpyfSxuLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9YXJn
dW1lbnRzLG4pOmF9LG4udGlja1ZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oYz10LG4pOmN9LG4udGlja0Zvcm1hdD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odD1lLG4pOnR9LG4udGlja1NpemU9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRz
Lmxlbmd0aDtyZXR1cm4gZT8odT0rdCxpPSthcmd1bWVudHNbZS0xXSxuKTp1fSxuLmlubmVyVGlj
a1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9K3Qsbik6dX0sbi5v
dXRlclRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSt0LG4p
Oml9LG4udGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89
K3Qsbik6b30sbi50aWNrU3ViZGl2aWRlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGgmJm59LG59O3ZhciB6cz0iYm90dG9tIixMcz17dG9wOjEscmlnaHQ6MSxib3R0b206MSxsZWZ0
OjF9O1pvLnN2Zy5icnVzaD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oaSl7aS5lYWNoKGZ1bmN0aW9u
KCl7dmFyIGk9Wm8uc2VsZWN0KHRoaXMpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLnN0
eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIikub24oIm1v
dXNlZG93bi5icnVzaCIsdSkub24oInRvdWNoc3RhcnQuYnJ1c2giLHUpLG89aS5zZWxlY3RBbGwo
Ii5iYWNrZ3JvdW5kIikuZGF0YShbMF0pO28uZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJj
bGFzcyIsImJhY2tncm91bmQiKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpLnN0eWxlKCJj
dXJzb3IiLCJjcm9zc2hhaXIiKSxpLnNlbGVjdEFsbCgiLmV4dGVudCIpLmRhdGEoWzBdKS5lbnRl
cigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwiZXh0ZW50Iikuc3R5bGUoImN1cnNvciIs
Im1vdmUiKTt2YXIgYT1pLnNlbGVjdEFsbCgiLnJlc2l6ZSIpLmRhdGEocCx3dCk7YS5leGl0KCku
cmVtb3ZlKCksYS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIixmdW5jdGlvbihuKXty
ZXR1cm4icmVzaXplICIrbn0pLnN0eWxlKCJjdXJzb3IiLGZ1bmN0aW9uKG4pe3JldHVybiBUc1tu
XX0pLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLGZ1bmN0aW9uKG4pe3JldHVybi9bZXddJC8udGVz
dChuKT8tMzpudWxsfSkuYXR0cigieSIsZnVuY3Rpb24obil7cmV0dXJuL15bbnNdLy50ZXN0KG4p
Py0zOm51bGx9KS5hdHRyKCJ3aWR0aCIsNikuYXR0cigiaGVpZ2h0Iiw2KS5zdHlsZSgidmlzaWJp
bGl0eSIsImhpZGRlbiIpLGEuc3R5bGUoImRpc3BsYXkiLG4uZW1wdHkoKT8ibm9uZSI6bnVsbCk7
dmFyIGwsZj1aby50cmFuc2l0aW9uKGkpLGg9Wm8udHJhbnNpdGlvbihvKTtjJiYobD1UaShjKSxo
LmF0dHIoIngiLGxbMF0pLmF0dHIoIndpZHRoIixsWzFdLWxbMF0pLGUoZikpLHMmJihsPVRpKHMp
LGguYXR0cigieSIsbFswXSkuYXR0cigiaGVpZ2h0IixsWzFdLWxbMF0pLHIoZikpLHQoZil9KX1m
dW5jdGlvbiB0KG4pe24uc2VsZWN0QWxsKCIucmVzaXplIikuYXR0cigidHJhbnNmb3JtIixmdW5j
dGlvbihuKXtyZXR1cm4idHJhbnNsYXRlKCIrbFsrL2UkLy50ZXN0KG4pXSsiLCIrZlsrL15zLy50
ZXN0KG4pXSsiKSJ9KX1mdW5jdGlvbiBlKG4pe24uc2VsZWN0KCIuZXh0ZW50IikuYXR0cigieCIs
bFswXSksbi5zZWxlY3RBbGwoIi5leHRlbnQsLm4+cmVjdCwucz5yZWN0IikuYXR0cigid2lkdGgi
LGxbMV0tbFswXSl9ZnVuY3Rpb24gcihuKXtuLnNlbGVjdCgiLmV4dGVudCIpLmF0dHIoInkiLGZb
MF0pLG4uc2VsZWN0QWxsKCIuZXh0ZW50LC5lPnJlY3QsLnc+cmVjdCIpLmF0dHIoImhlaWdodCIs
ZlsxXS1mWzBdKX1mdW5jdGlvbiB1KCl7ZnVuY3Rpb24gdSgpezMyPT1aby5ldmVudC5rZXlDb2Rl
JiYoQ3x8KHg9bnVsbCx6WzBdLT1sWzFdLHpbMV0tPWZbMV0sQz0yKSx5KCkpfWZ1bmN0aW9uIHAo
KXszMj09Wm8uZXZlbnQua2V5Q29kZSYmMj09QyYmKHpbMF0rPWxbMV0selsxXSs9ZlsxXSxDPTAs
eSgpKX1mdW5jdGlvbiB2KCl7dmFyIG49Wm8ubW91c2UoXyksdT0hMTtNJiYoblswXSs9TVswXSxu
WzFdKz1NWzFdKSxDfHwoWm8uZXZlbnQuYWx0S2V5Pyh4fHwoeD1bKGxbMF0rbFsxXSkvMiwoZlsw
XStmWzFdKS8yXSkselswXT1sWysoblswXTx4WzBdKV0selsxXT1mWysoblsxXTx4WzFdKV0pOng9
bnVsbCksRSYmZChuLGMsMCkmJihlKFMpLHU9ITApLEEmJmQobixzLDEpJiYocihTKSx1PSEwKSx1
JiYodChTKSx3KHt0eXBlOiJicnVzaCIsbW9kZTpDPyJtb3ZlIjoicmVzaXplIn0pKX1mdW5jdGlv
biBkKG4sdCxlKXt2YXIgcix1LGE9VGkodCksYz1hWzBdLHM9YVsxXSxwPXpbZV0sdj1lP2Y6bCxk
PXZbMV0tdlswXTtyZXR1cm4gQyYmKGMtPXAscy09ZCtwKSxyPShlP2c6aCk/TWF0aC5tYXgoYyxN
YXRoLm1pbihzLG5bZV0pKTpuW2VdLEM/dT0ocis9cCkrZDooeCYmKHA9TWF0aC5tYXgoYyxNYXRo
Lm1pbihzLDIqeFtlXS1yKSkpLHI+cD8odT1yLHI9cCk6dT1wKSx2WzBdIT1yfHx2WzFdIT11Pyhl
P289bnVsbDppPW51bGwsdlswXT1yLHZbMV09dSwhMCk6dm9pZCAwfWZ1bmN0aW9uIG0oKXt2KCks
Uy5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKS5zZWxlY3RBbGwoIi5yZXNpemUiKS5zdHls
ZSgiZGlzcGxheSIsbi5lbXB0eSgpPyJub25lIjpudWxsKSxaby5zZWxlY3QoImJvZHkiKS5zdHls
ZSgiY3Vyc29yIixudWxsKSxMLm9uKCJtb3VzZW1vdmUuYnJ1c2giLG51bGwpLm9uKCJtb3VzZXVw
LmJydXNoIixudWxsKS5vbigidG91Y2htb3ZlLmJydXNoIixudWxsKS5vbigidG91Y2hlbmQuYnJ1
c2giLG51bGwpLm9uKCJrZXlkb3duLmJydXNoIixudWxsKS5vbigia2V5dXAuYnJ1c2giLG51bGwp
LE4oKSx3KHt0eXBlOiJicnVzaGVuZCJ9KX12YXIgeCxNLF89dGhpcyxiPVpvLnNlbGVjdChaby5l
dmVudC50YXJnZXQpLHc9YS5vZihfLGFyZ3VtZW50cyksUz1aby5zZWxlY3QoXyksaz1iLmRhdHVt
KCksRT0hL14obnxzKSQvLnRlc3QoaykmJmMsQT0hL14oZXx3KSQvLnRlc3QoaykmJnMsQz1iLmNs
YXNzZWQoImV4dGVudCIpLE49SSgpLHo9Wm8ubW91c2UoXyksTD1aby5zZWxlY3QoV28pLm9uKCJr
ZXlkb3duLmJydXNoIix1KS5vbigia2V5dXAuYnJ1c2giLHApO2lmKFpvLmV2ZW50LmNoYW5nZWRU
b3VjaGVzP0wub24oInRvdWNobW92ZS5icnVzaCIsdikub24oInRvdWNoZW5kLmJydXNoIixtKTpM
Lm9uKCJtb3VzZW1vdmUuYnJ1c2giLHYpLm9uKCJtb3VzZXVwLmJydXNoIixtKSxTLmludGVycnVw
dCgpLnNlbGVjdEFsbCgiKiIpLmludGVycnVwdCgpLEMpelswXT1sWzBdLXpbMF0selsxXT1mWzBd
LXpbMV07ZWxzZSBpZihrKXt2YXIgVD0rL3ckLy50ZXN0KGspLHE9Ky9ebi8udGVzdChrKTtNPVts
WzEtVF0telswXSxmWzEtcV0telsxXV0selswXT1sW1RdLHpbMV09ZltxXX1lbHNlIFpvLmV2ZW50
LmFsdEtleSYmKHg9ei5zbGljZSgpKTtTLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKS5z
ZWxlY3RBbGwoIi5yZXNpemUiKS5zdHlsZSgiZGlzcGxheSIsbnVsbCksWm8uc2VsZWN0KCJib2R5
Iikuc3R5bGUoImN1cnNvciIsYi5zdHlsZSgiY3Vyc29yIikpLHcoe3R5cGU6ImJydXNoc3RhcnQi
fSksdigpfXZhciBpLG8sYT1NKG4sImJydXNoc3RhcnQiLCJicnVzaCIsImJydXNoZW5kIiksYz1u
dWxsLHM9bnVsbCxsPVswLDBdLGY9WzAsMF0saD0hMCxnPSEwLHA9cXNbMF07cmV0dXJuIG4uZXZl
bnQ9ZnVuY3Rpb24obil7bi5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49YS5vZih0aGlzLGFyZ3VtZW50
cyksdD17eDpsLHk6ZixpOmksajpvfSxlPXRoaXMuX19jaGFydF9ffHx0O3RoaXMuX19jaGFydF9f
PXQsU3M/Wm8uc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24oKS5lYWNoKCJzdGFydC5icnVzaCIsZnVu
Y3Rpb24oKXtpPWUuaSxvPWUuaixsPWUueCxmPWUueSxuKHt0eXBlOiJicnVzaHN0YXJ0In0pfSku
dHdlZW4oImJydXNoOmJydXNoIixmdW5jdGlvbigpe3ZhciBlPWd1KGwsdC54KSxyPWd1KGYsdC55
KTtyZXR1cm4gaT1vPW51bGwsZnVuY3Rpb24odSl7bD10Lng9ZSh1KSxmPXQueT1yKHUpLG4oe3R5
cGU6ImJydXNoIixtb2RlOiJyZXNpemUifSl9fSkuZWFjaCgiZW5kLmJydXNoIixmdW5jdGlvbigp
e2k9dC5pLG89dC5qLG4oe3R5cGU6ImJydXNoIixtb2RlOiJyZXNpemUifSksbih7dHlwZToiYnJ1
c2hlbmQifSl9KToobih7dHlwZToiYnJ1c2hzdGFydCJ9KSxuKHt0eXBlOiJicnVzaCIsbW9kZToi
cmVzaXplIn0pLG4oe3R5cGU6ImJydXNoZW5kIn0pKX0pfSxuLng9ZnVuY3Rpb24odCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGM9dCxwPXFzWyFjPDwxfCFzXSxuKTpjfSxuLnk9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9dCxwPXFzWyFjPDwxfCFzXSxuKTpzfSxuLmNs
YW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjJiZzPyhoPSEhdFswXSxn
PSEhdFsxXSk6Yz9oPSEhdDpzJiYoZz0hIXQpLG4pOmMmJnM/W2gsZ106Yz9oOnM/ZzpudWxsfSxu
LmV4dGVudD1mdW5jdGlvbih0KXt2YXIgZSxyLHUsYSxoO3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhjJiYoZT10WzBdLHI9dFsxXSxzJiYoZT1lWzBdLHI9clswXSksaT1bZSxyXSxjLmludmVydCYm
KGU9YyhlKSxyPWMocikpLGU+ciYmKGg9ZSxlPXIscj1oKSwoZSE9bFswXXx8ciE9bFsxXSkmJihs
PVtlLHJdKSkscyYmKHU9dFswXSxhPXRbMV0sYyYmKHU9dVsxXSxhPWFbMV0pLG89W3UsYV0scy5p
bnZlcnQmJih1PXModSksYT1zKGEpKSx1PmEmJihoPXUsdT1hLGE9aCksKHUhPWZbMF18fGEhPWZb
MV0pJiYoZj1bdSxhXSkpLG4pOihjJiYoaT8oZT1pWzBdLHI9aVsxXSk6KGU9bFswXSxyPWxbMV0s
Yy5pbnZlcnQmJihlPWMuaW52ZXJ0KGUpLHI9Yy5pbnZlcnQocikpLGU+ciYmKGg9ZSxlPXIscj1o
KSkpLHMmJihvPyh1PW9bMF0sYT1vWzFdKToodT1mWzBdLGE9ZlsxXSxzLmludmVydCYmKHU9cy5p
bnZlcnQodSksYT1zLmludmVydChhKSksdT5hJiYoaD11LHU9YSxhPWgpKSksYyYmcz9bW2UsdV0s
W3IsYV1dOmM/W2Uscl06cyYmW3UsYV0pfSxuLmNsZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIG4uZW1w
dHkoKXx8KGw9WzAsMF0sZj1bMCwwXSxpPW89bnVsbCksbn0sbi5lbXB0eT1mdW5jdGlvbigpe3Jl
dHVybiEhYyYmbFswXT09bFsxXXx8ISFzJiZmWzBdPT1mWzFdfSxaby5yZWJpbmQobixhLCJvbiIp
fTt2YXIgVHM9e246Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3
LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6
ZSIsc3c6Im5lc3ctcmVzaXplIn0scXM9W1sibiIsImUiLCJzIiwidyIsIm53IiwibmUiLCJzZSIs
InN3Il0sWyJlIiwidyJdLFsibiIsInMiXSxbXV0sUnM9UWEuZm9ybWF0PWljLnRpbWVGb3JtYXQs
RHM9UnMudXRjLFBzPURzKCIlWS0lbS0lZFQlSDolTTolUy4lTFoiKTtScy5pc289RGF0ZS5wcm90
b3R5cGUudG9JU09TdHJpbmcmJituZXcgRGF0ZSgiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaIik/
SG86UHMsSG8ucGFyc2U9ZnVuY3Rpb24obil7dmFyIHQ9bmV3IERhdGUobik7cmV0dXJuIGlzTmFO
KHQpP251bGw6dH0sSG8udG9TdHJpbmc9UHMudG9TdHJpbmcsUWEuc2Vjb25kPUR0KGZ1bmN0aW9u
KG4pe3JldHVybiBuZXcgbmMoMWUzKk1hdGguZmxvb3Iobi8xZTMpKX0sZnVuY3Rpb24obix0KXtu
LnNldFRpbWUobi5nZXRUaW1lKCkrMWUzKk1hdGguZmxvb3IodCkpfSxmdW5jdGlvbihuKXtyZXR1
cm4gbi5nZXRTZWNvbmRzKCl9KSxRYS5zZWNvbmRzPVFhLnNlY29uZC5yYW5nZSxRYS5zZWNvbmRz
LnV0Yz1RYS5zZWNvbmQudXRjLnJhbmdlLFFhLm1pbnV0ZT1EdChmdW5jdGlvbihuKXtyZXR1cm4g
bmV3IG5jKDZlNCpNYXRoLmZsb29yKG4vNmU0KSl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKG4u
Z2V0VGltZSgpKzZlNCpNYXRoLmZsb29yKHQpKX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0TWlu
dXRlcygpfSksUWEubWludXRlcz1RYS5taW51dGUucmFuZ2UsUWEubWludXRlcy51dGM9UWEubWlu
dXRlLnV0Yy5yYW5nZSxRYS5ob3VyPUR0KGZ1bmN0aW9uKG4pe3ZhciB0PW4uZ2V0VGltZXpvbmVP
ZmZzZXQoKS82MDtyZXR1cm4gbmV3IG5jKDM2ZTUqKE1hdGguZmxvb3Iobi8zNmU1LXQpK3QpKX0s
ZnVuY3Rpb24obix0KXtuLnNldFRpbWUobi5nZXRUaW1lKCkrMzZlNSpNYXRoLmZsb29yKHQpKX0s
ZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0SG91cnMoKX0pLFFhLmhvdXJzPVFhLmhvdXIucmFuZ2Us
UWEuaG91cnMudXRjPVFhLmhvdXIudXRjLnJhbmdlLFFhLm1vbnRoPUR0KGZ1bmN0aW9uKG4pe3Jl
dHVybiBuPVFhLmRheShuKSxuLnNldERhdGUoMSksbn0sZnVuY3Rpb24obix0KXtuLnNldE1vbnRo
KG4uZ2V0TW9udGgoKSt0KX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0TW9udGgoKX0pLFFhLm1v
bnRocz1RYS5tb250aC5yYW5nZSxRYS5tb250aHMudXRjPVFhLm1vbnRoLnV0Yy5yYW5nZTt2YXIg
VXM9WzFlMyw1ZTMsMTVlMywzZTQsNmU0LDNlNSw5ZTUsMThlNSwzNmU1LDEwOGU1LDIxNmU1LDQz
MmU1LDg2NGU1LDE3MjhlNSw2MDQ4ZTUsMjU5MmU2LDc3NzZlNiwzMTUzNmU2XSxqcz1bW1FhLnNl
Y29uZCwxXSxbUWEuc2Vjb25kLDVdLFtRYS5zZWNvbmQsMTVdLFtRYS5zZWNvbmQsMzBdLFtRYS5t
aW51dGUsMV0sW1FhLm1pbnV0ZSw1XSxbUWEubWludXRlLDE1XSxbUWEubWludXRlLDMwXSxbUWEu
aG91ciwxXSxbUWEuaG91ciwzXSxbUWEuaG91ciw2XSxbUWEuaG91ciwxMl0sW1FhLmRheSwxXSxb
UWEuZGF5LDJdLFtRYS53ZWVrLDFdLFtRYS5tb250aCwxXSxbUWEubW9udGgsM10sW1FhLnllYXIs
MV1dLEhzPVJzLm11bHRpKFtbIi4lTCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0TWlsbGlzZWNv
bmRzKCl9XSxbIjolUyIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0U2Vjb25kcygpfV0sWyIlSTol
TSIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0TWludXRlcygpfV0sWyIlSSAlcCIsZnVuY3Rpb24o
bil7cmV0dXJuIG4uZ2V0SG91cnMoKX1dLFsiJWEgJWQiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdl
dERheSgpJiYxIT1uLmdldERhdGUoKX1dLFsiJWIgJWQiLGZ1bmN0aW9uKG4pe3JldHVybiAxIT1u
LmdldERhdGUoKX1dLFsiJUIiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldE1vbnRoKCl9XSxbIiVZ
Iix3ZV1dKSxGcz17cmFuZ2U6ZnVuY3Rpb24obix0LGUpe3JldHVybiBaby5yYW5nZShNYXRoLmNl
aWwobi9lKSplLCt0LGUpLm1hcChPbyl9LGZsb29yOnd0LGNlaWw6d3R9O2pzLnllYXI9UWEueWVh
cixRYS5zY2FsZT1mdW5jdGlvbigpe3JldHVybiBGbyhaby5zY2FsZS5saW5lYXIoKSxqcyxIcyl9
O3ZhciBPcz1qcy5tYXAoZnVuY3Rpb24obil7cmV0dXJuW25bMF0udXRjLG5bMV1dfSksWXM9RHMu
bXVsdGkoW1siLiVMIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENNaWxsaXNlY29uZHMoKX1d
LFsiOiVTIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENTZWNvbmRzKCl9XSxbIiVJOiVNIixm
dW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENNaW51dGVzKCl9XSxbIiVJICVwIixmdW5jdGlvbihu
KXtyZXR1cm4gbi5nZXRVVENIb3VycygpfV0sWyIlYSAlZCIsZnVuY3Rpb24obil7cmV0dXJuIG4u
Z2V0VVRDRGF5KCkmJjEhPW4uZ2V0VVRDRGF0ZSgpfV0sWyIlYiAlZCIsZnVuY3Rpb24obil7cmV0
dXJuIDEhPW4uZ2V0VVRDRGF0ZSgpfV0sWyIlQiIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRD
TW9udGgoKX1dLFsiJVkiLHdlXV0pO09zLnllYXI9UWEueWVhci51dGMsUWEuc2NhbGUudXRjPWZ1
bmN0aW9uKCl7cmV0dXJuIEZvKFpvLnNjYWxlLmxpbmVhcigpLE9zLFlzKX0sWm8udGV4dD1TdChm
dW5jdGlvbihuKXtyZXR1cm4gbi5yZXNwb25zZVRleHR9KSxaby5qc29uPWZ1bmN0aW9uKG4sdCl7
cmV0dXJuIGt0KG4sImFwcGxpY2F0aW9uL2pzb24iLFlvLHQpfSxaby5odG1sPWZ1bmN0aW9uKG4s
dCl7cmV0dXJuIGt0KG4sInRleHQvaHRtbCIsSW8sdCl9LFpvLnhtbD1TdChmdW5jdGlvbihuKXty
ZXR1cm4gbi5yZXNwb25zZVhNTH0pLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5h
bWQ/ZGVmaW5lKFpvKToib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHMmJiht
b2R1bGUuZXhwb3J0cz1abyksdGhpcy5kMz1ab30oKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2Rl
YnVnLXJ1bm5lci9ncmFwaC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZGVidWctcnVubmVyL2dyYXBoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjAyMWY1ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9ncmFwaC5qcwpAQCAtMCwwICsxLDE0MiBAQAorZnVu
Y3Rpb24gZ3JhcGgoc2VsZWN0b3IsIG1hcmdpbnMsIGF4ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGlt
ZU9mZnNldCkKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2Vs
ZWN0b3IpOworICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gJyc7CisKKyAgICB2YXIgc2l6ZSA9IFBv
aW50LmVsZW1lbnRDbGllbnRTaXplKGVsZW1lbnQpLnN1YnRyYWN0KG1hcmdpbnMuc2l6ZSk7CisK
KyAgICB2YXIgeCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAucmFuZ2UoWzAsIHNp
emUud2lkdGhdKQorICAgICAgICAgICAgLmRvbWFpbihkMy5leHRlbnQoc2FtcGxlcywgZnVuY3Rp
b24oZCkgeyByZXR1cm4gZC50aW1lT2Zmc2V0OyB9KSk7ICAgICAgICAgICAgCisKKyAgICB2YXIg
eUxlZnQgPSBkMy5zY2FsZS5saW5lYXIoKQorICAgICAgICAgICAgLnJhbmdlKFtzaXplLmhlaWdo
dCwgMF0pCisgICAgICAgICAgICAuZG9tYWluKFswLCBkMy5tYXgoc2FtcGxlcywgZnVuY3Rpb24o
ZCkgeyByZXR1cm4gZC52YWx1ZXNbMF07IH0pXSk7CisKKyAgICB2YXIgeVJpZ2h0ID0gZDMuc2Nh
bGUubGluZWFyKCkKKyAgICAgICAgICAgIC5yYW5nZShbc2l6ZS5oZWlnaHQsIDBdKQorICAgICAg
ICAgICAgLmRvbWFpbihbMCwgZDMubWF4KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQu
dmFsdWVzWzFdOyB9KV0pOworCisgICAgdmFyIHhBeGlzID0gZDMuc3ZnLmF4aXMoKQorICAgICAg
ICAgICAgLnNjYWxlKHgpCisgICAgICAgICAgICAub3JpZW50KCJib3R0b20iKTsKKworICAgIHZh
ciB5QXhpc0xlZnQgPSBkMy5zdmcuYXhpcygpCisgICAgICAgICAgICAuc2NhbGUoeUxlZnQpCisg
ICAgICAgICAgICAub3JpZW50KCJsZWZ0Iik7CisKKyAgICB2YXIgeUF4aXNSaWdodCA9IGQzLnN2
Zy5heGlzKCkKKyAgICAgICAgICAgIC5zY2FsZSh5UmlnaHQpCisgICAgICAgICAgICAub3JpZW50
KCJyaWdodCIpOworCisgICAgdmFyIGxpbmVMZWZ0ID0gZDMuc3ZnLmxpbmUoKQorICAgICAgICAg
ICAgLngoZnVuY3Rpb24oZCkgeyByZXR1cm4geChkLnRpbWVPZmZzZXQpOyB9KQorICAgICAgICAg
ICAgLnkoZnVuY3Rpb24oZCkgeyByZXR1cm4geUxlZnQoZC52YWx1ZXNbMF0pOyB9KTsKKworICAg
IHZhciBsaW5lUmlnaHQgPSBkMy5zdmcubGluZSgpCisgICAgICAgICAgICAueChmdW5jdGlvbihk
KSB7IHJldHVybiB4KGQudGltZU9mZnNldCk7IH0pCisgICAgICAgICAgICAueShmdW5jdGlvbihk
KSB7IHJldHVybiB5UmlnaHQoZC52YWx1ZXNbMV0pOyB9KTsKKworICAgIHNhbXBsZXMuZm9yRWFj
aChmdW5jdGlvbihkKSB7CisgICAgICAgIGQudGltZU9mZnNldCA9ICtkLnRpbWVPZmZzZXQ7Cisg
ICAgICAgIGQudmFsdWVzWzBdID0gK2QudmFsdWVzWzBdOworICAgICAgICBkLnZhbHVlc1sxXSA9
ICtkLnZhbHVlc1sxXTsgICAgICAgIAorICAgIH0pOyAgICAKKworICAgIHZhciBzYW1wbGVkU2Ft
cGxlcyA9IHNhbXBsZXMuZmlsdGVyKGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgcmV0dXJuIGQudGlt
ZU9mZnNldCA+PSBzYW1wbGluZ1RpbWVPZmZzZXQ7CisgICAgfSk7CisgICAgCisgICAgdmFyIG1l
YW5MZWZ0ID0gZDMubWVhbihzYW1wbGVkU2FtcGxlcywgZnVuY3Rpb24oZCkgeworICAgICAgICBy
ZXR1cm4gK2QudmFsdWVzWzBdOworICAgIH0pOworCisgICAgdmFyIG1lYW5SaWdodCA9IGQzLm1l
YW4oc2FtcGxlZFNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgcmV0dXJuICtkLnZhbHVl
c1sxXTsKKyAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB2YXIgc3Zn
ID0gZDMuc2VsZWN0KHNlbGVjdG9yKS5hcHBlbmQoInN2ZyIpCisgICAgICAgIC5hdHRyKCJ3aWR0
aCIsIHNpemUud2lkdGggKyBtYXJnaW5zLmxlZnQgKyBtYXJnaW5zLnJpZ2h0KQorICAgICAgICAu
YXR0cigiaGVpZ2h0Iiwgc2l6ZS5oZWlnaHQgKyBtYXJnaW5zLnRvcCArIG1hcmdpbnMuYm90dG9t
KQorICAgICAgICAuYXBwZW5kKCJnIikKKyAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAi
dHJhbnNsYXRlKCIgKyBtYXJnaW5zLmxlZnQgKyAiLCIgKyBtYXJnaW5zLnRvcCArICIpIik7CisK
KyAgICAvLyB4LWF4aXMKKyAgICBzdmcuYXBwZW5kKCJnIikKKyAgICAgICAgLmF0dHIoImNsYXNz
IiwgInggYXhpcyIpCisgICAgICAgIC5hdHRyKCJmaWxsIiwgInJnYigyMzUsIDIzNSwgMjM1KSIp
CisgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKDAsIiArIHNpemUuaGVpZ2h0
ICsgIikiKQorICAgICAgICAuY2FsbCh4QXhpcykKKyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisg
ICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAgICAgICAgLmF0dHIoIngi
LCBzaXplLndpZHRoKQorICAgICAgICAgICAgLmF0dHIoInkiLCAtNikKKyAgICAgICAgICAgIC5h
dHRyKCJmaWxsIiwgInJnYigyMzUsIDIzNSwgMjM1KSIpCisgICAgICAgICAgICAuc3R5bGUoInRl
eHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAudGV4dCgidGltZSIpOworICAgICAgICAg
ICAgICAgICAKKyAgICAvLyB5TGVmdC1heGlzCisgICAgc3ZnLmFwcGVuZCgiZyIpCisgICAgICAg
IC5hdHRyKCJjbGFzcyIsICJ5IGF4aXMiKQorICAgICAgICAuYXR0cigiZmlsbCIsICIjN0FERDQ5
IikKKyAgICAgICAgLmNhbGwoeUF4aXNMZWZ0KQorICAgICAgICAuYXBwZW5kKCJ0ZXh0IikKKyAg
ICAgICAgICAgIC5hdHRyKCJjbGFzcyIsICJsYWJlbCIpCisgICAgICAgICAgICAuYXR0cigidHJh
bnNmb3JtIiwgInJvdGF0ZSgtOTApIikKKyAgICAgICAgICAgIC5hdHRyKCJ5IiwgNikKKyAgICAg
ICAgICAgIC5hdHRyKCJmaWxsIiwgIiM3QURENDkiKQorICAgICAgICAgICAgLmF0dHIoImR5Iiwg
Ii43MWVtIikKKyAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikKKyAgICAg
ICAgICAgIC50ZXh0KGF4ZXNbMF0pOworCisgICAgLy8geVJpZ2h0LWF4aXMKKyAgICBzdmcuYXBw
ZW5kKCJnIikKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInkgYXhpcyIpCisgICAgICAgIC5hdHRy
KCJmaWxsIiwgIiNGQTQ5MjUiKQorICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0
ZSgiICsgc2l6ZS53aWR0aCArICIsIDApIikKKyAgICAgICAgLmNhbGwoeUF4aXNSaWdodCkKKyAg
ICAgICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwi
KQorICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCisgICAgICAg
ICAgICAuYXR0cigieSIsIDYpCisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICIjRkE0OTI1IikK
KyAgICAgICAgICAgIC5hdHRyKCJkeSIsICIuNzFlbSIpCisgICAgICAgICAgICAuc3R5bGUoInRl
eHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAudGV4dChheGVzWzFdKTsKKworICAgIC8v
IGxlZnQtbWVhbgorICAgIHN2Zy5hcHBlbmQoInN2ZzpsaW5lIikKKyAgICAgICAgLmF0dHIoIngx
IiwgeCgwKSkKKyAgICAgICAgLmF0dHIoIngyIiwgc2l6ZS53aWR0aCkKKyAgICAgICAgLmF0dHIo
InkxIiwgeUxlZnQobWVhbkxlZnQpKQorICAgICAgICAuYXR0cigieTIiLCB5TGVmdChtZWFuTGVm
dCkpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJsZWZ0LW1lYW4iKTsKKworICAgIC8vIHJpZ2h0
LW1lYW4KKyAgICBzdmcuYXBwZW5kKCJzdmc6bGluZSIpCisgICAgICAgIC5hdHRyKCJ4MSIsIHgo
MCkpCisgICAgICAgIC5hdHRyKCJ4MiIsIHNpemUud2lkdGgpCisgICAgICAgIC5hdHRyKCJ5MSIs
IHlSaWdodChtZWFuUmlnaHQpKQorICAgICAgICAuYXR0cigieTIiLCB5UmlnaHQobWVhblJpZ2h0
KSkKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInJpZ2h0LW1lYW4iKTsgICAgICAgIAorCisgICAg
Ly8gc2FtcGxpbmdUaW1lT2Zmc2V0CisgICAgc3ZnLmFwcGVuZCgibGluZSIpCisgICAgICAgIC5h
dHRyKCJ4MSIsIHgoc2FtcGxpbmdUaW1lT2Zmc2V0KSkKKyAgICAgICAgLmF0dHIoIngyIiwgeChz
YW1wbGluZ1RpbWVPZmZzZXQpKQorICAgICAgICAuYXR0cigieTEiLCB5TGVmdCgwKSkKKyAgICAg
ICAgLmF0dHIoInkyIiwgeUxlZnQoeUF4aXNMZWZ0LnNjYWxlKCkuZG9tYWluKClbMV0pKQorICAg
ICAgICAuYXR0cigiY2xhc3MiLCAic2FtcGxlLXRpbWUiKTsKKworICAgIC8vIGxlZnQtc2FtcGxl
cworICAgIHN2Zy5hcHBlbmQoInBhdGgiKQorICAgICAgICAuZGF0dW0oc2FtcGxlcykKKyAgICAg
ICAgLmF0dHIoImNsYXNzIiwgImxlZnQtc2FtcGxlcyIpCisgICAgICAgIC5hdHRyKCJkIiwgbGlu
ZUxlZnQpOworICAgICAgICAKKyAgICAvLyByaWdodC1zYW1wbGVzCisgICAgc3ZnLmFwcGVuZCgi
cGF0aCIpCisgICAgICAgIC5kYXR1bShzYW1wbGVzKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAi
cmlnaHQtc2FtcGxlcyIpCisgICAgICAgIC5hdHRyKCJkIiwgbGluZVJpZ2h0KTsKK30KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVy
L3Rlc3RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1y
dW5uZXIvdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJhZWI2
YgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZGVidWctcnVubmVyL3Rlc3RzLmpzCkBAIC0wLDAgKzEsMjUzIEBACitVdGlsaXRpZXMuZXh0
ZW5kT2JqZWN0KEhlYWRlcnMsIHsKKyAgICBkZXRhaWxzOiBbCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHRpdGxlOiBTdHJpbmdzLnRleHQucmVzdWx0cy5ncmFwaAorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICB0aXRsZTogU3RyaW5ncy50ZXh0LmV4cGVyaW1lbnRzLmNvbXBsZXhp
dHksCisgICAgICAgICAgICBjaGlsZHJlbjoKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHRleHQ6IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBkYXRhW1N0cmluZ3MuanNvbi5leHBlcmltZW50cy5jb21w
bGV4aXR5XVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLmF2ZXJhZ2VdLnRvRml4ZWQoMik7Cisg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImF2
ZXJhZ2UiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHRleHQ6IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIsKxICIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YVtTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0
eV1bU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5wZXJjZW50XS50b0ZpeGVkKDIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIlIgorICAgICAgICAgICAgICAgICAgICAgICAgXS5qb2lu
KCIiKTsKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgY2xhc3NO
YW1lOiBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xhc3NO
YW1lID0gInN0ZGV2IjsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbU3RyaW5n
cy5qc29uLmV4cGVyaW1lbnRzLmNvbXBsZXhpdHldW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMu
cGVyY2VudF0gPj0gMTApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lICs9
ICIgbm9pc3ktcmVzdWx0cyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xhc3NO
YW1lOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB0aXRsZTogU3RyaW5ncy50
ZXh0LmV4cGVyaW1lbnRzLmZyYW1lUmF0ZSwKKyAgICAgICAgICAgIGNoaWxkcmVuOgorICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dDogZnVu
Y3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFbU3RyaW5n
cy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZV1bU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5h
dmVyYWdlXS50b0ZpeGVkKDIpOworICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICBjbGFzc05hbWU6IGZ1bmN0aW9uKGRhdGEsIG9wdGlvbnMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSAiYXZlcmFnZSI7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoTWF0aC5hYnMoZGF0YVtTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuZnJhbWVS
YXRlXVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLmF2ZXJhZ2VdIC0gb3B0aW9uc1siZnJhbWUt
cmF0ZSJdKSA+PSAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArPSAi
IG5vaXN5LXJlc3VsdHMiOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFt
ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICB0ZXh0OiBmdW5jdGlvbihkYXRhKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgZnJhbWVSYXRlRGF0YSA9IGRhdGFbU3RyaW5ncy5qc29u
LmV4cGVyaW1lbnRzLmZyYW1lUmF0ZV07CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICLCsSAiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYW1lUmF0ZURhdGFbU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5wZXJjZW50
XS50b0ZpeGVkKDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIgorICAgICAgICAg
ICAgICAgICAgICAgICAgXS5qb2luKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgY2xhc3NOYW1lID0gInN0ZGV2IjsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGRhdGFbU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZV1bU3RyaW5n
cy5qc29uLm1lYXN1cmVtZW50cy5wZXJjZW50XSA+PSAxMCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGFzc05hbWUgKz0gIiBub2lzeS1yZXN1bHRzIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBjbGFzc05hbWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgXQorfSkKKworLy8vLy8v
Ly8vLy8KKy8vIFN1aXRlcworCitTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkhUTUwgc3VpdGUiLAor
ICAgIFsKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0x
MiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBjaXJjbGVz
IgorICAgICAgICB9LAorICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xl
SGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5hbWU6ICJDU1Mg
Ym91bmNpbmcgY2xpcHBlZCByZWN0cyIKKyAgICAgICAgfSwKKyAgICAgICAgeyAKKyAgICAgICAg
ICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/cGFy
dGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVu
dCIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdo
dD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAgIG5h
bWU6ICJDU1MgYm91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRt
bD9wYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNl
cy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBQTkcgaW1h
Z2VzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJ0ZXh0L2xheWVy
aW5nLXRleHQuaHRtbCIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGxheWVyaW5nIHRleHQiCisg
ICAgICAgIH0sCisgICAgXQorKSk7CisKK1N1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiQ2FudmFzIHN1
aXRlIiwKKyAgICBbCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9MTImcGFydGlj
bGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91
bmNpbmcgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDog
ImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/cGFydGljbGVX
aWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAg
ICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiCisgICAgICAgIH0sCisg
ICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
Y2FudmFzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hh
cGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3Vu
Y2luZyBncmFkaWVudCBjaXJjbGVzIgorICAgICAgICB9LAorICAgICAgICB7IAorICAgICAgICAg
ICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9w
YXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95
aW4teWFuZy5zdmciLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBTVkcgaW1h
Z2VzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1w
YXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFy
dGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAg
ICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFBORyBpbWFnZXMiCisgICAgICAgIH0sCisg
ICAgXQorKSk7CisKK1N1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiU1ZHIHN1aXRlIiwKKyAgICBbCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1z
dmctc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1j
aXJjbGUiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBjaXJjbGVzIiwKKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2Jv
dW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQw
JnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcg
Y2xpcHBlZCByZWN0cyIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDog
ImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0
aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAg
ICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1zdmctaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFn
ZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcg
Ym91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
dXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbD9wYXJ0aWNs
ZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFu
Zy5wbmciLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBQTkcgaW1hZ2VzIgorICAg
ICAgICB9LAorICAgIF0KKykpOworCitTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkJhc2ljIGNhbnZh
cyBwYXRoIHN1aXRlIiwKKyAgICBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBs
ZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZSZsaW5lQ2FwPWJ1dHQiLAor
ICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHNlZ21lbnRzLCBidXR0IGNhcHMiCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFz
LXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZSZsaW5lQ2FwPXJvdW5kIiwKKyAgICAgICAgICAgIG5h
bWU6ICJDYW52YXMgbGluZSBzZWdtZW50cywgcm91bmQgY2FwcyIKKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9w
YXRoVHlwZT1saW5lJmxpbmVDYXA9c3F1YXJlIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMg
bGluZSBzZWdtZW50cywgc3F1YXJlIGNhcHMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGlu
ZVBhdGgmbGluZUpvaW49YmV2ZWwiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHBh
dGgsIGJldmVsIGpvaW4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDog
InNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZVBhdGgmbGluZUpv
aW49cm91bmQiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHBhdGgsIHJvdW5kIGpv
aW4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1w
bGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9bGluZVBhdGgmbGluZUpvaW49bWl0ZXIiLAor
ICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHBhdGgsIG1pdGVyIGpvaW4iCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBh
dGhzLmh0bWw/cGF0aFR5cGU9bGluZVBhdGgmbGluZURhc2g9MSIsCisgICAgICAgICAgICBuYW1l
OiAiQ2FudmFzIGxpbmUgcGF0aCB3aXRoIGRhc2ggcGF0dGVybiIKKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9w
YXRoVHlwZT1xdWFkcmF0aWMiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBxdWFkcmF0aWMg
c2VnbWVudHMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBs
ZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9cXVhZHJhdGljUGF0aCIsCisgICAg
ICAgICAgICBuYW1lOiAiQ2FudmFzIHF1YWRyYXRpYyBwYXRoIgorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3Bh
dGhUeXBlPWJlemllciIsCisgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGJlemllciBzZWdtZW50
cyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBs
ZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1iZXppZXJQYXRoIiwKKyAgICAgICAgICAgIG5h
bWU6ICJDYW52YXMgYmV6aWVyIHBhdGgiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/JnBhdGhUeXBlPWFyY1Rv
IiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgYXJjVG8gc2VnbWVudHMiCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhz
Lmh0bWw/cGF0aFR5cGU9YXJjIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgYXJjIHNlZ21l
bnRzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2lt
cGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPXJlY3QiLAorICAgICAgICAgICAgbmFtZTog
IkNhbnZhcyByZWN0cyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAi
c2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1saW5lRmlsbCIsCisgICAg
ICAgICAgICBuYW1lOiAiQ2FudmFzIGxpbmUgcGF0aCwgZmlsbCIKKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9w
YXRoVHlwZT1xdWFkcmF0aWNGaWxsIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgcXVhZHJh
dGljIHBhdGgsIGZpbGwiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDog
InNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9YmV6aWVyRmlsbCIsCisg
ICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGJlemllciBwYXRoLCBmaWxsIgorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5o
dG1sPyZwYXRoVHlwZT1hcmNUb0ZpbGwiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBhcmNU
byBzZWdtZW50cywgZmlsbCIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJs
OiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1hcmNGaWxsIiwKKyAg
ICAgICAgICAgIG5hbWU6ICJDYW52YXMgYXJjIHNlZ21lbnRzLCBmaWxsIgorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5o
dG1sP3BhdGhUeXBlPXJlY3RGaWxsIiwKKyAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgcmVjdHMs
IGZpbGwiCisgICAgICAgIH0KKyAgICBdCispKTsKKworU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJN
aXNjZWxsYW5lb3VzIFRlc3RzIiwKKyAgICBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDog
Im1pc2MvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5odG1sP3BhcnRpY2xlV2lkdGg9NTAmcGFydGlj
bGVIZWlnaHQ9NTAmZmlsdGVycz15ZXMmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2
ZyIsCisgICAgICAgICAgICBuYW1lOiAiQ29tcG9zaXRlZCBUcmFuc2Zvcm1zIgorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICJleGFtcGxlcy9jYW52YXMtZWxlY3Ryb25z
Lmh0bWwiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBlbGVjdHJvbnMiCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImV4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1s
IiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgc3RhcnMiCisgICAgICAgIH0sCisgICAgXQor
KSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4
dGVuc2lvbnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVu
c2lvbnMuanMKaW5kZXggNTY2ZGM4ZC4uNzM4YWI0NCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcwpAQCAtMSwzICsxLDUzIEBA
CitBcnJheS5wcm90b3R5cGUuc3dhcCA9IGZ1bmN0aW9uKGksIGopCit7CisgICAgdmFyIHQgPSB0
aGlzW2ldOworICAgIHRoaXNbaV0gPSB0aGlzW2pdOworICAgIHRoaXNbal0gPSB0OworICAgIHJl
dHVybiB0aGlzOworfQorCitpZiAoIUFycmF5LnByb3RvdHlwZS5maWxsKSB7CisgICAgQXJyYXku
cHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICBpZiAodGhpcyA9PSBu
dWxsKQorICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJyYXkucHJvdG90eXBlLmZp
bGwgY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkJyk7CisKKyAgICAgICAgdmFyIG9iamVjdCA9
IE9iamVjdCh0aGlzKTsKKyAgICAgICAgdmFyIGxlbiA9IHBhcnNlSW50KG9iamVjdC5sZW5ndGgs
IDEwKTsKKyAgICAgICAgdmFyIHN0YXJ0ID0gYXJndW1lbnRzWzFdOworICAgICAgICB2YXIgcmVs
YXRpdmVTdGFydCA9IHBhcnNlSW50KHN0YXJ0LCAxMCkgfHwgMDsKKyAgICAgICAgdmFyIGsgPSBy
ZWxhdGl2ZVN0YXJ0IDwgMCA/IE1hdGgubWF4KGxlbiArIHJlbGF0aXZlU3RhcnQsIDApIDogTWF0
aC5taW4ocmVsYXRpdmVTdGFydCwgbGVuKTsKKyAgICAgICAgdmFyIGVuZCA9IGFyZ3VtZW50c1sy
XTsKKyAgICAgICAgdmFyIHJlbGF0aXZlRW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiAo
cGFyc2VJbnQoZW5kKSB8fCAwKSA7CisgICAgICAgIHZhciBmaW5hbCA9IHJlbGF0aXZlRW5kIDwg
MCA/IE1hdGgubWF4KGxlbiArIHJlbGF0aXZlRW5kLCAwKSA6IE1hdGgubWluKHJlbGF0aXZlRW5k
LCBsZW4pOworCisgICAgICAgIGZvciAoOyBrIDwgZmluYWw7IGsrKykKKyAgICAgICAgICAgIG9i
amVjdFtrXSA9IHZhbHVlOworCisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfTsKK30KKwor
aWYgKCFBcnJheS5wcm90b3R5cGUuZmluZCkgeworICAgIEFycmF5LnByb3RvdHlwZS5maW5kID0g
ZnVuY3Rpb24ocHJlZGljYXRlKSB7CisgICAgICAgIGlmICh0aGlzID09IG51bGwpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcnJheS5wcm90b3R5cGUuZmluZCBjYWxsZWQgb24g
bnVsbCBvciB1bmRlZmluZWQnKTsKKyAgICAgICAgaWYgKHR5cGVvZiBwcmVkaWNhdGUgIT09ICdm
dW5jdGlvbicpCisgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwcmVkaWNhdGUgbXVz
dCBiZSBhIGZ1bmN0aW9uJyk7CisKKyAgICAgICAgdmFyIGxpc3QgPSBPYmplY3QodGhpcyk7Cisg
ICAgICAgIHZhciBsZW5ndGggPSBsaXN0Lmxlbmd0aCA+Pj4gMDsKKyAgICAgICAgdmFyIHRoaXNB
cmcgPSBhcmd1bWVudHNbMV07CisgICAgICAgIHZhciB2YWx1ZTsKKworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGxpc3RbaV07
CisgICAgICAgICAgICBpZiAocHJlZGljYXRlLmNhbGwodGhpc0FyZywgdmFsdWUsIGksIGxpc3Qp
KQorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdW5kZWZpbmVkOworICAgIH07Cit9CisKIGZ1bmN0aW9uIFBvaW50KHgsIHkpCiB7CiAgICAg
dGhpcy54ID0geDsKQEAgLTEzNCw3ICsxODQsNyBAQCBTaW1wbGVQcm9taXNlLnByb3RvdHlwZS5y
ZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKQogCiB3aW5kb3cuRG9jdW1lbnRFeHRlbnNpb24gPQog
ewotICAgIGNyZWF0ZUVsZW1lbnQgOiBmdW5jdGlvbihuYW1lLCBhdHRycywgcGFyZW50RWxlbWVu
dCkKKyAgICBjcmVhdGVFbGVtZW50OiBmdW5jdGlvbihuYW1lLCBhdHRycywgcGFyZW50RWxlbWVu
dCkKICAgICB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChu
YW1lKTsKIApAQCAtMTkxLDYgKzI0MSw3IEBAIFByb2dyZXNzQmFyLnByb3RvdHlwZSA9CiBmdW5j
dGlvbiBSZXN1bHRzRGFzaGJvYXJkKCkKIHsKICAgICB0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMg
PSBbXTsKKyAgICB0aGlzLl9wcm9jZXNzZWREYXRhID0gdW5kZWZpbmVkOwogfQogCiBSZXN1bHRz
RGFzaGJvYXJkLnByb3RvdHlwZSA9CkBAIC0yMDAsNyArMjUxLDcgQEAgUmVzdWx0c0Rhc2hib2Fy
ZC5wcm90b3R5cGUgPQogICAgICAgICB0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMucHVzaChzdWl0
ZXNTYW1wbGVycyk7ICAgICAgICAKICAgICB9LAogICAgIAotICAgIHRvSlNPTjogZnVuY3Rpb24o
c3RhdGlzdGljcywgZ3JhcGgpCisgICAgX3Byb2Nlc3NEYXRhOiBmdW5jdGlvbihzdGF0aXN0aWNz
LCBncmFwaCkKICAgICB7CiAgICAgICAgIHZhciBpdGVyYXRpb25zUmVzdWx0cyA9IFtdOwogICAg
ICAgICB2YXIgaXRlcmF0aW9uc1Njb3JlcyA9IFtdOwpAQCAtMjExLDE0ICsyNjIsMTMgQEAgUmVz
dWx0c0Rhc2hib2FyZC5wcm90b3R5cGUgPQogICAgICAgICAKICAgICAgICAgICAgIGZvciAodmFy
IHN1aXRlTmFtZSBpbiBpdGVyYXRpb25TYW1wbGVycykgewogICAgICAgICAgICAgICAgIHZhciBz
dWl0ZSA9IHN1aXRlRnJvbU5hbWUoc3VpdGVOYW1lKTsKLSAgICAgICAgICAgICAgICB2YXIgc3Vp
dGVTYW1wbGVycyA9IGl0ZXJhdGlvblNhbXBsZXJzW3N1aXRlTmFtZV07CisgICAgICAgICAgICAg
ICAgdmFyIHN1aXRlU2FtcGxlckRhdGEgPSBpdGVyYXRpb25TYW1wbGVyc1tzdWl0ZU5hbWVdOwog
CiAgICAgICAgICAgICAgICAgdmFyIHRlc3RzUmVzdWx0cyA9IHt9OwogICAgICAgICAgICAgICAg
IHZhciB0ZXN0c1Njb3JlcyA9IFtdOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IGZvciAodmFyIHRlc3ROYW1lIGluIHN1aXRlU2FtcGxlcnMpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIHNhbXBsZXIgPSBzdWl0ZVNhbXBsZXJzW3Rlc3ROYW1lXTsKLSAgICAgICAgICAgICAg
ICAgICAgdGVzdHNSZXN1bHRzW3Rlc3ROYW1lXSA9IHNhbXBsZXIudG9KU09OKHN0YXRpc3RpY3Ms
IGdyYXBoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiBzdWl0ZVNhbXBs
ZXJEYXRhKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RzUmVzdWx0c1t0ZXN0TmFtZV0gPSBz
dWl0ZVNhbXBsZXJEYXRhW3Rlc3ROYW1lXTsKICAgICAgICAgICAgICAgICAgICAgdGVzdHNTY29y
ZXMucHVzaCh0ZXN0c1Jlc3VsdHNbdGVzdE5hbWVdW1N0cmluZ3MuanNvbi5zY29yZV0pOwogICAg
ICAgICAgICAgICAgIH0KIApAQCAtMjM0LDEwICsyODQsMjIgQEAgUmVzdWx0c0Rhc2hib2FyZC5w
cm90b3R5cGUgPQogICAgICAgICAgICAgaXRlcmF0aW9uc1Njb3Jlcy5wdXNoKGl0ZXJhdGlvbnNS
ZXN1bHRzW2luZGV4XVtTdHJpbmdzLmpzb24uc2NvcmVdKTsKICAgICAgICAgfSk7CiAKLSAgICAg
ICAgdmFyIGpzb24gPSB7fTsKLSAgICAgICAganNvbltTdHJpbmdzLmpzb24uc2NvcmVdID0gU3Rh
dGlzdGljcy5zYW1wbGVNZWFuKGl0ZXJhdGlvbnNTY29yZXMubGVuZ3RoLCBpdGVyYXRpb25zU2Nv
cmVzLnJlZHVjZShmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhICogYjsgfSkpOwotICAgICAgICBq
c29uW1N0cmluZ3MuanNvbi5yZXN1bHRzLml0ZXJhdGlvbnNdID0gaXRlcmF0aW9uc1Jlc3VsdHM7
Ci0gICAgICAgIHJldHVybiBqc29uOworICAgICAgICB0aGlzLl9wcm9jZXNzZWREYXRhID0ge307
CisgICAgICAgIHRoaXMuX3Byb2Nlc3NlZERhdGFbU3RyaW5ncy5qc29uLnNjb3JlXSA9IFN0YXRp
c3RpY3Muc2FtcGxlTWVhbihpdGVyYXRpb25zU2NvcmVzLmxlbmd0aCwgaXRlcmF0aW9uc1Njb3Jl
cy5yZWR1Y2UoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYSAqIGI7IH0pKTsKKyAgICAgICAgdGhp
cy5fcHJvY2Vzc2VkRGF0YVtTdHJpbmdzLmpzb24ucmVzdWx0cy5pdGVyYXRpb25zXSA9IGl0ZXJh
dGlvbnNSZXN1bHRzOworICAgIH0sCisKKyAgICBnZXQgZGF0YSgpCisgICAgeworICAgICAgICBp
ZiAodGhpcy5fcHJvY2Vzc2VkRGF0YSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNz
ZWREYXRhOworICAgICAgICB0aGlzLl9wcm9jZXNzRGF0YSh0cnVlLCB0cnVlKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3Byb2Nlc3NlZERhdGE7CisgICAgfSwKKworICAgIGdldCBzY29yZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5kYXRhW1N0cmluZ3MuanNvbi5zY29yZV07CiAgICAg
fQogfQogCkBAIC0yNDUsNiArMzA3LDE1IEBAIGZ1bmN0aW9uIFJlc3VsdHNUYWJsZShlbGVtZW50
LCBoZWFkZXJzKQogewogICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgdGhpcy5faGVh
ZGVycyA9IGhlYWRlcnM7CisKKyAgICB0aGlzLl9mbGF0dGVuZWRIZWFkZXJzID0gW107CisgICAg
dGhpcy5faGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGhlYWRlcikgeworICAgICAgICBpZiAoaGVh
ZGVyLmNoaWxkcmVuKQorICAgICAgICAgICAgdGhpcy5fZmxhdHRlbmVkSGVhZGVycyA9IHRoaXMu
X2ZsYXR0ZW5lZEhlYWRlcnMuY29uY2F0KGhlYWRlci5jaGlsZHJlbik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHRoaXMuX2ZsYXR0ZW5lZEhlYWRlcnMucHVzaChoZWFkZXIpOworICAgIH0s
IHRoaXMpOworCiAgICAgdGhpcy5jbGVhcigpOwogfQogCkBAIC0yNTUsMTEyICszMjYsNDkgQEAg
UmVzdWx0c1RhYmxlLnByb3RvdHlwZSA9CiAgICAgICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwg
PSAiIjsKICAgICB9LAogCi0gICAgX3Nob3dIZWFkZXJSb3c6IGZ1bmN0aW9uKHJvdywgcXVldWUs
IGhlYWRlcnMsIG1lc3NhZ2UpCi0gICAgewotICAgICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rp
b24gKGhlYWRlcikgewotICAgICAgICAgICAgdmFyIHRoID0gRG9jdW1lbnRFeHRlbnNpb24uY3Jl
YXRlRWxlbWVudCgidGgiLCB7fSwgcm93KTsKLSAgICAgICAgICAgIHRoLnRleHRDb250ZW50ID0g
aGVhZGVyLnRleHQ7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgIT0gInVuZGVmaW5l
ZCIgJiYgbWVzc2FnZS5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aC5pbm5lckhUTUwgKz0g
Ijxicj4iICsgJ1snICsgbWVzc2FnZSArJ10nOwotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAi
IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgid2lkdGgiIGluIGhlYWRlcikKLSAg
ICAgICAgICAgICAgICB0aC53aWR0aCA9IGhlYWRlci53aWR0aCArICIlIjsKLSAgICAgICAgICAg
IHF1ZXVlLnB1c2goe2VsZW1lbnQ6IHRoLCBoZWFkZXJzOiBoZWFkZXIuY2hpbGRyZW4gfSk7Ci0g
ICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfc2hvd0hlYWRlcjogZnVuY3Rpb24obWVzc2FnZSkK
KyAgICBfYWRkSGVhZGVyOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgdGhlYWQgPSBE
b2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ0aGVhZCIsIHt9LCB0aGlzLmVsZW1lbnQp
OwogICAgICAgICB2YXIgcm93ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidHIi
LCB7fSwgdGhlYWQpOwogCi0gICAgICAgIHZhciBxdWV1ZSA9IFtdOwotICAgICAgICB0aGlzLl9z
aG93SGVhZGVyUm93KHJvdywgcXVldWUsIHRoaXMuX2hlYWRlcnMsIG1lc3NhZ2UpOwotCi0gICAg
ICAgIHdoaWxlIChxdWV1ZS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciByb3cgPSBudWxsOwot
ICAgICAgICAgICAgdmFyIGVudHJpZXMgPSBbXTsKLQotICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDAsIGxlbiA9IHF1ZXVlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIGVudHJ5ID0gcXVldWUuc2hpZnQoKTsKLQotICAgICAgICAgICAgICAgIGlmICghZW50cnku
aGVhZGVycy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKGVudHJ5
LmVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXJvdykKLSAgICAgICAgICAgICAgICAgICAgcm93
ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidHIiLCB7fSwgdGhlYWQpOwotCi0g
ICAgICAgICAgICAgICAgdGhpcy5fc2hvd0hlYWRlclJvdyhyb3csIHF1ZXVlLCBlbnRyeS5oZWFk
ZXJzLCAiIik7Ci0gICAgICAgICAgICAgICAgZW50cnkuZWxlbWVudC5jb2xTcGFuID0gZW50cnku
aGVhZGVycy5sZW5ndGg7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChyb3cpIHsK
LSAgICAgICAgICAgICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZW50cnkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgKytlbnRyeS5yb3dTcGFuOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLSAgICAKLSAgICBfc2hvd0VtcHR5Q2VsbDog
ZnVuY3Rpb24ocm93LCBjbGFzc05hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gRG9jdW1lbnRF
eHRlbnNpb24uY3JlYXRlRWxlbWVudCgidGQiLCB7IGNsYXNzOiBjbGFzc05hbWUgfSwgcm93KTsK
LSAgICB9LAotCi0gICAgX3Nob3dUZXh0OiBmdW5jdGlvbihyb3csIHRleHQsIGNsYXNzTmFtZSkK
LSAgICB7Ci0gICAgICAgIHZhciB0ZCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQo
InRkIiwgeyBjbGFzczogY2xhc3NOYW1lIH0sIHJvdyk7Ci0gICAgICAgIHRkLnRleHRDb250ZW50
ID0gdGV4dDsKKyAgICAgICAgdGhpcy5faGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uIChoZWFkZXIp
IHsKKyAgICAgICAgICAgIHZhciB0aCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQo
InRoIiwge30sIHJvdyk7CisgICAgICAgICAgICBpZiAoaGVhZGVyLnRpdGxlICE9IFN0cmluZ3Mu
dGV4dC5yZXN1bHRzLmdyYXBoKQorICAgICAgICAgICAgICAgIHRoLnRleHRDb250ZW50ID0gaGVh
ZGVyLnRpdGxlOworICAgICAgICAgICAgaWYgKGhlYWRlci5jaGlsZHJlbikKKyAgICAgICAgICAg
ICAgICB0aC5jb2xTcGFuID0gaGVhZGVyLmNoaWxkcmVuLmxlbmd0aDsKKyAgICAgICAgfSk7CiAg
ICAgfSwKIAotICAgIF9zaG93Rml4ZWROdW1iZXI6IGZ1bmN0aW9uKHJvdywgdmFsdWUsIGRpZ2l0
cywgY2xhc3NOYW1lKQotICAgIHsKLSAgICAgICAgdmFyIHRkID0gRG9jdW1lbnRFeHRlbnNpb24u
Y3JlYXRlRWxlbWVudCgidGQiLCB7IGNsYXNzOiBjbGFzc05hbWUgfSwgcm93KTsKLSAgICAgICAg
dGQudGV4dENvbnRlbnQgPSB2YWx1ZS50b0ZpeGVkKGRpZ2l0cyB8fCAyKTsKLSAgICB9LAotICAg
IAotICAgIF9zaG93R3JhcGg6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUsIHRlc3RSZXN1bHRzKQor
ICAgIF9hZGRHcmFwaEJ1dHRvbjogZnVuY3Rpb24odGQsIHRlc3ROYW1lLCB0ZXN0UmVzdWx0cykK
ICAgICB7CiAgICAgICAgIHZhciBkYXRhID0gdGVzdFJlc3VsdHNbU3RyaW5ncy5qc29uLnNhbXBs
ZXNdOwotICAgICAgICBpZiAoIWRhdGEpIHsKLSAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eUNl
bGwocm93LCAiIik7CisgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmFyIHRkID0gRG9jdW1lbnRFeHRlbnNpb24uY3Jl
YXRlRWxlbWVudCgidGQiLCB7fSwgcm93KTsKICAgICAgICAgdmFyIGJ1dHRvbiA9IERvY3VtZW50
RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIsIHsgY2xhc3M6ICJzbWFsbC1idXR0b24i
IH0sIHRkKTsKIAogICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgIHZhciBzYW1wbGVzID0gZGF0YVtTdHJpbmdzLmpzb24uZ3Jh
cGgucG9pbnRzXTsKICAgICAgICAgICAgIHZhciBzYW1wbGluZ1RpbWVPZmZzZXQgPSBkYXRhW1N0
cmluZ3MuanNvbi5ncmFwaC5zYW1wbGluZ1RpbWVPZmZzZXRdOwogICAgICAgICAgICAgdmFyIGF4
ZXMgPSBbU3RyaW5ncy50ZXh0LmV4cGVyaW1lbnRzLmNvbXBsZXhpdHksIFN0cmluZ3MudGV4dC5l
eHBlcmltZW50cy5mcmFtZVJhdGVdOwotICAgICAgICAgICAgYmVuY2htYXJrQ29udHJvbGxlci5z
aG93VGVzdEdyYXBoKHRlc3ROYW1lLCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQp
OworICAgICAgICAgICAgdmFyIHNjb3JlID0gdGVzdFJlc3VsdHNbU3RyaW5ncy5qc29uLnNjb3Jl
XS50b0ZpeGVkKDIpOworICAgICAgICAgICAgdmFyIGNvbXBsZXhpdHkgPSB0ZXN0UmVzdWx0c1tT
dHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0eV07CisgICAgICAgICAgICB2YXIgbWVh
biA9IFsKKyAgICAgICAgICAgICAgICAibWVhbjogIiwKKyAgICAgICAgICAgICAgICBjb21wbGV4
aXR5W1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFnZV0udG9GaXhlZCgyKSwKKyAgICAg
ICAgICAgICAgICAiIMKxICIsCisgICAgICAgICAgICAgICAgY29tcGxleGl0eVtTdHJpbmdzLmpz
b24ubWVhc3VyZW1lbnRzLnN0ZGV2XS50b0ZpeGVkKDIpLAorICAgICAgICAgICAgICAgICIgKCIs
CisgICAgICAgICAgICAgICAgY29tcGxleGl0eVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLnBl
cmNlbnRdLnRvRml4ZWQoMiksCisgICAgICAgICAgICAgICAgIiUpLCB3b3JzdCA1JTogIiwKKyAg
ICAgICAgICAgICAgICBjb21wbGV4aXR5W1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuY29uY2Vy
bl0udG9GaXhlZCgyKV0uam9pbigiIik7CisgICAgICAgICAgICBiZW5jaG1hcmtDb250cm9sbGVy
LnNob3dUZXN0R3JhcGgodGVzdE5hbWUsIHNjb3JlLCBtZWFuLCBheGVzLCBzYW1wbGVzLCBzYW1w
bGluZ1RpbWVPZmZzZXQpOwogICAgICAgICB9KTsKICAgICAgICAgICAgIAogICAgICAgICBidXR0
b24udGV4dENvbnRlbnQgPSBTdHJpbmdzLnRleHQucmVzdWx0cy5ncmFwaCArICIuLi4iOwogICAg
IH0sCiAKLSAgICBfc2hvd0pTT046IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUsIHRlc3RSZXN1bHRz
KQotICAgIHsKLSAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tTdHJpbmdzLmpzb24uc2Ft
cGxlc107Ci0gICAgICAgIGlmICghZGF0YSkgewotICAgICAgICAgICAgdGhpcy5fc2hvd0VtcHR5
Q2VsbChyb3csICIiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IHZhciB0ZCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoInRkIiwge30sIHJvdyk7
Ci0gICAgICAgIHZhciBidXR0b24gPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJi
dXR0b24iLCB7IGNsYXNzOiAic21hbGwtYnV0dG9uIiB9LCB0ZCk7Ci0KLSAgICAgICAgYnV0dG9u
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBiZW5j
aG1hcmtDb250cm9sbGVyLnNob3dUZXN0SlNPTih0ZXN0TmFtZSwgdGVzdFJlc3VsdHMpOwotICAg
ICAgICB9KTsKLSAgICAgICAgICAgIAotICAgICAgICBidXR0b24udGV4dENvbnRlbnQgPSBTdHJp
bmdzLnRleHQucmVzdWx0cy5qc29uICsgIi4uLiI7Ci0gICAgfSwKLSAgICAKICAgICBfaXNOb2lz
eU1lYXN1cmVtZW50OiBmdW5jdGlvbihqc29uRXhwZXJpbWVudCwgZGF0YSwgbWVhc3VyZW1lbnQs
IG9wdGlvbnMpCiAgICAgewogICAgICAgICBjb25zdCBwZXJjZW50VGhyZXNob2xkID0gMTA7CkBA
IC0zNzUsOTkgKzM4MywxMjggQEAgUmVzdWx0c1RhYmxlLnByb3RvdHlwZSA9CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9LAogCi0gICAgX2lzTm9pc3lUZXN0OiBmdW5jdGlvbih0ZXN0UmVz
dWx0cywgb3B0aW9ucykKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXgg
PCAyOyArK2luZGV4KSB7Ci0gICAgICAgICAgICB2YXIganNvbkV4cGVyaW1lbnQgPSAhaW5kZXgg
PyBTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0eSA6IFN0cmluZ3MuanNvbi5leHBl
cmltZW50cy5mcmFtZVJhdGU7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RSZXN1bHRzW2pz
b25FeHBlcmltZW50XTsKLSAgICAgICAgICAgIGZvciAodmFyIG1lYXN1cmVtZW50IGluIGRhdGEp
IHsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNOb2lzeU1lYXN1cmVtZW50KGpzb25FeHBl
cmltZW50LCBkYXRhLCBtZWFzdXJlbWVudCwgb3B0aW9ucykpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9LAotCi0gICAgX3Nob3dFbXB0eUNlbGxzOiBmdW5jdGlvbihyb3csIGhlYWRl
cnMpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgaGVhZGVycy5s
ZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgICAgIGlmICghaGVhZGVyc1tpbmRleF0uY2hpbGRy
ZW4ubGVuZ3RoKQotICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eUNlbGwocm93LCAic3Vp
dGVzLXNlcGFyYXRvciIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMu
X3Nob3dFbXB0eUNlbGxzKHJvdywgaGVhZGVyc1tpbmRleF0uY2hpbGRyZW4pOwotICAgICAgICB9
Ci0gICAgfSwKLQotICAgIF9zaG93RW1wdHlSb3c6IGZ1bmN0aW9uKCkKKyAgICBfYWRkRW1wdHlS
b3c6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciByb3cgPSBEb2N1bWVudEV4dGVuc2lv
bi5jcmVhdGVFbGVtZW50KCJ0ciIsIHt9LCB0aGlzLmVsZW1lbnQpOwotICAgICAgICB0aGlzLl9z
aG93RW1wdHlDZWxscyhyb3csIHRoaXMuX2hlYWRlcnMpOworICAgICAgICB0aGlzLl9mbGF0dGVu
ZWRIZWFkZXJzLmZvckVhY2goZnVuY3Rpb24gKGhlYWRlcikgeworICAgICAgICAgICAgcmV0dXJu
IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoInRkIiwgeyBjbGFzczogInN1aXRlcy1z
ZXBhcmF0b3IiIH0sIHJvdyk7CisgICAgICAgIH0pOwogICAgIH0sCiAKLSAgICBfc2hvd1Rlc3Q6
IGZ1bmN0aW9uKHRlc3ROYW1lLCB0ZXN0UmVzdWx0cywgb3B0aW9ucykKKyAgICBfYWRkVGVzdDog
ZnVuY3Rpb24odGVzdE5hbWUsIHRlc3RSZXN1bHRzLCBvcHRpb25zKQogICAgIHsKICAgICAgICAg
dmFyIHJvdyA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoInRyIiwge30sIHRoaXMu
ZWxlbWVudCk7Ci0gICAgICAgIHZhciBjbGFzc05hbWUgPSB0aGlzLl9pc05vaXN5VGVzdCh0ZXN0
UmVzdWx0cywgb3B0aW9ucykgPyAibm9pc3ktcmVzdWx0cyIgOiAiIjsKLSAgICAgICAgCi0gICAg
ICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9oZWFkZXJzLmxlbmd0aDsgKytp
bmRleCkgewotCi0gICAgICAgICAgICBzd2l0Y2ggKGluZGV4KSB7Ci0gICAgICAgICAgICBjYXNl
IDA6Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2hvd1RleHQocm93LCB0ZXN0TmFtZSwgY2xhc3NO
YW1lKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSAxOgotICAg
ICAgICAgICAgICAgIHZhciBkYXRhID0gdGVzdFJlc3VsdHNbU3RyaW5ncy5qc29uLnNjb3JlXTsK
LSAgICAgICAgICAgICAgICB0aGlzLl9zaG93Rml4ZWROdW1iZXIocm93LCBkYXRhLCAyKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAg
Y2FzZSAzOgotICAgICAgICAgICAgICAgIHZhciBqc29uRXhwZXJpbWVudCA9IGluZGV4ID09IDIg
PyBTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0eSA6IFN0cmluZ3MuanNvbi5leHBl
cmltZW50cy5mcmFtZVJhdGU7Ci0gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0
c1tqc29uRXhwZXJpbWVudF07Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgbWVhc3VyZW1lbnQg
aW4gZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd0ZpeGVkTnVtYmVyKHJvdywg
ZGF0YVttZWFzdXJlbWVudF0sIDIsIHRoaXMuX2lzTm9pc3lNZWFzdXJlbWVudChqc29uRXhwZXJp
bWVudCwgZGF0YSwgbWVhc3VyZW1lbnQsIG9wdGlvbnMpID8gY2xhc3NOYW1lIDogIiIpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSA0
OgotICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dHcmFwaChyb3csIHRlc3ROYW1lLCB0ZXN0UmVz
dWx0cyk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2hvd0pTT04ocm93LCB0ZXN0TmFtZSwgdGVz
dFJlc3VsdHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHZhciBpc05vaXN5
ID0gZmFsc2U7CisgICAgICAgIFtTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0eSwg
U3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZV0uZm9yRWFjaChmdW5jdGlvbiAoZXhw
ZXJpbWVudCkgeworICAgICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tleHBlcmltZW50
XTsKKyAgICAgICAgICAgIGZvciAodmFyIG1lYXN1cmVtZW50IGluIGRhdGEpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodGhpcy5faXNOb2lzeU1lYXN1cmVtZW50KGV4cGVyaW1lbnQsIGRhdGEsIG1l
YXN1cmVtZW50LCBvcHRpb25zKSkKKyAgICAgICAgICAgICAgICAgICAgaXNOb2lzeSA9IHRydWU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgfSwgdGhpcyk7CisKKyAgICAgICAg
dGhpcy5fZmxhdHRlbmVkSGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uIChoZWFkZXIpIHsKKyAgICAg
ICAgICAgIHZhciBjbGFzc05hbWUgPSAiIjsKKyAgICAgICAgICAgIGlmIChoZWFkZXIuY2xhc3NO
YW1lKSB7CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXIuY2xhc3NOYW1lID09ICJm
dW5jdGlvbiIpCisgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA9IGhlYWRlci5jbGFzc05h
bWUodGVzdFJlc3VsdHMsIG9wdGlvbnMpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgY2xhc3NOYW1lID0gaGVhZGVyLmNsYXNzTmFtZTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKGhlYWRlci50aXRsZSA9PSBTdHJpbmdzLnRleHQudGVzdE5hbWUp
IHsKKyAgICAgICAgICAgICAgICB2YXIgdGl0bGVDbGFzc05hbWUgPSBjbGFzc05hbWU7CisgICAg
ICAgICAgICAgICAgaWYgKGlzTm9pc3kpCisgICAgICAgICAgICAgICAgICAgIHRpdGxlQ2xhc3NO
YW1lICs9ICIgbm9pc3ktcmVzdWx0cyI7CisgICAgICAgICAgICAgICAgdmFyIHRkID0gRG9jdW1l
bnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidGQiLCB7IGNsYXNzOiB0aXRsZUNsYXNzTmFtZSB9
LCByb3cpOworICAgICAgICAgICAgICAgIHRkLnRleHRDb250ZW50ID0gdGVzdE5hbWU7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgdGQg
PSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ0ZCIsIHsgY2xhc3M6IGNsYXNzTmFt
ZSB9LCByb3cpOworICAgICAgICAgICAgaWYgKGhlYWRlci50aXRsZSA9PSBTdHJpbmdzLnRleHQu
cmVzdWx0cy5ncmFwaCkgeworICAgICAgICAgICAgICAgIHRoaXMuX2FkZEdyYXBoQnV0dG9uKHRk
LCB0ZXN0TmFtZSwgdGVzdFJlc3VsdHMpOworICAgICAgICAgICAgfSBlbHNlIGlmICghKCJ0ZXh0
IiBpbiBoZWFkZXIpKSB7CisgICAgICAgICAgICAgICAgdGQudGV4dENvbnRlbnQgPSB0ZXN0UmVz
dWx0c1toZWFkZXIudGl0bGVdOworICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaGVhZGVy
LnRleHQgPT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RSZXN1
bHRzW2hlYWRlci50ZXh0XTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT0gIm51
bWJlciIpCisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnRvRml4ZWQoMik7CisgICAg
ICAgICAgICAgICAgdGQudGV4dENvbnRlbnQgPSBkYXRhOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICB0ZC50ZXh0Q29udGVudCA9IGhlYWRlci50ZXh0KHRlc3RSZXN1bHRz
LCB0ZXN0TmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sIHRoaXMpOwogICAgIH0sCiAK
LSAgICBfc2hvd1N1aXRlOiBmdW5jdGlvbihzdWl0ZU5hbWUsIHN1aXRlUmVzdWx0cywgb3B0aW9u
cykKKyAgICBfYWRkU3VpdGU6IGZ1bmN0aW9uKHN1aXRlTmFtZSwgc3VpdGVSZXN1bHRzLCBvcHRp
b25zKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gc3VpdGVSZXN1bHRzW1N0
cmluZ3MuanNvbi5yZXN1bHRzLnRlc3RzXSkgewotICAgICAgICAgICAgdGhpcy5fc2hvd1Rlc3Qo
dGVzdE5hbWUsIHN1aXRlUmVzdWx0c1tTdHJpbmdzLmpzb24ucmVzdWx0cy50ZXN0c11bdGVzdE5h
bWVdLCBvcHRpb25zKTsKKyAgICAgICAgICAgIHZhciB0ZXN0UmVzdWx0cyA9IHN1aXRlUmVzdWx0
c1tTdHJpbmdzLmpzb24ucmVzdWx0cy50ZXN0c11bdGVzdE5hbWVdOworICAgICAgICAgICAgdGhp
cy5fYWRkVGVzdCh0ZXN0TmFtZSwgdGVzdFJlc3VsdHMsIG9wdGlvbnMpOwogICAgICAgICB9CiAg
ICAgfSwKICAgICAKLSAgICBfc2hvd0l0ZXJhdGlvbiA6IGZ1bmN0aW9uKGl0ZXJhdGlvblJlc3Vs
dHMsIG9wdGlvbnMpCisgICAgX2FkZEl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uUmVzdWx0
LCBvcHRpb25zKQogICAgIHsKLSAgICAgICAgZm9yICh2YXIgc3VpdGVOYW1lIGluIGl0ZXJhdGlv
blJlc3VsdHNbU3RyaW5ncy5qc29uLnJlc3VsdHMuc3VpdGVzXSkgewotICAgICAgICAgICAgaWYg
KHN1aXRlTmFtZSAhPSBPYmplY3Qua2V5cyhpdGVyYXRpb25SZXN1bHRzW1N0cmluZ3MuanNvbi5y
ZXN1bHRzLnN1aXRlc10pWzBdKQotICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eVJvdygp
OwotICAgICAgICAgICAgdGhpcy5fc2hvd1N1aXRlKHN1aXRlTmFtZSwgaXRlcmF0aW9uUmVzdWx0
c1tTdHJpbmdzLmpzb24ucmVzdWx0cy5zdWl0ZXNdW3N1aXRlTmFtZV0sIG9wdGlvbnMpOworICAg
ICAgICBmb3IgKHZhciBzdWl0ZU5hbWUgaW4gaXRlcmF0aW9uUmVzdWx0W1N0cmluZ3MuanNvbi5y
ZXN1bHRzLnN1aXRlc10pIHsKKyAgICAgICAgICAgIHRoaXMuX2FkZEVtcHR5Um93KCk7CisgICAg
ICAgICAgICB0aGlzLl9hZGRTdWl0ZShzdWl0ZU5hbWUsIGl0ZXJhdGlvblJlc3VsdFtTdHJpbmdz
Lmpzb24ucmVzdWx0cy5zdWl0ZXNdW3N1aXRlTmFtZV0sIG9wdGlvbnMpOwogICAgICAgICB9CiAg
ICAgfSwKLSAgICAKLSAgICBzaG93UmVjb3JkOiBmdW5jdGlvbih0ZXN0TmFtZSwgbWVzc2FnZSwg
dGVzdFJlc3VsdHMsIG9wdGlvbnMpCi0gICAgewotICAgICAgICB0aGlzLmNsZWFyKCk7Ci0gICAg
ICAgIHRoaXMuX3Nob3dIZWFkZXIobWVzc2FnZSk7Ci0gICAgICAgIHRoaXMuX3Nob3dUZXN0KHRl
c3ROYW1lLCB0ZXN0UmVzdWx0cywgb3B0aW9ucyk7Ci0gICAgfSwKIAogICAgIHNob3dJdGVyYXRp
b25zOiBmdW5jdGlvbihpdGVyYXRpb25zUmVzdWx0cywgb3B0aW9ucykKICAgICB7CiAgICAgICAg
IHRoaXMuY2xlYXIoKTsKLSAgICAgICAgdGhpcy5fc2hvd0hlYWRlcigiIik7CisgICAgICAgIHRo
aXMuX2FkZEhlYWRlcigpOwogICAgICAgICAKLSAgICAgICAgaXRlcmF0aW9uc1Jlc3VsdHMuZm9y
RWFjaChmdW5jdGlvbihpdGVyYXRpb25SZXN1bHRzKSB7Ci0gICAgICAgICAgICB0aGlzLl9zaG93
SXRlcmF0aW9uKGl0ZXJhdGlvblJlc3VsdHMsIG9wdGlvbnMpOworICAgICAgICBpdGVyYXRpb25z
UmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZXJhdGlvblJlc3VsdCkgeworICAgICAgICAgICAg
dGhpcy5fYWRkSXRlcmF0aW9uKGl0ZXJhdGlvblJlc3VsdCwgb3B0aW9ucyk7CiAgICAgICAgIH0s
IHRoaXMpOwogICAgIH0KIH0KIAord2luZG93LlV0aWxpdGllcyA9Cit7CisgICAgX3BhcnNlOiBm
dW5jdGlvbihzdHIsIHNlcCkKKyAgICB7CisgICAgICAgIHZhciBvdXRwdXQgPSB7fTsKKyAgICAg
ICAgc3RyLnNwbGl0KHNlcCkuZm9yRWFjaChmdW5jdGlvbihwYXJ0KSB7CisgICAgICAgICAgICB2
YXIgaXRlbSA9IHBhcnQuc3BsaXQoIj0iKTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IGRlY29k
ZVVSSUNvbXBvbmVudChpdGVtWzFdKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZVswXSA9PSAiJyIg
KQorICAgICAgICAgICAgICAgIG91dHB1dFtpdGVtWzBdXSA9IHZhbHVlLnN1YnN0cigxLCB2YWx1
ZS5sZW5ndGggLSAyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvdXRwdXRb
aXRlbVswXV0gPSB2YWx1ZTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG91dHB1dDsK
KyAgICB9LAorCisgICAgcGFyc2VQYXJhbWV0ZXJzOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fcGFyc2Uod2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSksICIm
Iik7CisgICAgfSwKKworICAgIHBhcnNlQXJndW1lbnRzOiBmdW5jdGlvbihzdHIpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2Uoc3RyLCAiICIpOworICAgIH0sCisKKyAgICBleHRl
bmRPYmplY3Q6IGZ1bmN0aW9uKG9iajEsIG9iajIpCisgICAgeworICAgICAgICBmb3IgKHZhciBh
dHRybmFtZSBpbiBvYmoyKQorICAgICAgICAgICAgb2JqMVthdHRybmFtZV0gPSBvYmoyW2F0dHJu
YW1lXTsKKyAgICAgICAgcmV0dXJuIG9iajE7CisgICAgfSwKKworICAgIGNvcHlPYmplY3Q6IGZ1
bmN0aW9uKG9iaikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmV4dGVuZE9iamVjdCh7fSwg
b2JqKTsKKyAgICB9LAorCisgICAgbWVyZ2VPYmplY3RzOiBmdW5jdGlvbihvYmoxLCBvYmoyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kT2JqZWN0KHRoaXMuY29weU9iamVjdChv
YmoxKSwgb2JqMik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3MgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDQ0MjgyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5jc3MKQEAg
LTAsMCArMSwyNDIgQEAKKy8qIE91dGVyIGhhcm5lc3MgKi8KK2h0bWwsYm9keSB7CisgICAgaGVp
Z2h0OiAxMDAlOworICAgIG1hcmdpbjogMHB4OworICAgIHBhZGRpbmc6IDBweDsKK30KKworYm9k
eSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MSwgMjQxLCAyNDEpOworICAgIGNvbG9y
OiByZ2IoOTYsIDk2LCA5Nik7CisgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sICJIZWx2
ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKK30KKworbWFpbiB7
CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworCisgICAgZGlzcGxheTogZmxl
eDsKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworICAgIGp1c3RpZnktY29udGVudDogZmxleC1z
dGFydDsKKyAgICBmbGV4LWZsb3c6IGNvbHVtbjsKK30KKworaHIgeworICAgIGZsZXg6IDEgMCAy
MHB4OworICAgIHdpZHRoOiAxcHg7CisgICAgYm9yZGVyOiAwOworICAgIG1hcmdpbjogMDsKK30K
Kworc2VjdGlvbiB7CisgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICB3aWR0aDogMTAw
JTsKKyAgICBkaXNwbGF5OiBub25lOworfQorCitzZWN0aW9uLnNlbGVjdGVkIHsKKyAgICBkaXNw
bGF5OiBpbml0aWFsOworfQorCitoMSB7CisgICAgZm9udC1zaXplOiAzZW07CisgICAgdGV4dC1h
bGlnbjogY2VudGVyOworICAgIGZvbnQtd2VpZ2h0OiA2MDA7CisgICAgbWFyZ2luOiAxMHZoIDA7
CisgICAgZmxleDogMCAxIDFlbTsKK30KKworYnV0dG9uIHsKKyAgICBmbGV4OiAwIDAgYXV0bzsK
KyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBmb250LXNpemU6IDEuNWVtOworICAgIG1hcmdpbi1i
b3R0b206IDEwdmg7CisgICAgYm9yZGVyOiAycHggc29saWQgcmdiKDk2LCA5NiwgOTYpOworICAg
IGNvbG9yOiByZ2IoOTYsIDk2LCA5Nik7CisgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cisg
ICAgYm9yZGVyLXJhZGl1czogMTBweDsKKyAgICBwYWRkaW5nOiAuNWVtIDJlbTsKK30KKworYnV0
dG9uOmhvdmVyIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4xKTsKKyAg
ICBjdXJzb3I6IHBvaW50ZXI7Cit9CisKK2J1dHRvbjphY3RpdmUgeworICAgIGNvbG9yOiBpbmhl
cml0OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjIpOworfQorCisKK0Bt
ZWRpYSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoOiA3NjhweCkgeworICAgIHNlY3Rpb24g
eworICAgICAgICBwYWRkaW5nOiAwIDIwcHg7CisgICAgfQorCisgICAgc2VjdGlvbi5zZWxlY3Rl
ZCB7CisgICAgICAgIGRpc3BsYXk6IGZsZXg7CisgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7
CisgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKKyAgICAgICAgZmxleC1mbG93
OiBjb2x1bW47CisgICAgfQorfQorCitAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0
aDogNDE0cHgpIHsKKyAgICBoMSB7CisgICAgICAgIGZvbnQtc2l6ZTogMi41ZW07CisgICAgfQor
CisgICAgaHIgeworICAgICAgICBmbGV4OiAwIDAgMDsKKyAgICB9CisKKyAgICBzZWN0aW9uIHsK
KyAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgICAgd2lkdGg6IDEwMCU7Cisg
ICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKKyAgICAg
ICAgcGFkZGluZzogMCA1cHg7CisgICAgfQorfQorCisvKiBJbnRybyBzZWN0aW9uICovCisjaW50
cm8uc2VsZWN0ZWQgeworICAgIGZsZXg6IDEgMCBhdXRvOworfQorCisjaW50cm8gcCB7CisgICAg
ZmxleDogMSAxIGF1dG87CisgICAgcGFkZGluZzogMCAwIDEwdmggMDsKKyAgICBmb250LXNpemU6
IDJlbTsKK30KKworQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6IDc2OHB4KSB7
CisgICAgI2ludHJvIHAgeworICAgICAgICBtYXgtd2lkdGg6IDgwMHB4OworICAgICAgICBtYXJn
aW46IDA7CisgICAgfQorfQorCitAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDog
NDE0cHgpIHsKKyAgICAjaW50cm8uc2VsZWN0ZWQgeworICAgICAgICBkaXNwbGF5OiBmbGV4Owor
ICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOworICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZs
ZXgtc3RhcnQ7CisgICAgICAgIGZsZXgtZmxvdzogY29sdW1uOworICAgIH0KKworICAgICNpbnRy
byBwIHsKKyAgICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4OworICAgICAgICBwYWRkaW5nLXJpZ2h0
OiAyMHB4OworICAgICAgICBmb250LXNpemU6IDEuNWVtOworICAgIH0KK30KKworLyogUnVubmlu
ZyB0ZXN0IHNlY3Rpb24gKi8KKyN0ZXN0LWNvbnRhaW5lci5zZWxlY3RlZCB7CisgICAgZGlzcGxh
eTogZmxleDsKKworICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CisgICAganVzdGlmeS1jb250ZW50
OiBjZW50ZXI7Cit9CisKKy5mcmFtZS1jb250YWluZXIgPiBpZnJhbWUgeworICAgIHdpZHRoOiAx
MjAwcHg7CisgICAgaGVpZ2h0OiA2MDBweDsKKyAgICBib3JkZXI6IDA7CisgICAgbWFyZ2luOiAw
IGF1dG87Cit9CisKK0BtZWRpYSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoOiAxODAwcHgp
IHsKKyAgICAuZnJhbWUtY29udGFpbmVyID4gaWZyYW1lIHsKKyAgICAgICAgd2lkdGg6IDE2MDBw
eDsKKyAgICAgICAgaGVpZ2h0OiA4MDBweDsKKyAgICB9Cit9CisKK0BtZWRpYSBzY3JlZW4gYW5k
IChtYXgtZGV2aWNlLXdpZHRoOiA0MTRweCkgeworICAgICN0ZXN0LWNvbnRhaW5lciB7CisgICAg
ICAgIHBhZGRpbmc6IDA7CisgICAgfQorCisgICAgLmZyYW1lLWNvbnRhaW5lciB7CisgICAgICAg
IHdpZHRoOiAxMDAlOworICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgIG92ZXJmbG93OiBo
aWRkZW47CisgICAgfQorCisgICAgLmZyYW1lLWNvbnRhaW5lciA+IGlmcmFtZSB7CisgICAgICAg
IHdpZHRoOiAxMDAlOworICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgfQorfQorCitAbWVkaWEg
c2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogMTAyNHB4KSB7CisgICAgLmZyYW1lLWNvbnRh
aW5lciA+IGlmcmFtZSB7CisgICAgICAgIHdpZHRoOiA5MDBweDsKKyAgICB9Cit9CisKKy8qIFJl
c3VsdHMgc2VjdGlvbiAqLworI3Jlc3VsdHMgeworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30K
KworI3Jlc3VsdHMuc2VsZWN0ZWQgeworICAgIGZsZXg6IDEgMCBhdXRvOworfQorCisuc2NvcmUg
eworICAgIGZvbnQtc2l6ZTogNWVtOworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgIG1hcmdp
bjogMDsKK30KKworI3Jlc3VsdHMtdGFibGVzIHsKKyAgICBkaXJlY3Rpb246IHJ0bDsKKworICAg
IGRpc3BsYXk6IGZsZXg7CisKKyAgICBhbGlnbi1pdGVtczogY2VudGVyOworICAgIGp1c3RpZnkt
Y29udGVudDogY2VudGVyOworCisgICAgbWFyZ2luOiAzZW0gMDsKK30KKworI3Jlc3VsdHMgdGFi
bGUgeworICAgIGRpcmVjdGlvbjogbHRyOworICAgIGJvcmRlci1zcGFjaW5nOiAwOworfQorCisj
cmVzdWx0cyB0aCB7CisgICAgcGFkZGluZzogLjVlbSAwOworfQorCisjcmVzdWx0cyB0ciB0ZCB7
CisgICAgcGFkZGluZzogLjI1ZW0gMDsKK30KKworI3Jlc3VsdHMtaGVhZGVyIHRkLCAjcmVzdWx0
cy1oZWFkZXIgdGggeworICAgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisjcmVzdWx0cy1oZWFkZXIg
dHIgdGQgeworICAgIHBhZGRpbmctcmlnaHQ6IDFlbTsKK30KKyNyZXN1bHRzLXNjb3JlIHRkLCAj
cmVzdWx0cy1zY29yZSB0aCB7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK0BtZWRpYSBz
Y3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0MTRweCkgeworICAgICNyZXN1bHRzLnNlbGVj
dGVkIHsKKyAgICAgICAgcGFkZGluZzogMCAyMHB4OworICAgICAgICBkaXNwbGF5OiBmbGV4Owor
ICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOworICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZs
ZXgtc3RhcnQ7CisgICAgICAgIGZsZXgtZmxvdzogY29sdW1uOworICAgIH0KKworICAgIC5zY29y
ZSB7CisgICAgICAgIGZvbnQtc2l6ZTogM2VtOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0OTgxMzUKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmlt
b21ldGVyLmpzCkBAIC0wLDAgKzEsMTIzIEBACit3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50
ID0geworICAgIGl0ZXJhdGlvbkNvdW50OiAxLAorICAgIG9wdGlvbnM6IG51bGwsCisgICAgcmVz
dWx0czogbnVsbCwKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHN1aXRlcywgb3B0aW9ucykK
KyAgICB7CisgICAgICAgIHRoaXMudGVzdHNDb3VudCA9IHRoaXMuaXRlcmF0aW9uQ291bnQgKiBz
dWl0ZXMucmVkdWNlKGZ1bmN0aW9uIChjb3VudCwgc3VpdGUpIHsgcmV0dXJuIGNvdW50ICsgc3Vp
dGUudGVzdHMubGVuZ3RoOyB9LCAwKTsKKyAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsK
KyAgICB9LAorCisgICAgd2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMucmVzdWx0cyA9IG5ldyBSZXN1bHRzRGFzaGJvYXJkKCk7CisgICAgfSwK
KworICAgIGRpZFJ1blN1aXRlczogZnVuY3Rpb24oc3VpdGVzU2FtcGxlcnMpCisgICAgeworICAg
ICAgICB0aGlzLnJlc3VsdHMucHVzaChzdWl0ZXNTYW1wbGVycyk7CisgICAgfSwKKworICAgIGRp
ZEZpbmlzaExhc3RJdGVyYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGJlbmNobWFy
a0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMoKTsKKyAgICB9Cit9OworCit3aW5kb3cuc2VjdGlvbnNN
YW5hZ2VyID0KK3sKKyAgICBzaG93U2VjdGlvbjogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIs
IHB1c2hTdGF0ZSkKKyAgICB7CisgICAgICAgIHZhciBjdXJyZW50U2VjdGlvbkVsZW1lbnQgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzZWN0aW9uLnNlbGVjdGVkIik7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGN1cnJlbnRTZWN0aW9uRWxlbWVudCk7CisKKyAgICAgICAgdmFyIG5ld1NlY3Rp
b25FbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkZW50aWZpZXIpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydChuZXdTZWN0aW9uRWxlbWVudCk7CisKKyAgICAgICAgY3Vy
cmVudFNlY3Rpb25FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIik7CisgICAgICAg
IG5ld1NlY3Rpb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIik7CisKKyAgICAgICAg
aWYgKHB1c2hTdGF0ZSkKKyAgICAgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKHtzZWN0aW9uOiBz
ZWN0aW9uSWRlbnRpZmllcn0sIGRvY3VtZW50LnRpdGxlKTsKKyAgICB9LAorCisgICAgc2V0U2Vj
dGlvblNjb3JlOiBmdW5jdGlvbihzZWN0aW9uSWRlbnRpZmllciwgc2NvcmUsIG1lYW4pCisgICAg
eworICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjIiArIHNlY3Rpb25JZGVudGlmaWVy
ICsgIiAuc2NvcmUiKS50ZXh0Q29udGVudCA9IHNjb3JlOworICAgICAgICBpZiAobWVhbikKKyAg
ICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiMiICsgc2VjdGlvbklkZW50aWZpZXIg
KyAiIC5tZWFuIikuaW5uZXJIVE1MID0gbWVhbjsKKyAgICB9LAorCisgICAgcG9wdWxhdGVUYWJs
ZTogZnVuY3Rpb24odGFibGVJZGVudGlmaWVyLCBoZWFkZXJzLCBkYXRhKQorICAgIHsKKyAgICAg
ICAgdmFyIHRhYmxlID0gbmV3IFJlc3VsdHNUYWJsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YWJsZUlkZW50aWZpZXIpLCBoZWFkZXJzKTsKKyAgICAgICAgdGFibGUuc2hvd0l0ZXJhdGlvbnMo
ZGF0YSwgYmVuY2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnMpOworICAgIH0KK307CisKK3dpbmRv
dy5iZW5jaG1hcmtDb250cm9sbGVyID0geworICAgIF9zdGFydEJlbmNobWFyazogZnVuY3Rpb24o
c3VpdGVzLCBvcHRpb25zLCBmcmFtZUNvbnRhaW5lcklEKQorICAgIHsKKyAgICAgICAgYmVuY2ht
YXJrUnVubmVyQ2xpZW50LmluaXRpYWxpemUoc3VpdGVzLCBvcHRpb25zKTsKKyAgICAgICAgdmFy
IGZyYW1lQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZnJhbWVDb250YWluZXJJ
RCk7CisgICAgICAgIHZhciBydW5uZXIgPSBuZXcgQmVuY2htYXJrUnVubmVyKHN1aXRlcywgZnJh
bWVDb250YWluZXIsIGJlbmNobWFya1J1bm5lckNsaWVudCk7CisgICAgICAgIHJ1bm5lci5ydW5N
dWx0aXBsZUl0ZXJhdGlvbnMoKTsKKworICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rp
b24oInRlc3QtY29udGFpbmVyIik7CisgICAgfSwKKworICAgIHN0YXJ0QmVuY2htYXJrOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB2YXIgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgICJ0ZXN0
LWludGVydmFsIjogMTAsCisgICAgICAgICAgICAiZGlzcGxheSI6ICJtaW5pbWFsIiwKKyAgICAg
ICAgICAgICJhZGp1c3RtZW50IjogImFkYXB0aXZlIiwKKyAgICAgICAgICAgICJmcmFtZS1yYXRl
IjogNTAsCisgICAgICAgICAgICAiZXN0aW1hdGVkLWZyYW1lLXJhdGUiOiB0cnVlCisgICAgICAg
IH07CisgICAgICAgIHRoaXMuX3N0YXJ0QmVuY2htYXJrKFN1aXRlcywgb3B0aW9ucywgInRlc3Qt
Y29udGFpbmVyIik7CisgICAgfSwKKworICAgIHNob3dSZXN1bHRzOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuYWRkZWRLZXlFdmVudCkgeworICAgICAgICAgICAgZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5cHJlc3MiLCB0aGlzLnNlbGVjdFJlc3VsdHMsIGZhbHNl
KTsKKyAgICAgICAgICAgIHRoaXMuYWRkZWRLZXlFdmVudCA9IHRydWU7CisgICAgICAgIH0KKwor
ICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2V0U2VjdGlvblNjb3JlKCJyZXN1bHRzIiwgYmVuY2ht
YXJrUnVubmVyQ2xpZW50LnJlc3VsdHMuc2NvcmUudG9GaXhlZCgyKSk7CisgICAgICAgIHZhciBk
YXRhID0gYmVuY2htYXJrUnVubmVyQ2xpZW50LnJlc3VsdHMuZGF0YVtTdHJpbmdzLmpzb24ucmVz
dWx0cy5pdGVyYXRpb25zXTsKKyAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnBvcHVsYXRlVGFibGUo
InJlc3VsdHMtaGVhZGVyIiwgSGVhZGVycy50ZXN0TmFtZSwgZGF0YSk7CisgICAgICAgIHNlY3Rp
b25zTWFuYWdlci5wb3B1bGF0ZVRhYmxlKCJyZXN1bHRzLXNjb3JlIiwgSGVhZGVycy5zY29yZSwg
ZGF0YSk7CisgICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93U2VjdGlvbigicmVzdWx0cyIsIHRy
dWUpOworICAgIH0sCisKKyAgICBzZWxlY3RSZXN1bHRzOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIGlmIChldmVudC5jaGFyQ29kZSAhPSAxMTUpIC8vICdzJworICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGV2ZW50LnRhcmdldC5zZWxlY3RSYW5nZSA9ICgoZXZlbnQudGFy
Z2V0LnNlbGVjdFJhbmdlIHx8IDApICsgMSkgJSAzOworCisgICAgICAgIHZhciBzZWxlY3Rpb24g
PSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5n
ZXMoKTsKKyAgICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAg
ICAgc3dpdGNoIChldmVudC50YXJnZXQuc2VsZWN0UmFuZ2UpIHsKKyAgICAgICAgICAgIGNhc2Ug
MDogeworICAgICAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoIiNyZXN1bHRzIC5zY29yZSIpLCAwKTsKKyAgICAgICAgICAgICAgICByYW5nZS5zZXRFbmRB
ZnRlcihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVzdWx0cy1zY29yZSA+IHRyOmxhc3Qtb2Yt
dHlwZSIpLCAwKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNhc2UgMTogeworICAgICAgICAgICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50
cyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVzdWx0cyAuc2NvcmUiKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIDI6IHsKKyAgICAg
ICAgICAgICAgICByYW5nZS5zZWxlY3ROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHRzLXNjb3JlIikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgfQorfTsKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL3Rl
c3RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVz
dHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ5MDY3YQotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVy
L3Rlc3RzLmpzCkBAIC0wLDAgKzEsMzYgQEAKK3ZhciBIZWFkZXJzID0geworICAgIHRlc3ROYW1l
OiBbeyB0aXRsZTogU3RyaW5ncy50ZXh0LnRlc3ROYW1lIH1dLAorICAgIHNjb3JlOiBbeyB0aXRs
ZTogU3RyaW5ncy50ZXh0LnNjb3JlLCB0ZXh0OiBTdHJpbmdzLmpzb24uc2NvcmUgfV0KK307CisK
K3ZhciBTdWl0ZSA9IGZ1bmN0aW9uKG5hbWUsIHRlc3RzKSB7CisgICAgdGhpcy5uYW1lID0gbmFt
ZTsKKyAgICB0aGlzLnRlc3RzID0gdGVzdHM7Cit9OworU3VpdGUucHJvdG90eXBlLnByZXBhcmUg
PSBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkKK3sKKyAg
ICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChl
bGVtZW50KSB7CisgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0pOworfTsKK1N1aXRlLnBy
b3RvdHlwZS5ydW4gPSBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCBwcm9n
cmVzc0JhcikKK3sKKyAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywg
dGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOworfTsKKwordmFyIFN1aXRlcyA9IFtdOworCitT
dWl0ZXMucHVzaChuZXcgU3VpdGUoIkFuaW1vbWV0ZXIiLAorICAgIFsKKyAgICBdCispKTsKKwor
ZnVuY3Rpb24gc3VpdGVGcm9tTmFtZShuYW1lKQoreworICAgIHJldHVybiBTdWl0ZXMuZmluZChm
dW5jdGlvbihzdWl0ZSkgeyByZXR1cm4gc3VpdGUubmFtZSA9PSBuYW1lOyB9KTsKK30KKworZnVu
Y3Rpb24gdGVzdEZyb21OYW1lKHN1aXRlLCBuYW1lKQoreworICAgIHJldHVybiBzdWl0ZS50ZXN0
cy5maW5kKGZ1bmN0aW9uKHRlc3QpIHsgcmV0dXJuIHRlc3QubmFtZSA9PSBuYW1lOyB9KTsKK30K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRl
ci5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NmU2M2IuLjAwMDAwMDAKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgs
IHVzZXItc2NhbGFibGU9bm8iPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVz
b3VyY2VzL2FuaW1vbWV0ZXIuY3NzIj4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0
cmluZ3MuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2FtcGxl
ci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9leHRlbnNpb25z
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RzLmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYW5pbW9tZXRlci5qcyIgZGVmZXI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9kMy5taW4uanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ3JhcGguanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci0gICAgPG1haW4+Ci0gICAgPGRpdiBjbGFzcz0ic3BhY2VyIj48L2Rpdj4KLQot
ICAgIDxzZWN0aW9uIGlkPSJob21lIiBjbGFzcz0ic2VsZWN0ZWQiPgotICAgICAgICA8aGVhZGVy
PgotICAgICAgICAgICAgPGgxPkFuaW1vbWV0ZXI8L2gxPgotICAgICAgICA8L2hlYWRlcj4KLSAg
ICAgICAgPGRpdiBpZD0ic3VpdGVzIj4KLSAgICAgICAgICAgIDxoMj5TdWl0ZXM6PC9oMj4KLSAg
ICAgICAgICAgIDx1bCBjbGFzcz0idHJlZSI+PC91bD4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAg
IDxkaXYgaWQ9Im9wdGlvbnMiPgotICAgICAgICAgICAgPGgyPk9wdGlvbnM6PC9oMj4KLSAgICAg
ICAgICAgIDxmb3JtIG5hbWU9ImJlbmNobWFyay1vcHRpb25zIj4KLSAgICAgICAgICAgIDx1bD4K
LSAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICA8bGFiZWw+VGVzdCBsZW5ndGg6IDxp
bnB1dCB0eXBlPSJudW1iZXIiIGlkPSJ0ZXN0LWludGVydmFsIiB2YWx1ZT0iMTAiPiBzZWNvbmRz
IGVhY2g8L2xhYmVsPgotICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgIDxsaT4KLSAgICAg
ICAgICAgICAgICA8aDM+RGlzcGxheTo8L2gzPgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAg
ICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFtZT0iZGlzcGxheSIgdHlwZT0icmFk
aW8iIHZhbHVlPSJtaW5pbWFsIiBjaGVja2VkPiBNaW5pbWFsPC9sYWJlbD48L2xpPgotICAgICAg
ICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1lPSJkaXNwbGF5IiB0eXBlPSJyYWRp
byIgdmFsdWU9InByb2dyZXNzLWJhciIgY2hlY2tlZD4gUHJvZ3Jlc3MgYmFyPC9sYWJlbD48L2xp
PgotICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCBuYW1lPSJkaXNwbGF5IiB0
eXBlPSJyYWRpbyIgdmFsdWU9InN0YXRpc3RpY3MtdGFibGUiPiBTdGF0aXN0aWNzIHRhYmxlPC9s
YWJlbD48L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICA8L2xpPgotICAg
ICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAgIDxoMz5BZGp1c3RpbmcgdGhlIHRlc3QgY29t
cGxleGl0eTo8L2gzPgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICAgICAg
PGxpPjxsYWJlbD48aW5wdXQgbmFtZT0iYWRqdXN0bWVudCIgdHlwZT0icmFkaW8iIHZhbHVlPSJm
aXhlZCI+IEtlZXAgY29uc3RhbnQ8L2xhYmVsPjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxs
aT48bGFiZWw+PGlucHV0IG5hbWU9ImFkanVzdG1lbnQiIHR5cGU9InJhZGlvIiB2YWx1ZT0iZml4
ZWQtYWZ0ZXItd2FybXVwIj4gS2VlcCBjb25zdGFudCBhZnRlciB3YXJtdXAgdG8gdGFyZ2V0IEZQ
UzwvbGFiZWw+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgbmFt
ZT0iYWRqdXN0bWVudCIgdHlwZT0icmFkaW8iIHZhbHVlPSJhZGFwdGl2ZSIgY2hlY2tlZD4gTWFp
bnRhaW4gdGFyZ2V0IEZQUzwvbGFiZWw+PC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAg
ICAgICAgICAgPC9saT4KLSAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICA8bGFiZWw+
VGFyZ2V0IGZyYW1lIHJhdGU6IDxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJmcmFtZS1yYXRlIiB2
YWx1ZT0iNTAiPiBGUFM8L2xhYmVsPgotICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgIDxs
aT4KLSAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZXN0
aW1hdGVkLWZyYW1lLXJhdGUiIGNoZWNrZWQ+IEZpbHRlciBmcmFtZSByYXRlIGNhbGN1bGF0aW9u
PC9sYWJlbD4KLSAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICA8L3VsPgotICAgICAgICAg
ICAgPC9mb3JtPgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGZvb3Rlcj4KLSAgICAgICAgICAg
IDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxl
ci5zdGFydFRlc3QoKSI+U3RhcnQgVGVzdDwvYnV0dG9uPgotICAgICAgICA8L2Zvb3Rlcj4KLSAg
ICA8L3NlY3Rpb24+Ci0gICAgPHNlY3Rpb24gaWQ9InJ1bm5pbmciPgotICAgICAgICA8ZGl2IGlk
PSJydW5uaW5nLXRlc3QiPjwvZGl2PgotICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcyI+Ci0gICAg
ICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcy1jb21wbGV0ZWQiPjwvZGl2PgotICAgICAgICA8L2Rp
dj4KLSAgICAgICAgPGRpdiBpZD0icmVjb3JkIj4KLSAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0i
cmVzdWx0cy10YWJsZSI+PC90YWJsZT4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9zZWN0aW9uPgot
ICAgIDxzZWN0aW9uIGlkPSJyZXN1bHRzIj4KLSAgICAgICAgPGhlYWRlcj4KLSAgICAgICAgICAg
IDxoMT5SZXN1bHRzOjwvaDE+Ci0gICAgICAgIDwvaGVhZGVyPgotICAgICAgICA8ZGF0YT4KLSAg
ICAgICAgICAgIDx0YWJsZSBjbGFzcz0icmVzdWx0cy10YWJsZSI+PC90YWJsZT4KLSAgICAgICAg
PC9kYXRhPgotICAgICAgICA8Zm9vdGVyPgotICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFy
Z2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNlbGVjdFJlc3VsdHMoKSI+
U2VsZWN0PC9idXR0b24+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24i
IG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc2hvd0pTT04oKSI+SlNPTjwvYnV0dG9uPgot
ICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1h
cmtDb250cm9sbGVyLnN0YXJ0VGVzdCgpIj5UZXN0IEFnYWluPC9idXR0b24+Ci0gICAgICAgIDwv
Zm9vdGVyPgotICAgIDwvc2VjdGlvbj4KLSAgICA8c2VjdGlvbiBpZD0ianNvbiI+Ci0gICAgICAg
IDxoZWFkZXI+Ci0gICAgICAgICAgICA8aDE+SlNPTjo8L2gxPgotICAgICAgICA8L2hlYWRlcj4K
LSAgICAgICAgPGRhdGE+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXN1bHRzLWpzb24iIGNv
bnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Ci0gICAgICAgIDwvZGF0YT4KLSAgICAgICAgPGZv
b3Rlcj4KLSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0i
YmVuY2htYXJrQ29udHJvbGxlci5zZWxlY3RKU09OKCdqc29uJykiPlNlbGVjdDwvYnV0dG9uPgot
ICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1h
cmtDb250cm9sbGVyLnNob3dSZXN1bHRzKCkiPlJlc3VsdHM8L2J1dHRvbj4KLSAgICAgICAgICAg
IDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxl
ci5zdGFydFRlc3QoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPgotICAgICAgICA8L2Zvb3Rlcj4KLSAg
ICA8L3NlY3Rpb24+Ci0gICAgPHNlY3Rpb24gaWQ9InRlc3QtanNvbiI+Ci0gICAgICAgIDxoZWFk
ZXI+Ci0gICAgICAgICAgICA8aDE+SlNPTjo8L2gxPgotICAgICAgICA8L2hlYWRlcj4KLSAgICAg
ICAgPGRhdGE+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXN1bHRzLWpzb24iIGNvbnRlbnRF
ZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Ci0gICAgICAgIDwvZGF0YT4KLSAgICAgICAgPGZvb3Rlcj4K
LSAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2ht
YXJrQ29udHJvbGxlci5zZWxlY3RKU09OKCd0ZXN0LWpzb24nKSI+U2VsZWN0PC9idXR0b24+Ci0g
ICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJnZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFy
a0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMoKSI+UmVzdWx0czwvYnV0dG9uPgotICAgICAgICAgICAg
PGJ1dHRvbiBjbGFzcz0ibGFyZ2UtYnV0dG9uIiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVy
LnN0YXJ0VGVzdCgpIj5UZXN0IEFnYWluPC9idXR0b24+Ci0gICAgICAgIDwvZm9vdGVyPgotICAg
IDwvc2VjdGlvbj4KLSAgICA8c2VjdGlvbiBpZD0idGVzdC1ncmFwaCI+Ci0gICAgICAgIDxoZWFk
ZXI+Ci0gICAgICAgICAgICA8aDE+R3JhcGg6PC9oMT4KLSAgICAgICAgPC9oZWFkZXI+Ci0gICAg
ICAgIDxkYXRhPjwvZGF0YT4KLSAgICAgICAgPGZvb3Rlcj4KLSAgICAgICAgICAgIDxidXR0b24g
Y2xhc3M9ImxhcmdlLWJ1dHRvbiIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVz
dWx0cygpIj5SZXN1bHRzPC9idXR0b24+Ci0gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYXJn
ZS1idXR0b24iIG9uY2xpY2s9ImJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRUZXN0KCkiPlRlc3Qg
QWdhaW48L2J1dHRvbj4KLSAgICAgICAgPC9mb290ZXI+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAg
PGRpdiBjbGFzcz0ic3BhY2VyIj48L2Rpdj4KLSAgICA8L21haW4+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNl
cy9hbmltb21ldGVyLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVz
b3VyY2VzL2FuaW1vbWV0ZXIuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGI3
NmI4Li4wMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVz
b3VyY2VzL2FuaW1vbWV0ZXIuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsNTk5ICswLDAgQEAKLS8q
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SFRNTCBhbmQgQm9keSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gKi8KLWh0bWwsYm9keSB7Ci0gICAgaGVpZ2h0OiAxMDAlOwotICAgIG1hcmdp
bjogMHB4OwotICAgIHBhZGRpbmc6IDBweDsKLX0KLQotYm9keSB7Ci0gICAgYmFja2dyb3VuZC1j
b2xvcjogcmdiKDk2LCA5NiwgOTYpOwotICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Ci0g
ICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgVmVyZGFuYSwgc2Fu
cy1zZXJpZjsKLX0KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQnV0dG9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1idXR0b24gewotICAgIC13ZWJraXQt
YXBwZWFyYW5jZTogbm9uZTsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwotICAgIGJh
Y2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwotfQotCi1idXR0b24ubGFyZ2UtYnV0dG9uIHsK
LSAgICBib3JkZXI6IDNweCBzb2xpZCByZ2IoMjM1LCAyMzUsIDIzNSk7Ci0gICAgYm9yZGVyLXJh
ZGl1czogMTBweDsKLSAgICBtaW4td2lkdGg6IDIwMHB4OwotICAgIHBhZGRpbmc6IC41ZW0gMmVt
OwotICAgIG1hcmdpbjogMCAxZW07Ci0gICAgZm9udC1zaXplOiAyNXB4OwotICAgIGNvbG9yOiBy
Z2IoMjM1LCAyMzUsIDIzNSk7Ci19Ci0KLWJ1dHRvbi5sYXJnZS1idXR0b246YWN0aXZlIHsKLSAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Ci0gICAgY29sb3I6IHJnYig0
NiwgNTEsIDU1KTsKLSAgICBib3JkZXItY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KSAhaW1wb3J0
YW50OwotfQotCi1idXR0b24ubGFyZ2UtYnV0dG9uOmRpc2FibGVkIHsKLSAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoOTYsIDk2LCA5Nik7Ci0gICAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsK
LX0KLQotYnV0dG9uLnNtYWxsLWJ1dHRvbiB7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgRGFya0N5
YW47Ci0gICAgYm9yZGVyLXJhZGl1czogMnB4OwotICAgIHBhZGRpbmc6IDFweCA0cHg7Ci0gICAg
bWFyZ2luOiAwIDRweDsKLSAgICBmb250LXNpemU6IDlweDsKLSAgICBjb2xvcjogYmxhY2s7Ci19
Ci0KLWJ1dHRvbi5zbWFsbC1idXR0b246YWN0aXZlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBE
YXJrQ3lhbjsKLSAgICBjb2xvcjogcmdiKDQ2LCA1MSwgNTUpOwotICAgIGJvcmRlci1jb2xvcjog
RGFya0N5YW4gIWltcG9ydGFudDsKLX0KLQotQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1kZXZpY2Ut
d2lkdGg6IDQxNHB4KSB7Ci0gICAgYnV0dG9uLmxhcmdlLWJ1dHRvbiB7Ci0gICAgICAgIG1hcmdp
bjogMWVtIDA7Ci0gICAgfQotfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVHJlZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS50cmVlIHsKLSAgICBw
YWRkaW5nOiAwOwotICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKLX0KLQotLnRyZWUgLmV4cGFu
ZC1idXR0b24gewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBjbGlwOiByZWN0KDAsIDAs
IDAsIDApOwotfQotCi0udHJlZSAuZXhwYW5kLWJ1dHRvbiB+IHVsIHsKLSAgICBkaXNwbGF5OiBu
b25lOwotfQotCi0udHJlZSAuZXhwYW5kLWJ1dHRvbjpjaGVja2VkIH4gdWwgewotICAgIGRpc3Bs
YXk6IGJsb2NrOwotfQotCi0udHJlZSB1bCB7Ci0gICAgbGlzdC1zdHlsZS10eXBlOm5vbmU7Ci19
Ci0KLS50cmVlIGxpIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgcGFkZGluZzogMCAw
IDFlbSAxZW07Ci19Ci0KLS50cmVlIHVsIGxpIHsKLSAgICBsaXN0LXN0eWxlOm5vbmU7Ci0gICAg
cGFkZGluZzogMWVtIDAgMCAwZW07Ci19Ci0KLS50cmVlID4gbGk6bGFzdC1jaGlsZCB7Ci0gICAg
cGFkZGluZy1ib3R0b206IDA7Ci19Ci0KLS50cmVlLWxhYmVsIHsKLSAgcG9zaXRpb246IHJlbGF0
aXZlOwotICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci19Ci0KLWxhYmVsLnRyZWUtbGFiZWwgewot
ICAgIGN1cnNvcjogcG9pbnRlcjsKLX0KLQotLnRyZWUgPiBsaSA+IGxhYmVsLnRyZWUtbGFiZWw6
YmVmb3JlIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgei1pbmRleDogMTsKLSAgICBm
bG9hdDogbGVmdDsKLSAgICBtYXJnaW46IDAgMCAwIC0yZW07Ci0gICAgd2lkdGg6IDFlbTsKLSAg
ICBoZWlnaHQ6IDFlbTsKLSAgICBjb250ZW50OiAnXDI1QkEnOwotICAgIHRleHQtYWxpZ246IGNl
bnRlcjsKLSAgICBsaW5lLWhlaWdodDogMi41ZW07Ci0gICAgZm9udC1zaXplOiAuNWVtOwotfQot
Ci0udHJlZSA+IGxpID4gOmNoZWNrZWQgfiBsYWJlbC50cmVlLWxhYmVsOmJlZm9yZSB7Ci0gICAg
Y29udGVudDogJ1wyNUJDJzsKLX0KLQotQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lk
dGg6IDQxNHB4KSB7Ci0gICAgLnRyZWUgewotICAgICAgICBwYWRkaW5nLWxlZnQ6IDFlbTsKLSAg
ICB9Ci0gICAgLnRyZWUgPiBsaSA+IGxhYmVsLnRyZWUtbGFiZWw6YmVmb3JlIHsKLSAgICAgICAg
Zm9udC1zaXplOiAxZW07Ci0gICAgICAgIG1hcmdpbi1sZWZ0OiAtMS43NWVtOwotICAgICAgICBs
aW5lLWhlaWdodDogMWVtOwotICAgIH0KLX0KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8q
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0cyBUYWJsZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi10YWJsZS5y
ZXN1bHRzLXRhYmxlIHsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBib3JkZXI6IDJweCBzb2xpZCBE
YXJrQ3lhbjsKLSAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwotfQotCi0ucmVzdWx0cy10
YWJsZSB0aCwKLS5yZXN1bHRzLXRhYmxlIHRkIHsKLSAgICBmb250LXNpemU6IDExcHg7Ci0gICAg
cGFkZGluZzogM3B4IDRweCAycHggNHB4OwotfQotCi0ucmVzdWx0cy10YWJsZSB0aCB7Ci0gICAg
YmFja2dyb3VuZDogRGFya0N5YW47Ci0gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBMaWdodEN5
YW47Ci0gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgTGlnaHRDeWFuOwotICAgIGJvcmRlci10
b3A6IDFweCBzb2xpZCBMaWdodEN5YW47Ci19Ci0KLS5yZXN1bHRzLXRhYmxlIHRkIHsKLSAgICBi
YWNrZ3JvdW5kOiB3aGl0ZTsKLSAgICBib3JkZXItYm90dG9tOiBub25lOwotICAgIGJvcmRlci1s
ZWZ0OiBub25lOwotICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIERhcmtDeWFuOwotICAgIGJv
cmRlci10b3A6IDFweCBzb2xpZCBEYXJrQ3lhbjsKLSAgICBjb2xvcjogYmxhY2s7Ci19Ci0KLS5y
ZXN1bHRzLXRhYmxlIHRkLm5vaXN5LXJlc3VsdHMgewotICAgIGNvbG9yOiByZWQ7Ci19Ci0KLS5y
ZXN1bHRzLXRhYmxlIHRkLnN1aXRlcy1zZXBhcmF0b3IgewotICAgIGJhY2tncm91bmQtY29sb3I6
IHllbGxvdzsKLX0KLSAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlc3VsdHMgSlNPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLwotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotZGl2LnJlc3VsdHMtanNvbiB7Ci0g
ICAgd2lkdGg6IDEwMCU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgp
OwotICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Ci0gICAgd2hpdGUtc3BhY2U6IHByZTsK
LSAgICBmb250LXNpemU6IDEycHg7Ci19Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4gTGF5b3V0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLwotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotbWFpbiB7Ci0g
ICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiAxMDAlOwotICAgIGRpc3BsYXk6IC1tcy1mbGV4
Ym94OwotICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKLSAgICBkaXNwbGF5OiBmbGV4OwotCi0g
ICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50
ZXI7Ci0gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKLSAgICBhbGlnbi1pdGVtczogY2Vu
dGVyOwotCi0gICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Ci0gICAgLW1z
LWZsZXgtcGFjazogZmxleC1zdGFydDsKLSAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7
Ci0KLSAgICAtd2Via2l0LWZsZXgtZmxvdzogY29sdW1uOwotICAgIGZsZXgtZmxvdzogY29sdW1u
OwotfQotCi0uc3BhY2VyIHsKLSAgICAtd2Via2l0LWZsZXg6IDEgMCAyMHB4OwotICAgIC1tcy1m
bGV4OiAxIDAgMjBweDsKLSAgICBmbGV4OiAxIDAgMjBweDsKLSAgICB3aWR0aDogMTBweDsKLX0K
LQotc2VjdGlvbiB7Ci0gICAgd2lkdGg6IDgwMHB4OwotICAgIGhlaWdodDogNjAwcHg7Ci0gICAg
ZGlzcGxheTogbm9uZTsKLSAgICBwYWRkaW5nOiAxMHB4OwotfQotCi0jaG9tZSB7Ci0gICAgbWlu
LWhlaWdodDogNjAwcHg7Ci0gICAgaGVpZ2h0OiBhdXRvOwotfQotCi0uZGlzcGxheS1wcm9ncmVz
cy1iYXIgc2VjdGlvbiwKLS5kaXNwbGF5LXN0YXRpc3RpY3MtdGFibGUgc2VjdGlvbiB7Ci0gICAg
Ym9yZGVyOiA2cHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUpOwotICAgIGJvcmRlci1yYWRpdXM6
IDIwcHg7Ci19Ci0KLXNlY3Rpb24uc2VsZWN0ZWQgewotICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94
OwotICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKLSAgICBkaXNwbGF5OiBmbGV4OwotfQotCi1z
ZWN0aW9uID4gaGVhZGVyLAotc2VjdGlvbiA+IGZvb3RlciB7Ci0gICAgbWFyZ2luOiAxMHB4Owot
ICAgIHBhZGRpbmc6IDEwcHg7Ci0gICAgLXdlYmtpdC1mbGV4OiAwIDEgMTAwJTsKLSAgICAtbXMt
ZmxleDogMCAxIDEwMCU7Ci0gICAgZmxleDogMCAxIDEwMCU7Ci0gICAgbWF4LWhlaWdodDogMTUl
OwotfQotCi1zZWN0aW9uID4gZm9vdGVyIHsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAg
Y2xlYXI6IGJvdGg7Ci0gICAgZGlzcGxheTogLW1zLWZsZXhib3g7Ci0gICAgZGlzcGxheTogLXdl
YmtpdC1mbGV4OwotICAgIGRpc3BsYXk6IGZsZXg7Ci0gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRl
cjsKLSAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0gICAgLXdlYmtpdC1ib3gtYWxp
Z246IGNlbnRlcjsKLSAgICBhbGlnbi1pdGVtczogY2VudGVyOwotICAgIC13ZWJraXQtanVzdGlm
eS1jb250ZW50OiBjZW50ZXI7Ci0gICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwotICAgIGp1c3Rp
ZnktY29udGVudDogY2VudGVyOwotfQotCi1AbWVkaWEgc2NyZWVuIGFuZCAobWluLWRldmljZS13
aWR0aDogMTgwMHB4KSB7Ci0gICAgc2VjdGlvbiB7Ci0gICAgICAgIHdpZHRoOiAxNjAwcHg7Ci0g
ICAgICAgIGhlaWdodDogODAwcHg7Ci0gICAgfQotCi0gICAgI2hvbWUgewotICAgICAgICBtaW4t
aGVpZ2h0OiA4MDBweDsKLSAgICB9Ci19Ci0KLUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtZGV2aWNl
LXdpZHRoOiA0MTRweCkgewotICAgIC5zcGFjZXIgewotICAgICAgICAtd2Via2l0LWZsZXg6IDAg
MCAwOwotICAgICAgICAtbXMtZmxleDogMCAwIDA7Ci0gICAgICAgIGZsZXg6IDAgMCAwOwotICAg
IH0KLQotICAgIHNlY3Rpb24gewotICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAg
ICAgICB3aWR0aDogMTAwJTsKLSAgICAgICAgaGVpZ2h0OiAxMDAlOwotICAgICAgICBhbGlnbi1z
ZWxmOiBzdHJldGNoOwotICAgICAgICBwYWRkaW5nOiAwIDVweDsKLSAgICB9Ci0KLSAgICAjaG9t
ZSB7Ci0gICAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7Ci0gICAgfQotCi0gICAgLmRpc3BsYXktcHJv
Z3Jlc3MtYmFyIHNlY3Rpb24sCi0gICAgLmRpc3BsYXktc3RhdGlzdGljcy10YWJsZSBzZWN0aW9u
IHsKLSAgICAgICAgYm9yZGVyOiAwOwotICAgIH0KLQotICAgIHNlY3Rpb24gPiBmb290ZXIgewot
ICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Ci0gICAgICAgIC1tcy1mbGV4
LWRpcmVjdGlvbjogY29sdW1uOwotICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwotICAg
ICAgICBtYXgtaGVpZ2h0OiBpbml0aWFsOwotICAgIH0KLX0KLQotLyogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG9tZSBTZWN0aW9uICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwot
Ci0jaG9tZSB7Ci0gICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93OwotICAgIC1tcy1mbGV4
LWRpcmVjdGlvbjogcm93OwotICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7Ci0gICAgLXdlYmtpdC1m
bGV4LXdyYXA6IHdyYXA7Ci0gICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKLSAgICBmbGV4LXdyYXA6
IHdyYXA7Ci0gICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBjZW50ZXI7Ci0gICAgLW1zLWZsZXgt
bGluZS1wYWNrOiBjZW50ZXI7Ci0gICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKLX0KLQot
I2hvbWUgaDIgewotICAgIGZvbnQtc2l6ZTogMS4yZW07Ci19Ci0KLSNzdWl0ZXMsCi0jb3B0aW9u
cyB7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBtYXJnaW46IDEwcHg7Ci19Ci0KLSNzdWl0ZXMg
ewotICAgIHBhZGRpbmctbGVmdDogNDBweDsKLSAgICAtd2Via2l0LWZsZXg6IDAgMSA0MCU7Ci0g
ICAgLW1zLWZsZXg6IDAgMSA0MCU7Ci0gICAgZmxleDogMCAxIDQwJTsKLX0KLQotI29wdGlvbnMg
ewotICAgIC13ZWJraXQtZmxleDogMSAxIGF1dG87Ci0gICAgLW1zLWZsZXg6IDEgMSBhdXRvOwot
ICAgIGZsZXg6IDEgMSBhdXRvOwotfQotCi0jaG9tZSA+IGhlYWRlciA+IGgxIHsKLSAgICBtYXJn
aW46IDAgYXV0bzsKLSAgICB3aWR0aDogNzAlOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0K
LQotI2hvbWUgaW5wdXRbdHlwZT0ibnVtYmVyIl0gewotICAgIHdpZHRoOiA1MHB4OwotfQotIAot
I3N1aXRlcyBpbnB1dFt0eXBlPSJudW1iZXIiXSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICBm
bG9hdDogcmlnaHQ7Ci19Ci0KLSNzdWl0ZXMgaW5wdXRbdHlwZT0ibnVtYmVyIl0uc2VsZWN0ZWQg
ewotICAgIGRpc3BsYXk6IGlubGluZTsKLSAgICBtYXJnaW46IDA7Ci19Ci0KLSNzdWl0ZXMgdWwg
dWwgewotICAgIGZvbnQtc2l6ZTogLjhlbTsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzog
MCAwIDAgMWVtOwotfQotCi0jb3B0aW9ucyB1bCB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRp
bmc6IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLX0KLQotI29wdGlvbnMgaDMgewotICAgIGZv
bnQtc2l6ZTogMWVtOwotICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwotICAgIG1hcmdpbjogMCAw
IC4zZW0gMDsKLSAgICBwYWRkaW5nOiAwOwotfQotCi0jb3B0aW9ucyA+IGZvcm0gPiB1bCA+IGxp
IHsKLSAgICBwYWRkaW5nOiAwIDAgMWVtIDA7Ci19Ci0KLSNvcHRpb25zIHVsIHVsIHsKLSAgICBw
YWRkaW5nOiAwOwotfQotCi0jb3B0aW9ucyBsaSB7Ci0gICAgcGFkZGluZzogLjFlbSAwOwotfQot
Ci1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogNDE0cHgpIHsKLSAgICAjc3Vp
dGVzLAotICAgICNvcHRpb25zIHsKLSAgICAgICAgcGFkZGluZzogMCA1cHg7Ci0gICAgICAgIG1h
cmdpbjogMDsKLSAgICB9Ci0gICAgI3N1aXRlcyB7Ci0gICAgICAgIC13ZWJraXQtZmxleDogMCAx
IDEwMCU7Ci0gICAgICAgIC1tcy1mbGV4OiAwIDEgMTAwJTsKLSAgICAgICAgZmxleDogMCAxIDEw
MCU7Ci0gICAgfQotfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogICAgICAgICAgICAg
ICAgICAgICAgICAgICBSdW5uaW5nIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNydW5uaW5nIHsKLSAgICBwb3Np
dGlvbjogcmVsYXRpdmU7Ci0gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0
LWFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKLSAg
ICBhbGlnbi1pdGVtczogY2VudGVyOwotICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50
ZXI7Ci0gICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwotICAgIGp1c3RpZnktY29udGVudDogY2Vu
dGVyOwotfQotCi0jcnVubmluZy10ZXN0IHsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBoZWlnaHQ6
IDEwMCU7Ci19Ci0KLSNydW5uaW5nLXRlc3QgPiBpZnJhbWUgewotICAgIHdpZHRoOiA4MDBweDsK
LSAgICBoZWlnaHQ6IDYwMHB4OwotICAgIGJvcmRlcjogMHB4IG5vbmU7Ci0gICAgb3ZlcmZsb3c6
IGhpZGRlbjsKLX0KLQotI3Byb2dyZXNzLCAjcmVjb3JkIHsKLSAgICBkaXNwbGF5OiBub25lOwot
fQotCi0uZGlzcGxheS1wcm9ncmVzcy1iYXIgI3Byb2dyZXNzLAotLmRpc3BsYXktc3RhdGlzdGlj
cy10YWJsZSAjcHJvZ3Jlc3MgewotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKLSAgICBib3R0b206IC02cHg7Ci0gICAgbGVmdDogNjBweDsKLSAgICByaWdodDog
NjBweDsKLSAgICBoZWlnaHQ6IDZweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTI4LCAx
MjgsIDEyOCk7Ci0gICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCByZ2IoNDYsIDUxLCA1NSk7Ci0g
ICAgYm9yZGVyLXJpZ2h0OiA2cHggc29saWQgcmdiKDQ2LCA1MSwgNTUpOwotfQotCi0uZGlzcGxh
eS1wcm9ncmVzcy1iYXIgI3Byb2dyZXNzLWNvbXBsZXRlZCwKLS5kaXNwbGF5LXN0YXRpc3RpY3Mt
dGFibGUgI3Byb2dyZXNzLWNvbXBsZXRlZCB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IHRvcDogMDsKLSAgICBsZWZ0OiAwOwotICAgIGhlaWdodDogNnB4OwotICAgIHdpZHRoOiAwOwot
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKLX0KLQotLmRpc3BsYXkt
cHJvZ3Jlc3MtYmFyICNyZWNvcmQsCi0uZGlzcGxheS1zdGF0aXN0aWNzLXRhYmxlICNyZWNvcmQg
ewotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBib3R0
b206IC05NXB4OwotICAgIGxlZnQ6IDBweDsKLSAgICByaWdodDogMHB4OwotICAgIHBhZGRpbmc6
IDE2cHg7Ci19Ci0KLUBtZWRpYSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoOiAxODAwcHgp
IHsKLSAgICAjcnVubmluZy10ZXN0ID4gaWZyYW1lIHsKLSAgICAgICAgd2lkdGg6IDE2MDBweDsK
LSAgICAgICAgaGVpZ2h0OiA4MDBweDsKLSAgICB9Ci19Ci0KLUBtZWRpYSBzY3JlZW4gYW5kICht
YXgtZGV2aWNlLXdpZHRoOiA0MTRweCkgewotICAgICNydW5uaW5nIHsKLSAgICAgICAgcGFkZGlu
ZzogMDsKLSAgICB9Ci0KLSAgICAjcnVubmluZy10ZXN0IHsKLSAgICAgICAgb3ZlcmZsb3c6IGhp
ZGRlbjsKLSAgICB9Ci0KLSAgICAjcnVubmluZy10ZXN0ID4gaWZyYW1lIHsKLSAgICAgICAgd2lk
dGg6IGNhbGMoMTAwJSk7Ci0gICAgICAgIGhlaWdodDogY2FsYygxMDAlKTsKLSAgICB9Ci19Ci0v
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1
bHRzIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tICovCi0KLXNlY3Rpb24jcmVzdWx0cywKLXNlY3Rpb24janNvbiwKLXNlY3Rp
b24jdGVzdC1qc29uLAotc2VjdGlvbiN0ZXN0LWdyYXBoIHsKLSAgICAtd2Via2l0LWZsZXgtZGly
ZWN0aW9uOiByb3c7Ci0gICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7Ci0gICAgZmxleC1kaXJl
Y3Rpb246IHJvdzsKLSAgICAtd2Via2l0LWZsZXgtd3JhcDogd3JhcDsKLSAgICAtbXMtZmxleC13
cmFwOiB3cmFwOwotICAgIGZsZXgtd3JhcDogd3JhcDsKLSAgICAtd2Via2l0LWp1c3RpZnktY29u
dGVudDogc3BhY2UtYmV0d2VlbjsKLSAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwotICAgIGp1
c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKLSAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6
IHNwYWNlLWJldHdlZW47Ci0gICAgLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5OwotICAgIGFs
aWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47Ci0gICAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxl
eC1zdGFydDsKLSAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7Ci0gICAgYWxpZ24taXRlbXM6IGZs
ZXgtc3RhcnQ7Ci19Ci0KLXNlY3Rpb24jcmVzdWx0cyA+IGRhdGEsCi1zZWN0aW9uI2pzb24gPiBk
YXRhLAotc2VjdGlvbiN0ZXN0LWpzb24gPiBkYXRhLAotc2VjdGlvbiN0ZXN0LWdyYXBoID4gZGF0
YSB7Ci0gICAgb3ZlcmZsb3cteTogc2Nyb2xsOwotICAgIGhlaWdodDogNzAlOwotICAgIC13ZWJr
aXQtZmxleDogMCAxIDEwMCU7Ci0gICAgLW1zLWZsZXg6IDAgMSAxMDAlOwotICAgIGZsZXg6IDAg
MSAxMDAlOwotICAgIC13ZWJraXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKLSAgICAtbXMtZmxleC1p
dGVtLWFsaWduOiBzdHJldGNoOwotICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7Ci19Ci0KLS8qIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoIFNl
Y3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gKi8KLQotc2VjdGlvbiN0ZXN0LWdyYXBoID4gZGF0YSB7Ci0gICAgZm9udDogMTBw
eCBzYW5zLXNlcmlmOwotICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Ci19Ci0KLXNlY3Rp
b24jdGVzdC1ncmFwaCA+IGRhdGEgPiBzdmcgewotICAgIGZpbGw6IG5vbmU7Ci19Ci0KLS5heGlz
IHBhdGgsCi0uYXhpcyBsaW5lIHsKLSAgICBmaWxsOiBub25lOwotICAgIHN0cm9rZTogIzk5OTk5
OTsKLSAgICBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7Ci19Ci0KLS5sZWZ0LXNhbXBsZXMg
ewotICAgIHN0cm9rZTogIzdBREQ0OTsKLSAgICBzdHJva2Utd2lkdGg6IDEuNXB4OwotfQotCi0u
cmlnaHQtc2FtcGxlcyB7Ci0gICAgc3Ryb2tlOiAjRkE0OTI1OwotICAgIHN0cm9rZS13aWR0aDog
MS41cHg7Ci19Ci0KLS5zYW1wbGUtdGltZSB7Ci0gICAgc3Ryb2tlOiAjNTQ5M0Q2OwotfQotCi0u
bGVmdC1tZWFuIHsKLSAgICBzdHJva2U6ICM3QURENDk7Ci0gICAgb3BhY2l0eTogLjg7Ci19Ci0K
LS5yaWdodC1tZWFuIHsKLSAgICBzdHJva2U6ICNGQTQ5MjU7Ci0gICAgb3BhY2l0eTogLjg7Ci19
Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAg
IEpTT04gU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gKi8KLQotc2VjdGlvbiNqc29uID4gZGF0YSwKLXNlY3Rpb24jdGVzdC1q
c29uID4gZGF0YSB7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUpOwot
ICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRjNDUxMC4uMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzCisrKyAvZGV2
L251bGwKQEAgLTEsNDk3ICswLDAgQEAKLXdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQgPSB7
Ci0gICAgaXRlcmF0aW9uQ291bnQ6IDEsCi0gICAgdGVzdHNDb3VudDogbnVsbCwKLSAgICBwcm9n
cmVzc0JhcjogbnVsbCwKLSAgICByZWNvcmRUYWJsZTogbnVsbCwKLSAgICBvcHRpb25zOiBudWxs
LAotICAgIHNjb3JlOiAwLAotICAgIF9yZXN1bHRzRGFzaGJvYXJkOiBudWxsLAotICAgIF9yZXN1
bHRzVGFibGU6IG51bGwsCi0gICAgCi0gICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oc3VpdGVzLCBv
cHRpb25zKQotICAgIHsKLSAgICAgICAgdGhpcy50ZXN0c0NvdW50ID0gdGhpcy5pdGVyYXRpb25D
b3VudCAqIHN1aXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGNvdW50LCBzdWl0ZSkgeyByZXR1cm4gY291
bnQgKyBzdWl0ZS50ZXN0cy5sZW5ndGg7IH0sIDApOwotICAgICAgICB0aGlzLm9wdGlvbnMgPSBv
cHRpb25zOwotICAgIH0sCi0KLSAgICB3aWxsQWRkVGVzdEZyYW1lOiBmdW5jdGlvbiAoZnJhbWUp
Ci0gICAgewotICAgICAgICB2YXIgbWFpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1haW4i
KTsKLSAgICAgICAgdmFyIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShtYWluKTsKLSAgICAgICAg
ZnJhbWUuc3R5bGUubGVmdCA9IG1haW4ub2Zmc2V0TGVmdCArIHBhcnNlSW50KHN0eWxlLmJvcmRl
ckxlZnRXaWR0aCkgKyBwYXJzZUludChzdHlsZS5wYWRkaW5nTGVmdCkgKyAicHgiOwotICAgICAg
ICBmcmFtZS5zdHlsZS50b3AgPSBtYWluLm9mZnNldFRvcCArIHBhcnNlSW50KHN0eWxlLmJvcmRl
clRvcFdpZHRoKSArIHBhcnNlSW50KHN0eWxlLnBhZGRpbmdUb3ApICsgInB4IjsKLSAgICB9LAot
ICAgIAotICAgIGRpZFJ1blRlc3Q6IGZ1bmN0aW9uICgpCi0gICAgewotICAgICAgICB0aGlzLnBy
b2dyZXNzQmFyLmluY1JhbmdlKCk7Ci0gICAgfSwKLSAgICAKLSAgICB3aWxsU3RhcnRGaXJzdEl0
ZXJhdGlvbjogZnVuY3Rpb24gKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Jlc3VsdHNEYXNoYm9h
cmQgPSBuZXcgUmVzdWx0c0Rhc2hib2FyZCgpOwotICAgICAgICB0aGlzLl9yZXN1bHRzVGFibGUg
PSBuZXcgUmVzdWx0c1RhYmxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNlY3Rpb24jcmVzdWx0
cyA+IGRhdGEgPiB0YWJsZSIpLCBIZWFkZXJzKTsKLSAgICAgICAgCi0gICAgICAgIHRoaXMucHJv
Z3Jlc3NCYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2dy
ZXNzLWNvbXBsZXRlZCIpLCB0aGlzLnRlc3RzQ291bnQpOwotICAgICAgICB0aGlzLnJlY29yZFRh
YmxlID0gbmV3IFJlc3VsdHNUYWJsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzZWN0aW9uI3J1
bm5pbmcgI3JlY29yZCA+IHRhYmxlIiksIEhlYWRlcnMpOwotICAgIH0sCi0gICAgCi0gICAgZGlk
UnVuU3VpdGVzOiBmdW5jdGlvbiAoc3VpdGVzU2FtcGxlcnMpCi0gICAgewotICAgICAgICB0aGlz
Ll9yZXN1bHRzRGFzaGJvYXJkLnB1c2goc3VpdGVzU2FtcGxlcnMpOwotICAgIH0sCi0gICAgCi0g
ICAgZGlkRmluaXNoTGFzdEl0ZXJhdGlvbjogZnVuY3Rpb24gKCkKLSAgICB7Ci0gICAgICAgIHZh
ciBqc29uID0gdGhpcy5fcmVzdWx0c0Rhc2hib2FyZC50b0pTT04odHJ1ZSwgdHJ1ZSk7Ci0gICAg
ICAgIHRoaXMuc2NvcmUgPSBqc29uW1N0cmluZ3MuanNvbi5zY29yZV07Ci0gICAgICAgIHRoaXMu
X3Jlc3VsdHNUYWJsZS5zaG93SXRlcmF0aW9ucyhqc29uW1N0cmluZ3MuanNvbi5yZXN1bHRzLml0
ZXJhdGlvbnNdLCB0aGlzLm9wdGlvbnMpOwotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd0pT
T04oImpzb24iLCBqc29uW1N0cmluZ3MuanNvbi5yZXN1bHRzLml0ZXJhdGlvbnNdWzBdKTsKLSAg
ICAgICAgc3VpdGVzTWFuYWdlci51cGRhdGVMb2NhbFN0b3JhZ2VGcm9tSlNPTihqc29uW1N0cmlu
Z3MuanNvbi5yZXN1bHRzLml0ZXJhdGlvbnNdWzBdKTsKLSAgICAgICAgYmVuY2htYXJrQ29udHJv
bGxlci5zaG93UmVzdWx0cygpOwotICAgIH0KLX0KLQotd2luZG93LnNlY3Rpb25zTWFuYWdlciA9
Ci17Ci0gICAgX3NlY3Rpb25IZWFkZXJIMUVsZW1lbnQ6IGZ1bmN0aW9uKHNlY3Rpb25JZGVudGlm
aWVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiMiICsg
c2VjdGlvbklkZW50aWZpZXIgKyAiID4gaGVhZGVyID4gaDEiKTsKLSAgICB9LAotCi0gICAgX3Nl
Y3Rpb25EYXRhRWxlbWVudDogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIpCi0gICAgewotICAg
ICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiIyIgKyBzZWN0aW9uSWRlbnRpZmll
ciArICIgPiBkYXRhIik7Ci0gICAgfSwKLSAgICAKLSAgICBfc2VjdGlvbkRhdGFEaXZFbGVtZW50
OiBmdW5jdGlvbihzZWN0aW9uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCIjIiArIHNlY3Rpb25JZGVudGlmaWVyICsgIiA+ICBkYXRhID4g
ZGl2Iik7Ci0gICAgfSwKLSAgICAKLSAgICBzaG93U2NvcmU6IGZ1bmN0aW9uKHNlY3Rpb25JZGVu
dGlmaWVyLCB0aXRsZSkKLSAgICB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fc2VjdGlv
bkhlYWRlckgxRWxlbWVudChzZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgICAgIGVsZW1lbnQudGV4
dENvbnRlbnQgPSB0aXRsZSArICI6IjsKLQotICAgICAgICB2YXIgc2NvcmUgPSBiZW5jaG1hcmtS
dW5uZXJDbGllbnQuc2NvcmUudG9GaXhlZCgyKTsKLSAgICAgICAgZWxlbWVudC50ZXh0Q29udGVu
dCArPSAiIFsiICsgU3RyaW5ncy50ZXh0LnNjb3JlICsgIiA9ICIgKyBzY29yZSArICJdIjsKLSAg
ICB9LAotICAgIAotICAgIHNob3dUZXN0TmFtZTogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIs
IHRpdGxlLCB0ZXN0TmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fc2Vj
dGlvbkhlYWRlckgxRWxlbWVudChzZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgICAgIGVsZW1lbnQu
dGV4dENvbnRlbnQgPSB0aXRsZSArICI6IjsKLQotICAgICAgICBpZiAoIXRlc3ROYW1lLmxlbmd0
aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICBlbGVtZW50LnRl
eHRDb250ZW50ICs9ICIgWyIgKyBTdHJpbmdzLnRleHQudGVzdE5hbWUgKyAiID0gIiArIHRlc3RO
YW1lICsgIl0iOwotICAgIH0sCi0gICAgCi0gICAgc2hvd0pTT046IGZ1bmN0aW9uKHNlY3Rpb25J
ZGVudGlmaWVyLCBqc29uKQotICAgIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9zZWN0
aW9uRGF0YURpdkVsZW1lbnQoc2VjdGlvbklkZW50aWZpZXIpOwotICAgICAgICBlbGVtZW50LnRl
eHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnkoanNvbiwgZnVuY3Rpb24oa2V5LCB2YWx1ZSkgeyAK
LSAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gIm51bWJlciIpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQoMik7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0g
ICAgICAgIH0sIDQpOwotICAgIH0sCi0gICAgCi0gICAgc2VsZWN0RGF0YTogZnVuY3Rpb24oc2Vj
dGlvbklkZW50aWZpZXIpCi0gICAgewotICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVt
b3ZlQWxsUmFuZ2VzKCk7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fc2VjdGlvbkRhdGFF
bGVtZW50KHNlY3Rpb25JZGVudGlmaWVyKTsKLSAgICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKLSAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZShlbGVtZW50KTsKLSAgICAg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsgIAotICAgIH0sCi0gICAg
Ci0gICAgc2VsZWN0RGF0YUNvbnRlbnRzOiBmdW5jdGlvbihzZWN0aW9uSWRlbnRpZmllcikKLSAg
ICB7Ci0gICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKLSAg
ICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9zZWN0aW9uRGF0YURpdkVsZW1lbnQoc2VjdGlvbklk
ZW50aWZpZXIpOwotICAgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwot
ICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWxlbWVudCk7Ci0gICAgICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Ci0gICAgfSwKLSAgICAgICAgCi0gICAg
c2hvd1NlY3Rpb246IGZ1bmN0aW9uKHNlY3Rpb25JZGVudGlmaWVyLCBwdXNoU3RhdGUpCi0gICAg
ewotICAgICAgICB2YXIgY3VycmVudFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3Rvcigic2VjdGlvbi5zZWxlY3RlZCIpOwotICAgICAgICBjb25zb2xlLmFzc2VydChjdXJyZW50
U2VjdGlvbkVsZW1lbnQpOwotCi0gICAgICAgIHZhciBuZXdTZWN0aW9uRWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb25JZGVudGlmaWVyKTsKLSAgICAgICAgY29uc29sZS5h
c3NlcnQobmV3U2VjdGlvbkVsZW1lbnQpOwotCi0gICAgICAgIGN1cnJlbnRTZWN0aW9uRWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpOwotICAgICAgICBuZXdTZWN0aW9uRWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOwotCi0gICAgICAgIGlmIChwdXNoU3RhdGUpCi0g
ICAgICAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7c2VjdGlvbjogc2VjdGlvbklkZW50aWZpZXJ9
LCBkb2N1bWVudC50aXRsZSk7Ci0gICAgfSwKLQotICAgIHNldHVwUnVubmluZ1NlY3Rpb25TdHls
ZTogZnVuY3Rpb24ob3B0aW9ucykKLSAgICB7Ci0gICAgICAgIGlmIChvcHRpb25zWyJkaXNwbGF5
Il0gIT0gInN0YXRpc3RpY3MtdGFibGUiKQotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlY29yZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gICAgfQotfQotCi13aW5k
b3cub3B0aW9uc01hbmFnZXIgPQotewotICAgIHZhbHVlRm9yT3B0aW9uOiBmdW5jdGlvbihuYW1l
KQotICAgIHsKLSAgICAgICAgdmFyIGZvcm1FbGVtZW50ID0gZG9jdW1lbnQuZm9ybXNbImJlbmNo
bWFyay1vcHRpb25zIl0uZWxlbWVudHNbbmFtZV07Ci0gICAgICAgIGlmIChmb3JtRWxlbWVudC50
eXBlID09ICJjaGVja2JveCIpCi0gICAgICAgICAgICByZXR1cm4gZm9ybUVsZW1lbnQuY2hlY2tl
ZDsKLSAgICAgICAgcmV0dXJuIGZvcm1FbGVtZW50LnZhbHVlOwotICAgIH0sCi0gICAgCi0gICAg
dXBkYXRlVUlGcm9tTG9jYWxTdG9yYWdlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIg
Zm9ybUVsZW1lbnRzID0gZG9jdW1lbnQuZm9ybXNbImJlbmNobWFyay1vcHRpb25zIl0uZWxlbWVu
dHM7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3JtRWxlbWVudHMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgIHZhciBmb3JtRWxlbWVudCA9IGZvcm1FbGVtZW50c1tpXTsKLSAg
ICAgICAgICAgIHZhciBuYW1lID0gZm9ybUVsZW1lbnQuaWQgfHwgZm9ybUVsZW1lbnQubmFtZTsK
LSAgICAgICAgICAgIHZhciB0eXBlID0gZm9ybUVsZW1lbnQudHlwZTsKLQotICAgICAgICAgICAg
dmFyIHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7Ci0gICAgICAgICAgICBpZiAo
dmFsdWUgPT09IG51bGwpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAg
IGlmICh0eXBlID09ICJudW1iZXIiKQotICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50c1tuYW1l
XS52YWx1ZSA9ICt2YWx1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImNoZWNrYm94
IikKLSAgICAgICAgICAgICAgICBmb3JtRWxlbWVudHNbbmFtZV0uY2hlY2tlZCA9IHZhbHVlID09
ICJ0cnVlIjsKLSAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInJhZGlvIikKLSAgICAgICAg
ICAgICAgICBmb3JtRWxlbWVudHNbbmFtZV0udmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgfQotICAg
IH0sCi0KLSAgICB1cGRhdGVMb2NhbFN0b3JhZ2VGcm9tVUk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHZhciBmb3JtRWxlbWVudHMgPSBkb2N1bWVudC5mb3Jtc1siYmVuY2htYXJrLW9wdGlv
bnMiXS5lbGVtZW50czsKLSAgICAgICAgdmFyIG9wdGlvbnMgPSB7fTsgICAgICAgIAotCi0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm9ybUVsZW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICB2YXIgZm9ybUVsZW1lbnQgPSBmb3JtRWxlbWVudHNbaV07Ci0gICAgICAgICAgICB2
YXIgbmFtZSA9IGZvcm1FbGVtZW50LmlkIHx8IGZvcm1FbGVtZW50Lm5hbWU7Ci0gICAgICAgICAg
ICB2YXIgdHlwZSA9IGZvcm1FbGVtZW50LnR5cGU7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlID09
ICJudW1iZXIiKQotICAgICAgICAgICAgICAgIG9wdGlvbnNbbmFtZV0gPSBmb3JtRWxlbWVudC52
YWx1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImNoZWNrYm94IikKLSAgICAgICAg
ICAgICAgICBvcHRpb25zW25hbWVdID0gZm9ybUVsZW1lbnQuY2hlY2tlZDsKLSAgICAgICAgICAg
IGVsc2UgaWYgKHR5cGUgPT0gInJhZGlvIikKLSAgICAgICAgICAgICAgICBvcHRpb25zW25hbWVd
ID0gZm9ybUVsZW1lbnRzW25hbWVdLnZhbHVlOwotICAgIAotICAgICAgICAgICAgbG9jYWxTdG9y
YWdlLnNldEl0ZW0obmFtZSwgb3B0aW9uc1tuYW1lXSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIHJldHVybiBvcHRpb25zOwotICAgIH0KLX0KLQotd2luZG93LnN1aXRlc01hbmFnZXIg
PQotewotICAgIF90cmVlRWxlbWVudDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzdWl0ZXMgPiAudHJlZSIpOwotICAgIH0sCi0gICAg
Ci0gICAgX3N1aXRlc0VsZW1lbnRzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI3N1aXRlcyA+IHVsID4gbGkiKTsKLSAgICB9LAot
ICAgIAotICAgIF9jaGVja2JveEVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnQpCi0gICAgewotICAg
ICAgICByZXR1cm4gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dFt0eXBlPSdjaGVja2JveCdd
Om5vdCguZXhwYW5kLWJ1dHRvbikiKTsKLSAgICB9LAotCi0gICAgX2VkaXRFbGVtZW50OiBmdW5j
dGlvbihlbGVtZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQucXVlcnlTZWxlY3Rv
cigiaW5wdXRbdHlwZT0nbnVtYmVyJ10iKTsKLSAgICB9LAotCi0gICAgX2VkaXRzRWxlbWVudHM6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCIjc3VpdGVzIGlucHV0W3R5cGU9J251bWJlciddIik7Ci0gICAgfSwKLSAgICAgICAgCi0g
ICAgX2xvY2FsU3RvcmFnZU5hbWVGb3JUZXN0OiBmdW5jdGlvbihzdWl0ZU5hbWUsIHRlc3ROYW1l
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN1aXRlTmFtZSArICIvIiArIHRlc3ROYW1lOwotICAg
IH0sCi0KLSAgICBfdXBkYXRlU3VpdGVDaGVja2JveFN0YXRlOiBmdW5jdGlvbihzdWl0ZUNoZWNr
Ym94KQotICAgIHsKLSAgICAgICAgdmFyIG51bWJlckVuYWJsZWRUZXN0cyA9IDA7Ci0gICAgICAg
IHN1aXRlQ2hlY2tib3gudGVzdHNFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RFbGVtZW50
KSB7Ci0gICAgICAgICAgICB2YXIgdGVzdENoZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50
KHRlc3RFbGVtZW50KTsKLSAgICAgICAgICAgIGlmICh0ZXN0Q2hlY2tib3guY2hlY2tlZCkKLSAg
ICAgICAgICAgICAgICArK251bWJlckVuYWJsZWRUZXN0czsKLSAgICAgICAgfSwgdGhpcyk7Ci0g
ICAgICAgIHN1aXRlQ2hlY2tib3guY2hlY2tlZCA9IG51bWJlckVuYWJsZWRUZXN0cyA+IDA7Ci0g
ICAgICAgIHN1aXRlQ2hlY2tib3guaW5kZXRlcm1pbmF0ZSA9IG51bWJlckVuYWJsZWRUZXN0cyA+
IDAgJiYgbnVtYmVyRW5hYmxlZFRlc3RzIDwgc3VpdGVDaGVja2JveC50ZXN0c0VsZW1lbnRzLmxl
bmd0aDsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVN0YXJ0QnV0dG9uU3RhdGU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHZhciBzdWl0ZXNFbGVtZW50cyA9IHRoaXMuX3N1aXRlc0VsZW1lbnRz
KCk7Ci0gICAgICAgIHZhciBzdGFydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNo
b21lID4gZm9vdGVyID4gYnV0dG9uIik7Ci0gICAgICAgIAotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHN1aXRlc0VsZW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgc3Vp
dGVFbGVtZW50ID0gc3VpdGVzRWxlbWVudHNbaV07Ci0gICAgICAgICAgICB2YXIgc3VpdGVDaGVj
a2JveCA9IHRoaXMuX2NoZWNrYm94RWxlbWVudChzdWl0ZUVsZW1lbnQpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAoc3VpdGVDaGVja2JveC5jaGVja2VkKSB7Ci0gICAgICAgICAgICAg
ICAgc3RhcnRCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgc3RhcnRCdXR0b24uZGlz
YWJsZWQgPSB0cnVlOwotICAgIH0sCi0KLSAgICBfb25DaGFuZ2VTdWl0ZUNoZWNrYm94OiBmdW5j
dGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBzZWxlY3RlZCA9IGV2ZW50LnRhcmdldC5j
aGVja2VkOwotICAgICAgICBldmVudC50YXJnZXQudGVzdHNFbGVtZW50cy5mb3JFYWNoKGZ1bmN0
aW9uKHRlc3RFbGVtZW50KSB7Ci0gICAgICAgICAgICB2YXIgdGVzdENoZWNrYm94ID0gdGhpcy5f
Y2hlY2tib3hFbGVtZW50KHRlc3RFbGVtZW50KTsKLSAgICAgICAgICAgIHRlc3RDaGVja2JveC5j
aGVja2VkID0gc2VsZWN0ZWQ7ICAgICAgICAKLSAgICAgICAgfSwgdGhpcyk7Ci0gICAgICAgIHRo
aXMuX3VwZGF0ZVN0YXJ0QnV0dG9uU3RhdGUoKTsKLSAgICB9LAotCi0gICAgX29uQ2hhbmdlVGVz
dENoZWNrYm94OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBzdWl0ZUNoZWNr
Ym94ID0gZXZlbnQudGFyZ2V0LnN1aXRlQ2hlY2tib3g7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVN1
aXRlQ2hlY2tib3hTdGF0ZShzdWl0ZUNoZWNrYm94KTsKLSAgICAgICAgdGhpcy5fdXBkYXRlU3Rh
cnRCdXR0b25TdGF0ZSgpOwotICAgIH0sCi0KLSAgICBfY3JlYXRlU3VpdGVFbGVtZW50OiBmdW5j
dGlvbih0cmVlRWxlbWVudCwgc3VpdGUsIGlkKQotICAgIHsKLSAgICAgICAgdmFyIHN1aXRlRWxl
bWVudCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImxpIiwge30sIHRyZWVFbGVt
ZW50KTsKLSAgICAgICAgdmFyIGV4cGFuZCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZUVsZW1l
bnQoImlucHV0IiwgeyB0eXBlOiAiY2hlY2tib3giLCAgY2xhc3M6ICJleHBhbmQtYnV0dG9uIiwg
aWQ6IGlkIH0sIHN1aXRlRWxlbWVudCk7Ci0gICAgICAgIHZhciBsYWJlbCA9IERvY3VtZW50RXh0
ZW5zaW9uLmNyZWF0ZUVsZW1lbnQoImxhYmVsIiwgeyBjbGFzczogInRyZWUtbGFiZWwiLCBmb3I6
IGlkIH0sIHN1aXRlRWxlbWVudCk7Ci0KLSAgICAgICAgdmFyIHN1aXRlQ2hlY2tib3ggPSBEb2N1
bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJpbnB1dCIsIHsgdHlwZTogImNoZWNrYm94IiB9
LCBsYWJlbCk7Ci0gICAgICAgIHN1aXRlQ2hlY2tib3guc3VpdGUgPSBzdWl0ZTsKLSAgICAgICAg
c3VpdGVDaGVja2JveC5vbmNoYW5nZSA9IHRoaXMuX29uQ2hhbmdlU3VpdGVDaGVja2JveC5iaW5k
KHRoaXMpOwotICAgICAgICBzdWl0ZUNoZWNrYm94LnRlc3RzRWxlbWVudHMgPSBbXTsKLQotICAg
ICAgICBsYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIgKyBzdWl0
ZS5uYW1lKSk7Ci0gICAgICAgIHJldHVybiBzdWl0ZUVsZW1lbnQ7Ci0gICAgfSwKLQotICAgIF9j
cmVhdGVUZXN0RWxlbWVudDogZnVuY3Rpb24obGlzdEVsZW1lbnQsIHRlc3QsIHN1aXRlQ2hlY2ti
b3gpCi0gICAgewotICAgICAgICB2YXIgdGVzdEVsZW1lbnQgPSBEb2N1bWVudEV4dGVuc2lvbi5j
cmVhdGVFbGVtZW50KCJsaSIsIHt9LCBsaXN0RWxlbWVudCk7Ci0gICAgICAgIHZhciBzcGFuID0g
RG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgibGFiZWwiLCB7IGNsYXNzOiAidHJlZS1s
YWJlbCIgfSwgdGVzdEVsZW1lbnQpOwotCi0gICAgICAgIHZhciB0ZXN0Q2hlY2tib3ggPSBEb2N1
bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJpbnB1dCIsIHsgdHlwZTogImNoZWNrYm94IiB9
LCBzcGFuKTsKLSAgICAgICAgdGVzdENoZWNrYm94LnRlc3QgPSB0ZXN0OwotICAgICAgICB0ZXN0
Q2hlY2tib3gub25jaGFuZ2UgPSB0aGlzLl9vbkNoYW5nZVRlc3RDaGVja2JveC5iaW5kKHRoaXMp
OwotICAgICAgICB0ZXN0Q2hlY2tib3guc3VpdGVDaGVja2JveCA9IHN1aXRlQ2hlY2tib3g7Ci0K
LSAgICAgICAgc3VpdGVDaGVja2JveC50ZXN0c0VsZW1lbnRzLnB1c2godGVzdEVsZW1lbnQpOwot
ICAgICAgICBzcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIiArIHRl
c3QubmFtZSkpOwotICAgICAgICBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJpbnB1
dCIsIHsgdHlwZTogIm51bWJlciIgfSwgdGVzdEVsZW1lbnQpOwotICAgICAgICByZXR1cm4gdGVz
dEVsZW1lbnQ7Ci0gICAgfSwKLQotICAgIGNyZWF0ZUVsZW1lbnRzOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudCgpOwotCi0gICAg
ICAgIFN1aXRlcy5mb3JFYWNoKGZ1bmN0aW9uKHN1aXRlLCBpbmRleCkgewotICAgICAgICAgICAg
dmFyIHN1aXRlRWxlbWVudCA9IHRoaXMuX2NyZWF0ZVN1aXRlRWxlbWVudCh0cmVlRWxlbWVudCwg
c3VpdGUsICJzdWl0ZS0iICsgaW5kZXgpOwotICAgICAgICAgICAgdmFyIGxpc3RFbGVtZW50ID0g
RG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidWwiLCB7fSwgc3VpdGVFbGVtZW50KTsK
LSAgICAgICAgICAgIHZhciBzdWl0ZUNoZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHN1
aXRlRWxlbWVudCk7Ci0KLSAgICAgICAgICAgIHN1aXRlLnRlc3RzLmZvckVhY2goZnVuY3Rpb24o
dGVzdCkgewotICAgICAgICAgICAgICAgIHZhciB0ZXN0RWxlbWVudCA9IHRoaXMuX2NyZWF0ZVRl
c3RFbGVtZW50KGxpc3RFbGVtZW50LCB0ZXN0LCBzdWl0ZUNoZWNrYm94KTsKLSAgICAgICAgICAg
IH0sIHRoaXMpOwotICAgICAgICB9LCB0aGlzKTsKLSAgICB9LAotICAgIAotICAgIHVwZGF0ZUVk
aXRzRWxlbWVudHNTdGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGVkaXRzRWxl
bWVudHMgPSB0aGlzLl9lZGl0c0VsZW1lbnRzKCk7Ci0gICAgICAgIHZhciBzaG93Q29tcGxleGl0
eUlucHV0cyA9IG9wdGlvbnNNYW5hZ2VyLnZhbHVlRm9yT3B0aW9uKCJhZGp1c3RtZW50IikgPT0g
ImZpeGVkIjsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkaXRzRWxlbWVudHMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBlZGl0RWxlbWVudCA9IGVkaXRzRWxlbWVudHNb
aV07Ci0gICAgICAgICAgICBpZiAoc2hvd0NvbXBsZXhpdHlJbnB1dHMpCi0gICAgICAgICAgICAg
ICAgZWRpdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBlZGl0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3Rl
ZCIpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHVwZGF0ZURpc3BsYXk6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gImRpc3BsYXktIiArIG9w
dGlvbnNNYW5hZ2VyLnZhbHVlRm9yT3B0aW9uKCJkaXNwbGF5Iik7Ci0gICAgfSwKLQotICAgIHVw
ZGF0ZVVJRnJvbUxvY2FsU3RvcmFnZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIHN1
aXRlc0VsZW1lbnRzID0gdGhpcy5fc3VpdGVzRWxlbWVudHMoKTsKLSAgICAgICAgCi0gICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgc3VpdGVzRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgIHZhciBzdWl0ZUVsZW1lbnQgPSBzdWl0ZXNFbGVtZW50c1tpXTsKLSAgICAgICAgICAg
IHZhciBzdWl0ZUNoZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHN1aXRlRWxlbWVudCk7
Ci0gICAgICAgICAgICB2YXIgc3VpdGUgPSBzdWl0ZUNoZWNrYm94LnN1aXRlOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBzdWl0ZUNoZWNrYm94LnRlc3RzRWxlbWVudHMuZm9yRWFjaChmdW5j
dGlvbih0ZXN0RWxlbWVudCkgewotICAgICAgICAgICAgICAgIHZhciB0ZXN0Q2hlY2tib3ggPSB0
aGlzLl9jaGVja2JveEVsZW1lbnQodGVzdEVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHZhciB0
ZXN0RWRpdCA9IHRoaXMuX2VkaXRFbGVtZW50KHRlc3RFbGVtZW50KTsKLSAgICAgICAgICAgICAg
ICB2YXIgdGVzdCA9IHRlc3RDaGVja2JveC50ZXN0OwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIHZhciBzdHIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLl9sb2NhbFN0b3Jh
Z2VOYW1lRm9yVGVzdChzdWl0ZS5uYW1lLCB0ZXN0Lm5hbWUpKTsKLSAgICAgICAgICAgICAgICBp
ZiAoc3RyID09PSBudWxsKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
ICAgICAgICB2YXIgdmFsdWUgPSBKU09OLnBhcnNlKHN0cik7Ci0gICAgICAgICAgICAgICAgdGVz
dENoZWNrYm94LmNoZWNrZWQgPSB2YWx1ZS5jaGVja2VkOwotICAgICAgICAgICAgICAgIHRlc3RF
ZGl0LnZhbHVlID0gdmFsdWUuY29tcGxleGl0eTsKLSAgICAgICAgICAgIH0sIHRoaXMpOwotCi0g
ICAgICAgICAgICB0aGlzLl91cGRhdGVTdWl0ZUNoZWNrYm94U3RhdGUoc3VpdGVDaGVja2JveCk7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXJ0QnV0dG9uU3Rh
dGUoKTsKLSAgICB9LAotCi0gICAgdXBkYXRlTG9jYWxTdG9yYWdlRnJvbVVJOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICB2YXIgc3VpdGVzRWxlbWVudHMgPSB0aGlzLl9zdWl0ZXNFbGVtZW50
cygpOwotICAgICAgICB2YXIgc3VpdGVzID0gW107Ci0gICAgICAgIAotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHN1aXRlc0VsZW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2
YXIgc3VpdGVFbGVtZW50ID0gc3VpdGVzRWxlbWVudHNbaV07Ci0gICAgICAgICAgICB2YXIgc3Vp
dGVDaGVja2JveCA9IHRoaXMuX2NoZWNrYm94RWxlbWVudChzdWl0ZUVsZW1lbnQpOwotICAgICAg
ICAgICAgdmFyIHN1aXRlID0gc3VpdGVDaGVja2JveC5zdWl0ZTsKLQotICAgICAgICAgICAgdmFy
IHRlc3RzID0gW107Ci0gICAgICAgICAgICBzdWl0ZUNoZWNrYm94LnRlc3RzRWxlbWVudHMuZm9y
RWFjaChmdW5jdGlvbih0ZXN0RWxlbWVudCkgewotICAgICAgICAgICAgICAgIHZhciB0ZXN0Q2hl
Y2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQodGVzdEVsZW1lbnQpOwotICAgICAgICAgICAg
ICAgIHZhciB0ZXN0RWRpdCA9IHRoaXMuX2VkaXRFbGVtZW50KHRlc3RFbGVtZW50KTsKLSAgICAg
ICAgICAgICAgICB2YXIgdGVzdCA9IHRlc3RDaGVja2JveC50ZXN0OwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIGlmICh0ZXN0Q2hlY2tib3guY2hlY2tlZCkgewotICAgICAgICAg
ICAgICAgICAgICB0ZXN0LmNvbXBsZXhpdHkgPSB0ZXN0RWRpdC52YWx1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgdGVzdHMucHVzaCh0ZXN0KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICB2YXIgdmFsdWUgPSB7IGNoZWNrZWQ6IHRlc3RDaGVja2JveC5jaGVja2VkLCBjb21w
bGV4aXR5OiB0ZXN0RWRpdC52YWx1ZSB9OyAKLSAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uu
c2V0SXRlbSh0aGlzLl9sb2NhbFN0b3JhZ2VOYW1lRm9yVGVzdChzdWl0ZS5uYW1lLCB0ZXN0Lm5h
bWUpLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpOwotICAgICAgICAgICAgfSwgdGhpcyk7Ci0KLSAg
ICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgc3VpdGVzLnB1c2go
bmV3IFN1aXRlKHN1aXRlQ2hlY2tib3guc3VpdGUubmFtZSwgdGVzdHMpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHJldHVybiBzdWl0ZXM7Ci0gICAgfSwKLSAgICAKLSAgICB1cGRhdGVMb2NhbFN0
b3JhZ2VGcm9tSlNPTjogZnVuY3Rpb24oaXRlcmF0aW9uUmVzdWx0cykKLSAgICB7Ci0gICAgICAg
IGZvciAodmFyIHN1aXRlTmFtZSBpbiBpdGVyYXRpb25SZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1
bHRzLnN1aXRlc10pIHsKLSAgICAgICAgICAgIHZhciBzdWl0ZVJlc3VsdHMgPSBpdGVyYXRpb25S
ZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1bHRzLnN1aXRlc11bc3VpdGVOYW1lXTsKLQotICAgICAg
ICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gc3VpdGVSZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1
bHRzLnRlc3RzXSkgewotICAgICAgICAgICAgICAgIHZhciB0ZXN0UmVzdWx0cyA9IHN1aXRlUmVz
dWx0c1tTdHJpbmdzLmpzb24ucmVzdWx0cy50ZXN0c11bdGVzdE5hbWVdOwotICAgICAgICAgICAg
ICAgIHZhciBkYXRhID0gdGVzdFJlc3VsdHNbU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmNvbXBs
ZXhpdHldOwotICAgICAgICAgICAgICAgIHZhciBjb21wbGV4aXR5ID0gTWF0aC5yb3VuZChkYXRh
W1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFnZV0pOwotCi0gICAgICAgICAgICAgICAg
dmFyIHZhbHVlID0geyBjaGVja2VkOiB0cnVlLCBjb21wbGV4aXR5OiBjb21wbGV4aXR5IH07Ci0g
ICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fbG9jYWxTdG9yYWdlTmFt
ZUZvclRlc3Qoc3VpdGVOYW1lLCB0ZXN0TmFtZSksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXdpbmRvdy5iZW5jaG1hcmtDb250
cm9sbGVyID0KLXsKLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBk
b2N1bWVudC5mb3Jtc1siYmVuY2htYXJrLW9wdGlvbnMiXS5hZGRFdmVudExpc3RlbmVyKCJjaGFu
Z2UiLCBiZW5jaG1hcmtDb250cm9sbGVyLm9uRm9ybUNoYW5nZWQsIHRydWUpOwotICAgICAgICBv
cHRpb25zTWFuYWdlci51cGRhdGVVSUZyb21Mb2NhbFN0b3JhZ2UoKTsKLSAgICAgICAgc3VpdGVz
TWFuYWdlci5jcmVhdGVFbGVtZW50cygpOwotICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZVVJ
RnJvbUxvY2FsU3RvcmFnZSgpOwotICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZURpc3BsYXko
KTsKLSAgICAgICAgc3VpdGVzTWFuYWdlci51cGRhdGVFZGl0c0VsZW1lbnRzU3RhdGUoKTsKLSAg
ICB9LAotCi0gICAgb25Gb3JtQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAg
ICBpZiAoZXZlbnQudGFyZ2V0Lm5hbWUgPT0gImFkanVzdG1lbnQiKSB7Ci0gICAgICAgICAgICBz
dWl0ZXNNYW5hZ2VyLnVwZGF0ZUVkaXRzRWxlbWVudHNTdGF0ZSgpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChldmVudC50YXJnZXQubmFtZSA9PSAiZGlzcGxh
eSIpIHsKLSAgICAgICAgICAgIHN1aXRlc01hbmFnZXIudXBkYXRlRGlzcGxheSgpOwotICAgICAg
ICB9Ci0gICAgfSwKLSAgICAKLSAgICBfcnVuQmVuY2htYXJrOiBmdW5jdGlvbihzdWl0ZXMsIG9w
dGlvbnMpCi0gICAgewotICAgICAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQuaW5pdGlhbGl6ZShz
dWl0ZXMsIG9wdGlvbnMpOwotICAgICAgICB2YXIgZnJhbWVDb250YWluZXIgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjcnVubmluZyA+ICNydW5uaW5nLXRlc3QiKTsKLSAgICAgICAgdmFyIHJ1
bm5lciA9IG5ldyBCZW5jaG1hcmtSdW5uZXIoc3VpdGVzLCBmcmFtZUNvbnRhaW5lciB8fCBkb2N1
bWVudC5ib2R5LCBiZW5jaG1hcmtSdW5uZXJDbGllbnQpOwotICAgICAgICBydW5uZXIucnVuTXVs
dGlwbGVJdGVyYXRpb25zKCk7Ci0gICAgfSwKLQotICAgIHN0YXJ0VGVzdDogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgdmFyIG9wdGlvbnMgPSBvcHRpb25zTWFuYWdlci51cGRhdGVMb2NhbFN0
b3JhZ2VGcm9tVUkoKTsKLSAgICAgICAgdmFyIHN1aXRlcyA9IHN1aXRlc01hbmFnZXIudXBkYXRl
TG9jYWxTdG9yYWdlRnJvbVVJKCk7Ci0gICAgICAgIHNlY3Rpb25zTWFuYWdlci5zZXR1cFJ1bm5p
bmdTZWN0aW9uU3R5bGUob3B0aW9ucyk7Ci0gICAgICAgIHRoaXMuX3J1bkJlbmNobWFyayhzdWl0
ZXMsIG9wdGlvbnMpOwotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInJ1bm5p
bmciKTsKLSAgICB9LAotCi0gICAgc2VsZWN0UmVzdWx0czogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNlbGVjdERhdGEoInJlc3VsdHMiKTsKLSAgICB9LAotICAg
IAotICAgIHNob3dSZXN1bHRzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBzZWN0aW9uc01h
bmFnZXIuc2hvd1Njb3JlKCJyZXN1bHRzIiwgU3RyaW5ncy50ZXh0LnJlc3VsdHMucmVzdWx0cyk7
Ci0gICAgICAgIHNlY3Rpb25zTWFuYWdlci5zaG93U2VjdGlvbigicmVzdWx0cyIsIHRydWUpOwot
ICAgIH0sCi0gICAgCi0gICAgc2hvd0pTT046IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHNl
Y3Rpb25zTWFuYWdlci5zaG93U2NvcmUoImpzb24iLCBTdHJpbmdzLnRleHQucmVzdWx0cy5yZXN1
bHRzKTsKLSAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNob3dTZWN0aW9uKCJqc29uIiwgdHJ1ZSk7
Ci0gICAgfSwKLQotICAgIHNob3dUZXN0R3JhcGg6IGZ1bmN0aW9uKHRlc3ROYW1lLCBheGVzLCBz
YW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpCi0gICAgewotICAgICAgICBzZWN0aW9uc01hbmFn
ZXIuc2hvd1Rlc3ROYW1lKCJ0ZXN0LWdyYXBoIiwgU3RyaW5ncy50ZXh0LnJlc3VsdHMuZ3JhcGgs
IHRlc3ROYW1lKTsKLSAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNob3dTZWN0aW9uKCJ0ZXN0LWdy
YXBoIiwgdHJ1ZSk7Ci0gICAgICAgIGdyYXBoKCJzZWN0aW9uI3Rlc3QtZ3JhcGggPiBkYXRhIiwg
bmV3IEluc2V0cygyMCwgNTAsIDIwLCA1MCksIGF4ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9m
ZnNldCk7Ci0gICAgfSwKLQotICAgIHNob3dUZXN0SlNPTjogZnVuY3Rpb24odGVzdE5hbWUsIGpz
b24pCi0gICAgewotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1Rlc3ROYW1lKCJ0ZXN0LWpz
b24iLCBTdHJpbmdzLnRleHQucmVzdWx0cy5ncmFwaCwgdGVzdE5hbWUpOwotICAgICAgICBzZWN0
aW9uc01hbmFnZXIuc2hvd0pTT04oInRlc3QtanNvbiIsIGpzb24pOwotICAgICAgICBzZWN0aW9u
c01hbmFnZXIuc2hvd1NlY3Rpb24oInRlc3QtanNvbiIsIHRydWUpOwotICAgIH0sCi0gICAgCi0g
ICAgc2VsZWN0SlNPTjogZnVuY3Rpb24oc2VjdGlvbklkZW50aWZpZXIpCi0gICAgewotICAgICAg
ICBzZWN0aW9uc01hbmFnZXIuc2VsZWN0RGF0YUNvbnRlbnRzKHNlY3Rpb25JZGVudGlmaWVyKTsK
LSAgICB9LAotfQotCi13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGJlbmNobWFya0Nv
bnRyb2xsZXIuaW5pdGlhbGl6ZSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY0ODM0NS4uMDAwMDAwMAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLWZ1bmN0aW9uIEJlbmNobWFya1J1bm5l
clN0YXRlKHN1aXRlcykKLXsKLSAgICB0aGlzLl9zdWl0ZXMgPSBzdWl0ZXM7Ci0gICAgdGhpcy5f
c3VpdGVJbmRleCA9IC0xOwotICAgIHRoaXMuX3Rlc3RJbmRleCA9IDA7Ci0gICAgdGhpcy5uZXh0
KCk7Ci19Ci0KLUJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5jdXJyZW50U3VpdGUgPSBm
dW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XTsK
LX0KLQotQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJlbnRUZXN0ID0gZnVuY3Rp
b24oKQotewotICAgIHZhciBzdWl0ZSA9IHRoaXMuY3VycmVudFN1aXRlKCk7Ci0gICAgcmV0dXJu
IHN1aXRlID8gc3VpdGUudGVzdHNbdGhpcy5fdGVzdEluZGV4XSA6IG51bGw7Ci19Ci0KLUJlbmNo
bWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5pc0ZpcnN0VGVzdCA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICByZXR1cm4gIXRoaXMuX3Rlc3RJbmRleDsKLX0KLQotQmVuY2htYXJrUnVubmVyU3RhdGUucHJv
dG90eXBlLm5leHQgPSBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy5fdGVzdEluZGV4Kys7Ci0KLSAg
ICB2YXIgc3VpdGUgPSB0aGlzLl9zdWl0ZXNbdGhpcy5fc3VpdGVJbmRleF07Ci0gICAgaWYgKHN1
aXRlICYmIHRoaXMuX3Rlc3RJbmRleCA8IHN1aXRlLnRlc3RzLmxlbmd0aCkKLSAgICAgICAgcmV0
dXJuIHRoaXM7Ci0KLSAgICB0aGlzLl90ZXN0SW5kZXggPSAwOwotICAgIGRvIHsKLSAgICAgICAg
dGhpcy5fc3VpdGVJbmRleCsrOwotICAgIH0gd2hpbGUgKHRoaXMuX3N1aXRlSW5kZXggPCB0aGlz
Ll9zdWl0ZXMubGVuZ3RoICYmIHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XS5kaXNhYmxl
ZCk7Ci0KLSAgICByZXR1cm4gdGhpczsKLX0KLQotQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90
eXBlLnByZXBhcmVDdXJyZW50VGVzdCA9IGZ1bmN0aW9uKHJ1bm5lciwgZnJhbWUpCi17Ci0gICAg
dmFyIHN1aXRlID0gdGhpcy5jdXJyZW50U3VpdGUoKTsKLSAgICB2YXIgdGVzdCA9IHRoaXMuY3Vy
cmVudFRlc3QoKTsKLSAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOwotICAgIGZy
YW1lLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICBzdWl0ZS5wcmVwYXJlKHJ1bm5lciwg
ZnJhbWUuY29udGVudFdpbmRvdywgZnJhbWUuY29udGVudERvY3VtZW50KS50aGVuKGZ1bmN0aW9u
KHJlc3VsdCkgeyBwcm9taXNlLnJlc29sdmUocmVzdWx0KTsgfSk7Ci0gICAgfQotICAgIGZyYW1l
LnNyYyA9ICIuLi90ZXN0cy8iICsgdGVzdC51cmw7Ci0gICAgcmV0dXJuIHByb21pc2U7Ci19Ci0K
LWZ1bmN0aW9uIEJlbmNobWFya1J1bm5lcihzdWl0ZXMsIGZyYW1lQ29udGFpbmVyLCBjbGllbnQp
Ci17Ci0gICAgdGhpcy5fc3VpdGVzID0gc3VpdGVzOwotICAgIHRoaXMuX2NsaWVudCA9IGNsaWVu
dDsKLSAgICB0aGlzLl9mcmFtZUNvbnRhaW5lciA9IGZyYW1lQ29udGFpbmVyOwotfQotCi1CZW5j
aG1hcmtSdW5uZXIucHJvdG90eXBlLndhaXRGb3JFbGVtZW50ID0gZnVuY3Rpb24oc2VsZWN0b3Ip
Ci17Ci0gICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKLSAgICB2YXIgY29udGVu
dERvY3VtZW50ID0gdGhpcy5fZnJhbWUuY29udGVudERvY3VtZW50OwotCi0gICAgZnVuY3Rpb24g
cmVzb2x2ZUlmUmVhZHkoKSB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gY29udGVudERvY3VtZW50
LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwotICAgICAgICBpZiAoZWxlbWVudCkKLSAgICAgICAg
ICAgIHJldHVybiBwcm9taXNlLnJlc29sdmUoZWxlbWVudCk7Ci0gICAgICAgIHNldFRpbWVvdXQo
cmVzb2x2ZUlmUmVhZHksIDUwKTsKLSAgICB9Ci0KLSAgICByZXNvbHZlSWZSZWFkeSgpOwotICAg
IHJldHVybiBwcm9taXNlOwotfQotCi1CZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRG
cmFtZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpZnJhbWUiKTsKLSAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoInNjcm9sbGluZyIsICJubyIp
OwotCi0gICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQud2lsbEFkZFRlc3RGcmFt
ZSkKLSAgICAgICAgdGhpcy5fY2xpZW50LndpbGxBZGRUZXN0RnJhbWUoZnJhbWUpOwotCi0gICAg
dGhpcy5fZnJhbWVDb250YWluZXIuaW5zZXJ0QmVmb3JlKGZyYW1lLCB0aGlzLl9mcmFtZUNvbnRh
aW5lci5maXJzdENoaWxkKTsKLSAgICB0aGlzLl9mcmFtZSA9IGZyYW1lOwotICAgIHJldHVybiBm
cmFtZTsKLX0KLQotQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcmVtb3ZlRnJhbWUgPSBmdW5j
dGlvbigpCi17Ci0gICAgaWYgKHRoaXMuX2ZyYW1lKSB7Ci0gICAgICAgIHRoaXMuX2ZyYW1lLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fZnJhbWUpOwotICAgICAgICB0aGlzLl9mcmFtZSA9
IG51bGw7Ci0gICAgfQotfQotCi1CZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5k
UmVjb3JkUmVzdWx0cyA9IGZ1bmN0aW9uKHN0YXRlKQotewotICAgIHZhciBwcm9taXNlID0gbmV3
IFNpbXBsZVByb21pc2U7Ci0gICAgdmFyIHN1aXRlID0gc3RhdGUuY3VycmVudFN1aXRlKCk7Ci0g
ICAgdmFyIHRlc3QgPSBzdGF0ZS5jdXJyZW50VGVzdCgpOwotICAgIAotICAgIGlmICh0aGlzLl9j
bGllbnQgJiYgdGhpcy5fY2xpZW50LndpbGxSdW5UZXN0VGVzdCkKLSAgICAgICAgdGhpcy5fY2xp
ZW50LndpbGxSdW5UZXN0KHN1aXRlLCB0ZXN0KTsKLQotICAgIHZhciBjb250ZW50V2luZG93ID0g
dGhpcy5fZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICBz
dWl0ZS5ydW4oY29udGVudFdpbmRvdywgdGVzdCwgdGhpcy5fY2xpZW50Lm9wdGlvbnMsIHRoaXMu
X2NsaWVudC5yZWNvcmRUYWJsZSwgdGhpcy5fY2xpZW50LnByb2dyZXNzQmFyKS50aGVuKGZ1bmN0
aW9uKHNhbXBsZXIpIHsKLSAgICAgICAgdmFyIHNhbXBsZXJzID0gc2VsZi5fc3VpdGVzU2FtcGxl
cnNbc3VpdGUubmFtZV0gfHwgW107Ci0gICAgICAgIAotICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5h
bWVdID0gc2FtcGxlcjsKLSAgICAgICAgc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0g
PSBzYW1wbGVyczsKLQotICAgICAgICBpZiAoc2VsZi5fY2xpZW50ICYmIHNlbGYuX2NsaWVudC5k
aWRSdW5UZXN0KQotICAgICAgICAgICAgc2VsZi5fY2xpZW50LmRpZFJ1blRlc3Qoc3VpdGUsIHRl
c3QpOwotICAgICAgICAKLSAgICAgICAgc3RhdGUubmV4dCgpOwotICAgICAgICBpZiAoc3RhdGUu
Y3VycmVudFN1aXRlKCkgIT0gc3VpdGUpCi0gICAgICAgICAgICBzZWxmLl9yZW1vdmVGcmFtZSgp
OwotICAgICAgICBwcm9taXNlLnJlc29sdmUoc3RhdGUpOwotICAgIH0pOwotICAgIAotICAgIHJl
dHVybiBwcm9taXNlOwotfQotCi1CZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnN0ZXAgPSBmdW5j
dGlvbihzdGF0ZSkKLXsKLSAgICBpZiAoIXN0YXRlKSB7Ci0gICAgICAgIHN0YXRlID0gbmV3IEJl
bmNobWFya1J1bm5lclN0YXRlKHRoaXMuX3N1aXRlcyk7Ci0gICAgICAgIHRoaXMuX3N1aXRlc1Nh
bXBsZXJzID0ge307Ci0gICAgfQotCi0gICAgdmFyIHN1aXRlID0gc3RhdGUuY3VycmVudFN1aXRl
KCk7Ci0gICAgaWYgKCFzdWl0ZSkgewotICAgICAgICB0aGlzLl9maW5hbGl6ZSgpOwotICAgICAg
ICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOwotICAgICAgICBwcm9taXNlLnJlc29s
dmUoKTsKLSAgICAgICAgcmV0dXJuIHByb21pc2U7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlLmlz
Rmlyc3RUZXN0KCkpIHsKLSAgICAgICAgdGhpcy5fbWFzdXJlZFZhbHVlc0ZvckN1cnJlbnRTdWl0
ZSA9IHt9OwotICAgICAgICB0aGlzLl9hcHBlbmRGcmFtZSgpOwotICAgIH0KLQotICAgIHJldHVy
biBzdGF0ZS5wcmVwYXJlQ3VycmVudFRlc3QodGhpcywgdGhpcy5fZnJhbWUpLnRoZW4oZnVuY3Rp
b24ocHJlcGFyZVJldHVyblZhbHVlKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ydW5UZXN0QW5k
UmVjb3JkUmVzdWx0cyhzdGF0ZSk7Ci0gICAgfS5iaW5kKHRoaXMpKTsKLX0KLQotQmVuY2htYXJr
UnVubmVyLnByb3RvdHlwZS5ydW5BbGxTdGVwcyA9IGZ1bmN0aW9uKHN0YXJ0aW5nU3RhdGUpCi17
Ci0gICAgdmFyIG5leHRDYWxsZWUgPSB0aGlzLnJ1bkFsbFN0ZXBzLmJpbmQodGhpcyk7Ci0gICAg
dGhpcy5zdGVwKHN0YXJ0aW5nU3RhdGUpLnRoZW4oZnVuY3Rpb24obmV4dFN0YXRlKSB7Ci0gICAg
ICAgIGlmIChuZXh0U3RhdGUpCi0gICAgICAgICAgICBuZXh0Q2FsbGVlKG5leHRTdGF0ZSk7Ci0g
ICAgfSk7Ci19Ci0KLUJlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuTXVsdGlwbGVJdGVyYXRp
b25zID0gZnVuY3Rpb24oKQotewotICAgIHZhciBzZWxmID0gdGhpczsKLSAgICB2YXIgY3VycmVu
dEl0ZXJhdGlvbiA9IDA7Ci0KLSAgICB0aGlzLl9ydW5OZXh0SXRlcmF0aW9uID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGN1cnJlbnRJdGVyYXRpb24rKzsKLSAgICAgICAgaWYgKGN1cnJlbnRJdGVy
YXRpb24gPCBzZWxmLl9jbGllbnQuaXRlcmF0aW9uQ291bnQpCi0gICAgICAgICAgICBzZWxmLnJ1
bkFsbFN0ZXBzKCk7Ci0gICAgICAgIGVsc2UgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGll
bnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbikKLSAgICAgICAgICAgIHNlbGYuX2NsaWVudC5kaWRG
aW5pc2hMYXN0SXRlcmF0aW9uKCk7Ci0gICAgfQotCi0gICAgaWYgKHNlbGYuX2NsaWVudCAmJiBz
ZWxmLl9jbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pCi0gICAgICAgIHNlbGYuX2NsaWVu
dC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbigpOwotCi0gICAgc2VsZi5ydW5BbGxTdGVwcygpOwot
fQotCi1CZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9maW5hbGl6ZSA9IGZ1bmN0aW9uKCkKLXsK
LSAgICB0aGlzLl9yZW1vdmVGcmFtZSgpOwotICAgICAgICAKLSAgICBpZiAodGhpcy5fY2xpZW50
ICYmIHRoaXMuX2NsaWVudC5kaWRSdW5TdWl0ZXMpCi0gICAgICAgIHRoaXMuX2NsaWVudC5kaWRS
dW5TdWl0ZXModGhpcy5fc3VpdGVzU2FtcGxlcnMpOwotCi0gICAgaWYgKHRoaXMuX3J1bk5leHRJ
dGVyYXRpb24pCi0gICAgICAgIHRoaXMuX3J1bk5leHRJdGVyYXRpb24oKTsKLX0KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2QzLm1pbi5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2QzLm1pbi5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE3YWU5MC4uMDAwMDAwMAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9kMy5taW4uanMKKysr
IC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLSFmdW5jdGlvbigpe2Z1bmN0aW9uIG4obix0KXty
ZXR1cm4gdD5uPy0xOm4+dD8xOm4+PXQ/MDowLzB9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbnVsbCE9
biYmIWlzTmFOKG4pfWZ1bmN0aW9uIGUobil7cmV0dXJue2xlZnQ6ZnVuY3Rpb24odCxlLHIsdSl7
Zm9yKGFyZ3VtZW50cy5sZW5ndGg8MyYmKHI9MCksYXJndW1lbnRzLmxlbmd0aDw0JiYodT10Lmxl
bmd0aCk7dT5yOyl7dmFyIGk9cit1Pj4+MTtuKHRbaV0sZSk8MD9yPWkrMTp1PWl9cmV0dXJuIHJ9
LHJpZ2h0OmZ1bmN0aW9uKHQsZSxyLHUpe2Zvcihhcmd1bWVudHMubGVuZ3RoPDMmJihyPTApLGFy
Z3VtZW50cy5sZW5ndGg8NCYmKHU9dC5sZW5ndGgpO3U+cjspe3ZhciBpPXIrdT4+PjE7bih0W2ld
LGUpPjA/dT1pOnI9aSsxfXJldHVybiByfX19ZnVuY3Rpb24gcihuKXtyZXR1cm4gbi5sZW5ndGh9
ZnVuY3Rpb24gdShuKXtmb3IodmFyIHQ9MTtuKnQlMTspdCo9MTA7cmV0dXJuIHR9ZnVuY3Rpb24g
aShuLHQpe3RyeXtmb3IodmFyIGUgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5
cGUsZSx7dmFsdWU6dFtlXSxlbnVtZXJhYmxlOiExfSl9Y2F0Y2gocil7bi5wcm90b3R5cGU9dH19
ZnVuY3Rpb24gbygpe31mdW5jdGlvbiBhKG4pe3JldHVybiBpYStuIGluIHRoaXN9ZnVuY3Rpb24g
YyhuKXtyZXR1cm4gbj1pYStuLG4gaW4gdGhpcyYmZGVsZXRlIHRoaXNbbl19ZnVuY3Rpb24gcygp
e3ZhciBuPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCl7bi5wdXNoKHQpfSksbn1m
dW5jdGlvbiBsKCl7dmFyIG49MDtmb3IodmFyIHQgaW4gdGhpcyl0LmNoYXJDb2RlQXQoMCk9PT1v
YSYmKytuO3JldHVybiBufWZ1bmN0aW9uIGYoKXtmb3IodmFyIG4gaW4gdGhpcylpZihuLmNoYXJD
b2RlQXQoMCk9PT1vYSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIGco
bix0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPWUuYXBwbHkodCxhcmd1bWVudHMpO3JldHVy
biByPT09dD9uOnJ9fWZ1bmN0aW9uIHAobix0KXtpZih0IGluIG4pcmV0dXJuIHQ7dD10LmNoYXJB
dCgwKS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyaW5nKDEpO2Zvcih2YXIgZT0wLHI9YWEubGVuZ3Ro
O3I+ZTsrK2Upe3ZhciB1PWFhW2VdK3Q7aWYodSBpbiBuKXJldHVybiB1fX1mdW5jdGlvbiB2KCl7
fWZ1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gbShuKXtmdW5jdGlvbiB0KCl7Zm9yKHZhciB0LHI9ZSx1
PS0xLGk9ci5sZW5ndGg7Kyt1PGk7KSh0PXJbdV0ub24pJiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRz
KTtyZXR1cm4gbn12YXIgZT1bXSxyPW5ldyBvO3JldHVybiB0Lm9uPWZ1bmN0aW9uKHQsdSl7dmFy
IGksbz1yLmdldCh0KTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP28mJm8ub246KG8mJihvLm9u
PW51bGwsZT1lLnNsaWNlKDAsaT1lLmluZGV4T2YobykpLmNvbmNhdChlLnNsaWNlKGkrMSkpLHIu
cmVtb3ZlKHQpKSx1JiZlLnB1c2goci5zZXQodCx7b246dX0pKSxuKX0sdH1mdW5jdGlvbiB5KCl7
Wm8uZXZlbnQucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiB4KCl7Zm9yKHZhciBuLHQ9Wm8uZXZl
bnQ7bj10LnNvdXJjZUV2ZW50Oyl0PW47cmV0dXJuIHR9ZnVuY3Rpb24gTShuKXtmb3IodmFyIHQ9
bmV3IGQsZT0wLHI9YXJndW1lbnRzLmxlbmd0aDsrK2U8cjspdFthcmd1bWVudHNbZV1dPW0odCk7
cmV0dXJuIHQub2Y9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZnVuY3Rpb24odSl7dHJ5e3ZhciBpPXUu
c291cmNlRXZlbnQ9Wm8uZXZlbnQ7dS50YXJnZXQ9bixaby5ldmVudD11LHRbdS50eXBlXS5hcHBs
eShlLHIpfWZpbmFsbHl7Wm8uZXZlbnQ9aX19fSx0fWZ1bmN0aW9uIF8obil7cmV0dXJuIHNhKG4s
cGEpLG59ZnVuY3Rpb24gYihuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmZ1bmN0aW9u
KCl7cmV0dXJuIGxhKG4sdGhpcyl9fWZ1bmN0aW9uIHcobil7cmV0dXJuImZ1bmN0aW9uIj09dHlw
ZW9mIG4/bjpmdW5jdGlvbigpe3JldHVybiBmYShuLHRoaXMpfX1mdW5jdGlvbiBTKG4sdCl7ZnVu
Y3Rpb24gZSgpe3RoaXMucmVtb3ZlQXR0cmlidXRlKG4pfWZ1bmN0aW9uIHIoKXt0aGlzLnJlbW92
ZUF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCl9ZnVuY3Rpb24gdSgpe3RoaXMuc2V0QXR0cmli
dXRlKG4sdCl9ZnVuY3Rpb24gaSgpe3RoaXMuc2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2Fs
LHQpfWZ1bmN0aW9uIG8oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3Ro
aXMucmVtb3ZlQXR0cmlidXRlKG4pOnRoaXMuc2V0QXR0cmlidXRlKG4sZSl9ZnVuY3Rpb24gYSgp
e3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWU/dGhpcy5yZW1vdmVBdHRyaWJ1
dGVOUyhuLnNwYWNlLG4ubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2Fs
LGUpfXJldHVybiBuPVpvLm5zLnF1YWxpZnkobiksbnVsbD09dD9uLmxvY2FsP3I6ZToiZnVuY3Rp
b24iPT10eXBlb2YgdD9uLmxvY2FsP2E6bzpuLmxvY2FsP2k6dX1mdW5jdGlvbiBrKG4pe3JldHVy
biBuLnRyaW0oKS5yZXBsYWNlKC9ccysvZywiICIpfWZ1bmN0aW9uIEUobil7cmV0dXJuIG5ldyBS
ZWdFeHAoIig/Ol58XFxzKykiK1pvLnJlcXVvdGUobikrIig/Olxccyt8JCkiLCJnIil9ZnVuY3Rp
b24gQShuKXtyZXR1cm4obisiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIEMobix0
KXtmdW5jdGlvbiBlKCl7Zm9yKHZhciBlPS0xOysrZTx1OyluW2VdKHRoaXMsdCl9ZnVuY3Rpb24g
cigpe2Zvcih2YXIgZT0tMSxyPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpOysrZTx1OyluW2VdKHRo
aXMscil9bj1BKG4pLm1hcChOKTt2YXIgdT1uLmxlbmd0aDtyZXR1cm4iZnVuY3Rpb24iPT10eXBl
b2YgdD9yOmV9ZnVuY3Rpb24gTihuKXt2YXIgdD1FKG4pO3JldHVybiBmdW5jdGlvbihlLHIpe2lm
KHU9ZS5jbGFzc0xpc3QpcmV0dXJuIHI/dS5hZGQobik6dS5yZW1vdmUobik7dmFyIHU9ZS5nZXRB
dHRyaWJ1dGUoImNsYXNzIil8fCIiO3I/KHQubGFzdEluZGV4PTAsdC50ZXN0KHUpfHxlLnNldEF0
dHJpYnV0ZSgiY2xhc3MiLGsodSsiICIrbikpKTplLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGsodS5y
ZXBsYWNlKHQsIiAiKSkpfX1mdW5jdGlvbiB6KG4sdCxlKXtmdW5jdGlvbiByKCl7dGhpcy5zdHls
ZS5yZW1vdmVQcm9wZXJ0eShuKX1mdW5jdGlvbiB1KCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShu
LHQsZSl9ZnVuY3Rpb24gaSgpe3ZhciByPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PXI/
dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KG4scixl
KX1yZXR1cm4gbnVsbD09dD9yOiJmdW5jdGlvbiI9PXR5cGVvZiB0P2k6dX1mdW5jdGlvbiBMKG4s
dCl7ZnVuY3Rpb24gZSgpe2RlbGV0ZSB0aGlzW25dfWZ1bmN0aW9uIHIoKXt0aGlzW25dPXR9ZnVu
Y3Rpb24gdSgpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWU/ZGVsZXRlIHRo
aXNbbl06dGhpc1tuXT1lfXJldHVybiBudWxsPT10P2U6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dTpy
fWZ1bmN0aW9uIFQobil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjoobj1aby5ucy5xdWFs
aWZ5KG4pKS5sb2NhbD9mdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKG4uc3BhY2Usbi5sb2NhbCl9OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJE
b2N1bWVudC5jcmVhdGVFbGVtZW50TlModGhpcy5uYW1lc3BhY2VVUkksbil9fWZ1bmN0aW9uIHEo
bil7cmV0dXJue19fZGF0YV9fOm59fWZ1bmN0aW9uIFIobil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0
dXJuIGdhKHRoaXMsbil9fWZ1bmN0aW9uIEQodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGh8fCh0
PW4pLGZ1bmN0aW9uKG4sZSl7cmV0dXJuIG4mJmU/dChuLl9fZGF0YV9fLGUuX19kYXRhX18pOiFu
LSFlfX1mdW5jdGlvbiBQKG4sdCl7Zm9yKHZhciBlPTAscj1uLmxlbmd0aDtyPmU7ZSsrKWZvcih2
YXIgdSxpPW5bZV0sbz0wLGE9aS5sZW5ndGg7YT5vO28rKykodT1pW29dKSYmdCh1LG8sZSk7cmV0
dXJuIG59ZnVuY3Rpb24gVShuKXtyZXR1cm4gc2EobixkYSksbn1mdW5jdGlvbiBqKG4pe3ZhciB0
LGU7cmV0dXJuIGZ1bmN0aW9uKHIsdSxpKXt2YXIgbyxhPW5baV0udXBkYXRlLGM9YS5sZW5ndGg7
Zm9yKGkhPWUmJihlPWksdD0wKSx1Pj10JiYodD11KzEpOyEobz1hW3RdKSYmKyt0PGM7KTtyZXR1
cm4gb319ZnVuY3Rpb24gSCgpe3ZhciBuPXRoaXMuX190cmFuc2l0aW9uX187biYmKytuLmFjdGl2
ZX1mdW5jdGlvbiBGKG4sdCxlKXtmdW5jdGlvbiByKCl7dmFyIHQ9dGhpc1tvXTt0JiYodGhpcy5y
ZW1vdmVFdmVudExpc3RlbmVyKG4sdCx0LiQpLGRlbGV0ZSB0aGlzW29dKX1mdW5jdGlvbiB1KCl7
dmFyIHU9Yyh0LFhvKGFyZ3VtZW50cykpO3IuY2FsbCh0aGlzKSx0aGlzLmFkZEV2ZW50TGlzdGVu
ZXIobix0aGlzW29dPXUsdS4kPWUpLHUuXz10fWZ1bmN0aW9uIGkoKXt2YXIgdCxlPW5ldyBSZWdF
eHAoIl5fX29uKFteLl0rKSIrWm8ucmVxdW90ZShuKSsiJCIpO2Zvcih2YXIgciBpbiB0aGlzKWlm
KHQ9ci5tYXRjaChlKSl7dmFyIHU9dGhpc1tyXTt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIodFsx
XSx1LHUuJCksZGVsZXRlIHRoaXNbcl19fXZhciBvPSJfX29uIituLGE9bi5pbmRleE9mKCIuIiks
Yz1PO2E+MCYmKG49bi5zdWJzdHJpbmcoMCxhKSk7dmFyIHM9eWEuZ2V0KG4pO3JldHVybiBzJiYo
bj1zLGM9WSksYT90P3U6cjp0P3Y6aX1mdW5jdGlvbiBPKG4sdCl7cmV0dXJuIGZ1bmN0aW9uKGUp
e3ZhciByPVpvLmV2ZW50O1pvLmV2ZW50PWUsdFswXT10aGlzLl9fZGF0YV9fO3RyeXtuLmFwcGx5
KHRoaXMsdCl9ZmluYWxseXtaby5ldmVudD1yfX19ZnVuY3Rpb24gWShuLHQpe3ZhciBlPU8obix0
KTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHQ9dGhpcyxyPW4ucmVsYXRlZFRhcmdldDtyJiYocj09
PXR8fDgmci5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSl8fGUuY2FsbCh0LG4pfX1mdW5jdGlv
biBJKCl7dmFyIG49Ii5kcmFnc3VwcHJlc3MtIisgKytNYSx0PSJjbGljayIrbixlPVpvLnNlbGVj
dChXbykub24oInRvdWNobW92ZSIrbix5KS5vbigiZHJhZ3N0YXJ0IituLHkpLm9uKCJzZWxlY3Rz
dGFydCIrbix5KTtpZih4YSl7dmFyIHI9Qm8uc3R5bGUsdT1yW3hhXTtyW3hhXT0ibm9uZSJ9cmV0
dXJuIGZ1bmN0aW9uKGkpe2Z1bmN0aW9uIG8oKXtlLm9uKHQsbnVsbCl9ZS5vbihuLG51bGwpLHhh
JiYoclt4YV09dSksaSYmKGUub24odCxmdW5jdGlvbigpe3koKSxvKCl9LCEwKSxzZXRUaW1lb3V0
KG8sMCkpfX1mdW5jdGlvbiBaKG4sdCl7dC5jaGFuZ2VkVG91Y2hlcyYmKHQ9dC5jaGFuZ2VkVG91
Y2hlc1swXSk7dmFyIGU9bi5vd25lclNWR0VsZW1lbnR8fG47aWYoZS5jcmVhdGVTVkdQb2ludCl7
dmFyIHI9ZS5jcmVhdGVTVkdQb2ludCgpO2lmKDA+X2EmJihXby5zY3JvbGxYfHxXby5zY3JvbGxZ
KSl7ZT1aby5zZWxlY3QoImJvZHkiKS5hcHBlbmQoInN2ZyIpLnN0eWxlKHtwb3NpdGlvbjoiYWJz
b2x1dGUiLHRvcDowLGxlZnQ6MCxtYXJnaW46MCxwYWRkaW5nOjAsYm9yZGVyOiJub25lIn0sImlt
cG9ydGFudCIpO3ZhciB1PWVbMF1bMF0uZ2V0U2NyZWVuQ1RNKCk7X2E9ISh1LmZ8fHUuZSksZS5y
ZW1vdmUoKX1yZXR1cm4gX2E/KHIueD10LnBhZ2VYLHIueT10LnBhZ2VZKTooci54PXQuY2xpZW50
WCxyLnk9dC5jbGllbnRZKSxyPXIubWF0cml4VHJhbnNmb3JtKG4uZ2V0U2NyZWVuQ1RNKCkuaW52
ZXJzZSgpKSxbci54LHIueV19dmFyIGk9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5b
dC5jbGllbnRYLWkubGVmdC1uLmNsaWVudExlZnQsdC5jbGllbnRZLWkudG9wLW4uY2xpZW50VG9w
XX1mdW5jdGlvbiBWKCl7cmV0dXJuIFpvLmV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZp
ZXJ9ZnVuY3Rpb24gWCgpe3JldHVybiBaby5ldmVudC50YXJnZXR9ZnVuY3Rpb24gJCgpe3JldHVy
biBXb31mdW5jdGlvbiBCKG4pe3JldHVybiBuPjA/MTowPm4/LTE6MH1mdW5jdGlvbiBXKG4sdCxl
KXtyZXR1cm4odFswXS1uWzBdKSooZVsxXS1uWzFdKS0odFsxXS1uWzFdKSooZVswXS1uWzBdKX1m
dW5jdGlvbiBKKG4pe3JldHVybiBuPjE/MDotMT5uP2JhOk1hdGguYWNvcyhuKX1mdW5jdGlvbiBH
KG4pe3JldHVybiBuPjE/U2E6LTE+bj8tU2E6TWF0aC5hc2luKG4pfWZ1bmN0aW9uIEsobil7cmV0
dXJuKChuPU1hdGguZXhwKG4pKS0xL24pLzJ9ZnVuY3Rpb24gUShuKXtyZXR1cm4oKG49TWF0aC5l
eHAobikpKzEvbikvMn1mdW5jdGlvbiBudChuKXtyZXR1cm4oKG49TWF0aC5leHAoMipuKSktMSkv
KG4rMSl9ZnVuY3Rpb24gdHQobil7cmV0dXJuKG49TWF0aC5zaW4obi8yKSkqbn1mdW5jdGlvbiBl
dCgpe31mdW5jdGlvbiBydChuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBydD8odGhpcy5o
PStuLHRoaXMucz0rdCx2b2lkKHRoaXMubD0rZSkpOmFyZ3VtZW50cy5sZW5ndGg8Mj9uIGluc3Rh
bmNlb2YgcnQ/bmV3IHJ0KG4uaCxuLnMsbi5sKTptdCgiIituLHl0LHJ0KTpuZXcgcnQobix0LGUp
fWZ1bmN0aW9uIHV0KG4sdCxlKXtmdW5jdGlvbiByKG4pe3JldHVybiBuPjM2MD9uLT0zNjA6MD5u
JiYobis9MzYwKSw2MD5uP2krKG8taSkqbi82MDoxODA+bj9vOjI0MD5uP2krKG8taSkqKDI0MC1u
KS82MDppfWZ1bmN0aW9uIHUobil7cmV0dXJuIE1hdGgucm91bmQoMjU1KnIobikpfXZhciBpLG87
cmV0dXJuIG49aXNOYU4obik/MDoobiU9MzYwKTwwP24rMzYwOm4sdD1pc05hTih0KT8wOjA+dD8w
OnQ+MT8xOnQsZT0wPmU/MDplPjE/MTplLG89LjU+PWU/ZSooMSt0KTplK3QtZSp0LGk9MiplLW8s
bmV3IGd0KHUobisxMjApLHUobiksdShuLTEyMCkpfWZ1bmN0aW9uIGl0KG4sdCxlKXtyZXR1cm4g
dGhpcyBpbnN0YW5jZW9mIGl0Pyh0aGlzLmg9K24sdGhpcy5jPSt0LHZvaWQodGhpcy5sPStlKSk6
YXJndW1lbnRzLmxlbmd0aDwyP24gaW5zdGFuY2VvZiBpdD9uZXcgaXQobi5oLG4uYyxuLmwpOm4g
aW5zdGFuY2VvZiBhdD9zdChuLmwsbi5hLG4uYik6c3QoKG49eHQoKG49Wm8ucmdiKG4pKS5yLG4u
ZyxuLmIpKS5sLG4uYSxuLmIpOm5ldyBpdChuLHQsZSl9ZnVuY3Rpb24gb3Qobix0LGUpe3JldHVy
biBpc05hTihuKSYmKG49MCksaXNOYU4odCkmJih0PTApLG5ldyBhdChlLE1hdGguY29zKG4qPUFh
KSp0LE1hdGguc2luKG4pKnQpfWZ1bmN0aW9uIGF0KG4sdCxlKXtyZXR1cm4gdGhpcyBpbnN0YW5j
ZW9mIGF0Pyh0aGlzLmw9K24sdGhpcy5hPSt0LHZvaWQodGhpcy5iPStlKSk6YXJndW1lbnRzLmxl
bmd0aDwyP24gaW5zdGFuY2VvZiBhdD9uZXcgYXQobi5sLG4uYSxuLmIpOm4gaW5zdGFuY2VvZiBp
dD9vdChuLmwsbi5jLG4uaCk6eHQoKG49Z3QobikpLnIsbi5nLG4uYik6bmV3IGF0KG4sdCxlKX1m
dW5jdGlvbiBjdChuLHQsZSl7dmFyIHI9KG4rMTYpLzExNix1PXIrdC81MDAsaT1yLWUvMjAwO3Jl
dHVybiB1PWx0KHUpKmphLHI9bHQocikqSGEsaT1sdChpKSpGYSxuZXcgZ3QoaHQoMy4yNDA0NTQy
KnUtMS41MzcxMzg1KnItLjQ5ODUzMTQqaSksaHQoLS45NjkyNjYqdSsxLjg3NjAxMDgqcisuMDQx
NTU2KmkpLGh0KC4wNTU2NDM0KnUtLjIwNDAyNTkqcisxLjA1NzIyNTIqaSkpfWZ1bmN0aW9uIHN0
KG4sdCxlKXtyZXR1cm4gbj4wP25ldyBpdChNYXRoLmF0YW4yKGUsdCkqQ2EsTWF0aC5zcXJ0KHQq
dCtlKmUpLG4pOm5ldyBpdCgwLzAsMC8wLG4pfWZ1bmN0aW9uIGx0KG4pe3JldHVybiBuPi4yMDY4
OTMwMzQ/bipuKm46KG4tNC8yOSkvNy43ODcwMzd9ZnVuY3Rpb24gZnQobil7cmV0dXJuIG4+LjAw
ODg1Nj9NYXRoLnBvdyhuLDEvMyk6Ny43ODcwMzcqbis0LzI5fWZ1bmN0aW9uIGh0KG4pe3JldHVy
biBNYXRoLnJvdW5kKDI1NSooLjAwMzA0Pj1uPzEyLjkyKm46MS4wNTUqTWF0aC5wb3cobiwxLzIu
NCktLjA1NSkpfWZ1bmN0aW9uIGd0KG4sdCxlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGd0Pyh0
aGlzLnI9fn5uLHRoaXMuZz1+fnQsdm9pZCh0aGlzLmI9fn5lKSk6YXJndW1lbnRzLmxlbmd0aDwy
P24gaW5zdGFuY2VvZiBndD9uZXcgZ3Qobi5yLG4uZyxuLmIpOm10KCIiK24sZ3QsdXQpOm5ldyBn
dChuLHQsZSl9ZnVuY3Rpb24gcHQobil7cmV0dXJuIG5ldyBndChuPj4xNiwyNTUmbj4+OCwyNTUm
bil9ZnVuY3Rpb24gdnQobil7cmV0dXJuIHB0KG4pKyIifWZ1bmN0aW9uIGR0KG4pe3JldHVybiAx
Nj5uPyIwIitNYXRoLm1heCgwLG4pLnRvU3RyaW5nKDE2KTpNYXRoLm1pbigyNTUsbikudG9TdHJp
bmcoMTYpfWZ1bmN0aW9uIG10KG4sdCxlKXt2YXIgcix1LGksbz0wLGE9MCxjPTA7aWYocj0vKFth
LXpdKylcKCguKilcKS9pLmV4ZWMobikpc3dpdGNoKHU9clsyXS5zcGxpdCgiLCIpLHJbMV0pe2Nh
c2UiaHNsIjpyZXR1cm4gZShwYXJzZUZsb2F0KHVbMF0pLHBhcnNlRmxvYXQodVsxXSkvMTAwLHBh
cnNlRmxvYXQodVsyXSkvMTAwKTtjYXNlInJnYiI6cmV0dXJuIHQoX3QodVswXSksX3QodVsxXSks
X3QodVsyXSkpfXJldHVybihpPUlhLmdldChuKSk/dChpLnIsaS5nLGkuYik6KG51bGw9PW58fCIj
IiE9PW4uY2hhckF0KDApfHxpc05hTihpPXBhcnNlSW50KG4uc3Vic3RyaW5nKDEpLDE2KSl8fCg0
PT09bi5sZW5ndGg/KG89KDM4NDAmaSk+PjQsbz1vPj40fG8sYT0yNDAmaSxhPWE+PjR8YSxjPTE1
JmksYz1jPDw0fGMpOjc9PT1uLmxlbmd0aCYmKG89KDE2NzExNjgwJmkpPj4xNixhPSg2NTI4MCZp
KT4+OCxjPTI1NSZpKSksdChvLGEsYykpfWZ1bmN0aW9uIHl0KG4sdCxlKXt2YXIgcix1LGk9TWF0
aC5taW4obi89MjU1LHQvPTI1NSxlLz0yNTUpLG89TWF0aC5tYXgobix0LGUpLGE9by1pLGM9KG8r
aSkvMjtyZXR1cm4gYT8odT0uNT5jP2EvKG8raSk6YS8oMi1vLWkpLHI9bj09bz8odC1lKS9hKyhl
PnQ/NjowKTp0PT1vPyhlLW4pL2ErMjoobi10KS9hKzQscio9NjApOihyPTAvMCx1PWM+MCYmMT5j
PzA6ciksbmV3IHJ0KHIsdSxjKX1mdW5jdGlvbiB4dChuLHQsZSl7bj1NdChuKSx0PU10KHQpLGU9
TXQoZSk7dmFyIHI9ZnQoKC40MTI0NTY0Km4rLjM1NzU3NjEqdCsuMTgwNDM3NSplKS9qYSksdT1m
dCgoLjIxMjY3MjkqbisuNzE1MTUyMip0Ky4wNzIxNzUqZSkvSGEpLGk9ZnQoKC4wMTkzMzM5Km4r
LjExOTE5Mip0Ky45NTAzMDQxKmUpL0ZhKTtyZXR1cm4gYXQoMTE2KnUtMTYsNTAwKihyLXUpLDIw
MCoodS1pKSl9ZnVuY3Rpb24gTXQobil7cmV0dXJuKG4vPTI1NSk8PS4wNDA0NT9uLzEyLjkyOk1h
dGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gX3Qobil7dmFyIHQ9cGFyc2VGbG9h
dChuKTtyZXR1cm4iJSI9PT1uLmNoYXJBdChuLmxlbmd0aC0xKT9NYXRoLnJvdW5kKDIuNTUqdCk6
dH1mdW5jdGlvbiBidChuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmZ1bmN0aW9uKCl7
cmV0dXJuIG59fWZ1bmN0aW9uIHd0KG4pe3JldHVybiBufWZ1bmN0aW9uIFN0KG4pe3JldHVybiBm
dW5jdGlvbih0LGUscil7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10
eXBlb2YgZSYmKHI9ZSxlPW51bGwpLGt0KHQsZSxuLHIpfX1mdW5jdGlvbiBrdChuLHQsZSxyKXtm
dW5jdGlvbiB1KCl7dmFyIG4sdD1jLnN0YXR1cztpZighdCYmYy5yZXNwb25zZVRleHR8fHQ+PTIw
MCYmMzAwPnR8fDMwND09PXQpe3RyeXtuPWUuY2FsbChpLGMpfWNhdGNoKHIpe3JldHVybiBvLmVy
cm9yLmNhbGwoaSxyKSx2b2lkIDB9by5sb2FkLmNhbGwoaSxuKX1lbHNlIG8uZXJyb3IuY2FsbChp
LGMpfXZhciBpPXt9LG89Wm8uZGlzcGF0Y2goImJlZm9yZXNlbmQiLCJwcm9ncmVzcyIsImxvYWQi
LCJlcnJvciIpLGE9e30sYz1uZXcgWE1MSHR0cFJlcXVlc3Qscz1udWxsO3JldHVybiFXby5YRG9t
YWluUmVxdWVzdHx8IndpdGhDcmVkZW50aWFscyJpbiBjfHwhL14oaHR0cChzKT86KT9cL1wvLy50
ZXN0KG4pfHwoYz1uZXcgWERvbWFpblJlcXVlc3QpLCJvbmxvYWQiaW4gYz9jLm9ubG9hZD1jLm9u
ZXJyb3I9dTpjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2MucmVhZHlTdGF0ZT4zJiZ1
KCl9LGMub25wcm9ncmVzcz1mdW5jdGlvbihuKXt2YXIgdD1aby5ldmVudDtaby5ldmVudD1uO3Ry
eXtvLnByb2dyZXNzLmNhbGwoaSxjKX1maW5hbGx5e1pvLmV2ZW50PXR9fSxpLmhlYWRlcj1mdW5j
dGlvbihuLHQpe3JldHVybiBuPShuKyIiKS50b0xvd2VyQ2FzZSgpLGFyZ3VtZW50cy5sZW5ndGg8
Mj9hW25dOihudWxsPT10P2RlbGV0ZSBhW25dOmFbbl09dCsiIixpKX0saS5taW1lVHlwZT1mdW5j
dGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1udWxsPT1uP251bGw6bisiIixpKTp0
fSxpLnJlc3BvbnNlVHlwZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1u
LGkpOnN9LGkucmVzcG9uc2U9ZnVuY3Rpb24obil7cmV0dXJuIGU9bixpfSxbImdldCIsInBvc3Qi
XS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lbbl09ZnVuY3Rpb24oKXtyZXR1cm4gaS5zZW5kLmFwcGx5
KGksW25dLmNvbmNhdChYbyhhcmd1bWVudHMpKSl9fSksaS5zZW5kPWZ1bmN0aW9uKGUscix1KXtp
ZigyPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHImJih1PXIscj1udWxs
KSxjLm9wZW4oZSxuLCEwKSxudWxsPT10fHwiYWNjZXB0ImluIGF8fChhLmFjY2VwdD10KyIsKi8q
IiksYy5zZXRSZXF1ZXN0SGVhZGVyKWZvcih2YXIgbCBpbiBhKWMuc2V0UmVxdWVzdEhlYWRlcihs
LGFbbF0pO3JldHVybiBudWxsIT10JiZjLm92ZXJyaWRlTWltZVR5cGUmJmMub3ZlcnJpZGVNaW1l
VHlwZSh0KSxudWxsIT1zJiYoYy5yZXNwb25zZVR5cGU9cyksbnVsbCE9dSYmaS5vbigiZXJyb3Ii
LHUpLm9uKCJsb2FkIixmdW5jdGlvbihuKXt1KG51bGwsbil9KSxvLmJlZm9yZXNlbmQuY2FsbChp
LGMpLGMuc2VuZChudWxsPT1yP251bGw6ciksaX0saS5hYm9ydD1mdW5jdGlvbigpe3JldHVybiBj
LmFib3J0KCksaX0sWm8ucmViaW5kKGksbywib24iKSxudWxsPT1yP2k6aS5nZXQoRXQocikpfWZ1
bmN0aW9uIEV0KG4pe3JldHVybiAxPT09bi5sZW5ndGg/ZnVuY3Rpb24odCxlKXtuKG51bGw9PXQ/
ZTpudWxsKX06bn1mdW5jdGlvbiBBdCgpe3ZhciBuPUN0KCksdD1OdCgpLW47dD4yND8oaXNGaW5p
dGUodCkmJihjbGVhclRpbWVvdXQoJGEpLCRhPXNldFRpbWVvdXQoQXQsdCkpLFhhPTApOihYYT0x
LFdhKEF0KSl9ZnVuY3Rpb24gQ3QoKXt2YXIgbj1EYXRlLm5vdygpO2ZvcihCYT1aYTtCYTspbj49
QmEudCYmKEJhLmY9QmEuYyhuLUJhLnQpKSxCYT1CYS5uO3JldHVybiBufWZ1bmN0aW9uIE50KCl7
Zm9yKHZhciBuLHQ9WmEsZT0xLzA7dDspdC5mP3Q9bj9uLm49dC5uOlphPXQubjoodC50PGUmJihl
PXQudCksdD0obj10KS5uKTtyZXR1cm4gVmE9bixlfWZ1bmN0aW9uIHp0KG4sdCl7cmV0dXJuIHQt
KG4/TWF0aC5jZWlsKE1hdGgubG9nKG4pL01hdGguTE4xMCk6MSl9ZnVuY3Rpb24gTHQobix0KXt2
YXIgZT1NYXRoLnBvdygxMCwzKnVhKDgtdCkpO3JldHVybntzY2FsZTp0Pjg/ZnVuY3Rpb24obil7
cmV0dXJuIG4vZX06ZnVuY3Rpb24obil7cmV0dXJuIG4qZX0sc3ltYm9sOm59fWZ1bmN0aW9uIFR0
KG4pe3ZhciB0PW4uZGVjaW1hbCxlPW4udGhvdXNhbmRzLHI9bi5ncm91cGluZyx1PW4uY3VycmVu
Y3ksaT1yP2Z1bmN0aW9uKG4pe2Zvcih2YXIgdD1uLmxlbmd0aCx1PVtdLGk9MCxvPXJbMF07dD4w
JiZvPjA7KXUucHVzaChuLnN1YnN0cmluZyh0LT1vLHQrbykpLG89cltpPShpKzEpJXIubGVuZ3Ro
XTtyZXR1cm4gdS5yZXZlcnNlKCkuam9pbihlKX06d3Q7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBl
PUdhLmV4ZWMobikscj1lWzFdfHwiICIsbz1lWzJdfHwiPiIsYT1lWzNdfHwiIixjPWVbNF18fCIi
LHM9ZVs1XSxsPStlWzZdLGY9ZVs3XSxoPWVbOF0sZz1lWzldLHA9MSx2PSIiLGQ9IiIsbT0hMTtz
d2l0Y2goaCYmKGg9K2guc3Vic3RyaW5nKDEpKSwoc3x8IjAiPT09ciYmIj0iPT09bykmJihzPXI9
IjAiLG89Ij0iLGYmJihsLT1NYXRoLmZsb29yKChsLTEpLzQpKSksZyl7Y2FzZSJuIjpmPSEwLGc9
ImciO2JyZWFrO2Nhc2UiJSI6cD0xMDAsZD0iJSIsZz0iZiI7YnJlYWs7Y2FzZSJwIjpwPTEwMCxk
PSIlIixnPSJyIjticmVhaztjYXNlImIiOmNhc2UibyI6Y2FzZSJ4IjpjYXNlIlgiOiIjIj09PWMm
Jih2PSIwIitnLnRvTG93ZXJDYXNlKCkpO2Nhc2UiYyI6Y2FzZSJkIjptPSEwLGg9MDticmVhaztj
YXNlInMiOnA9LTEsZz0iciJ9IiQiPT09YyYmKHY9dVswXSxkPXVbMV0pLCJyIiE9Z3x8aHx8KGc9
ImciKSxudWxsIT1oJiYoImciPT1nP2g9TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxoKSk6KCJlIj09
Z3x8ImYiPT1nKSYmKGg9TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxoKSkpKSxnPUthLmdldChnKXx8
cXQ7dmFyIHk9cyYmZjtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGU9ZDtpZihtJiZuJTEpcmV0dXJu
IiI7dmFyIHU9MD5ufHwwPT09biYmMD4xL24/KG49LW4sIi0iKTphO2lmKDA+cCl7dmFyIGM9Wm8u
Zm9ybWF0UHJlZml4KG4saCk7bj1jLnNjYWxlKG4pLGU9Yy5zeW1ib2wrZH1lbHNlIG4qPXA7bj1n
KG4saCk7dmFyIHg9bi5sYXN0SW5kZXhPZigiLiIpLE09MD54P246bi5zdWJzdHJpbmcoMCx4KSxf
PTA+eD8iIjp0K24uc3Vic3RyaW5nKHgrMSk7IXMmJmYmJihNPWkoTSkpO3ZhciBiPXYubGVuZ3Ro
K00ubGVuZ3RoK18ubGVuZ3RoKyh5PzA6dS5sZW5ndGgpLHc9bD5iP25ldyBBcnJheShiPWwtYisx
KS5qb2luKHIpOiIiO3JldHVybiB5JiYoTT1pKHcrTSkpLHUrPXYsbj1NK18sKCI8Ij09PW8/dStu
K3c6Ij4iPT09bz93K3UrbjoiXiI9PT1vP3cuc3Vic3RyaW5nKDAsYj4+PTEpK3Urbit3LnN1YnN0
cmluZyhiKTp1Kyh5P246dytuKSkrZX19fWZ1bmN0aW9uIHF0KG4pe3JldHVybiBuKyIifWZ1bmN0
aW9uIFJ0KCl7dGhpcy5fPW5ldyBEYXRlKGFyZ3VtZW50cy5sZW5ndGg+MT9EYXRlLlVUQy5hcHBs
eSh0aGlzLGFyZ3VtZW50cyk6YXJndW1lbnRzWzBdKX1mdW5jdGlvbiBEdChuLHQsZSl7ZnVuY3Rp
b24gcih0KXt2YXIgZT1uKHQpLHI9aShlLDEpO3JldHVybiByLXQ+dC1lP2U6cn1mdW5jdGlvbiB1
KGUpe3JldHVybiB0KGU9bihuZXcgbmMoZS0xKSksMSksZX1mdW5jdGlvbiBpKG4sZSl7cmV0dXJu
IHQobj1uZXcgbmMoK24pLGUpLG59ZnVuY3Rpb24gbyhuLHIsaSl7dmFyIG89dShuKSxhPVtdO2lm
KGk+MSlmb3IoO3I+bzspZShvKSVpfHxhLnB1c2gobmV3IERhdGUoK28pKSx0KG8sMSk7ZWxzZSBm
b3IoO3I+bzspYS5wdXNoKG5ldyBEYXRlKCtvKSksdChvLDEpO3JldHVybiBhfWZ1bmN0aW9uIGEo
bix0LGUpe3RyeXtuYz1SdDt2YXIgcj1uZXcgUnQ7cmV0dXJuIHIuXz1uLG8ocix0LGUpfWZpbmFs
bHl7bmM9RGF0ZX19bi5mbG9vcj1uLG4ucm91bmQ9cixuLmNlaWw9dSxuLm9mZnNldD1pLG4ucmFu
Z2U9bzt2YXIgYz1uLnV0Yz1QdChuKTtyZXR1cm4gYy5mbG9vcj1jLGMucm91bmQ9UHQociksYy5j
ZWlsPVB0KHUpLGMub2Zmc2V0PVB0KGkpLGMucmFuZ2U9YSxufWZ1bmN0aW9uIFB0KG4pe3JldHVy
biBmdW5jdGlvbih0LGUpe3RyeXtuYz1SdDt2YXIgcj1uZXcgUnQ7cmV0dXJuIHIuXz10LG4ocixl
KS5ffWZpbmFsbHl7bmM9RGF0ZX19fWZ1bmN0aW9uIFV0KG4pe2Z1bmN0aW9uIHQobil7ZnVuY3Rp
b24gdCh0KXtmb3IodmFyIGUsdSxpLG89W10sYT0tMSxjPTA7KythPHI7KTM3PT09bi5jaGFyQ29k
ZUF0KGEpJiYoby5wdXNoKG4uc3Vic3RyaW5nKGMsYSkpLG51bGwhPSh1PWVjW2U9bi5jaGFyQXQo
KythKV0pJiYoZT1uLmNoYXJBdCgrK2EpKSwoaT1DW2VdKSYmKGU9aSh0LG51bGw9PXU/ImUiPT09
ZT8iICI6IjAiOnUpKSxvLnB1c2goZSksYz1hKzEpO3JldHVybiBvLnB1c2gobi5zdWJzdHJpbmco
YyxhKSksby5qb2luKCIiKX12YXIgcj1uLmxlbmd0aDtyZXR1cm4gdC5wYXJzZT1mdW5jdGlvbih0
KXt2YXIgcj17eToxOTAwLG06MCxkOjEsSDowLE06MCxTOjAsTDowLFo6bnVsbH0sdT1lKHIsbix0
LDApO2lmKHUhPXQubGVuZ3RoKXJldHVybiBudWxsOyJwImluIHImJihyLkg9ci5IJTEyKzEyKnIu
cCk7dmFyIGk9bnVsbCE9ci5aJiZuYyE9PVJ0LG89bmV3KGk/UnQ6bmMpO3JldHVybiJqImluIHI/
by5zZXRGdWxsWWVhcihyLnksMCxyLmopOiJ3ImluIHImJigiVyJpbiByfHwiVSJpbiByKT8oby5z
ZXRGdWxsWWVhcihyLnksMCwxKSxvLnNldEZ1bGxZZWFyKHIueSwwLCJXImluIHI/KHIudys2KSU3
Kzcqci5XLShvLmdldERheSgpKzUpJTc6ci53Kzcqci5VLShvLmdldERheSgpKzYpJTcpKTpvLnNl
dEZ1bGxZZWFyKHIueSxyLm0sci5kKSxvLnNldEhvdXJzKHIuSCtNYXRoLmZsb29yKHIuWi8xMDAp
LHIuTStyLlolMTAwLHIuUyxyLkwpLGk/by5fOm99LHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1
cm4gbn0sdH1mdW5jdGlvbiBlKG4sdCxlLHIpe2Zvcih2YXIgdSxpLG8sYT0wLGM9dC5sZW5ndGgs
cz1lLmxlbmd0aDtjPmE7KXtpZihyPj1zKXJldHVybi0xO2lmKHU9dC5jaGFyQ29kZUF0KGErKyks
Mzc9PT11KXtpZihvPXQuY2hhckF0KGErKyksaT1OW28gaW4gZWM/dC5jaGFyQXQoYSsrKTpvXSwh
aXx8KHI9aShuLGUscikpPDApcmV0dXJuLTF9ZWxzZSBpZih1IT1lLmNoYXJDb2RlQXQocisrKSly
ZXR1cm4tMX1yZXR1cm4gcn1mdW5jdGlvbiByKG4sdCxlKXtiLmxhc3RJbmRleD0wO3ZhciByPWIu
ZXhlYyh0LnN1YnN0cmluZyhlKSk7cmV0dXJuIHI/KG4udz13LmdldChyWzBdLnRvTG93ZXJDYXNl
KCkpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHUobix0LGUpe00ubGFzdEluZGV4PTA7dmFy
IHI9TS5leGVjKHQuc3Vic3RyaW5nKGUpKTtyZXR1cm4gcj8obi53PV8uZ2V0KHJbMF0udG9Mb3dl
ckNhc2UoKSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gaShuLHQsZSl7RS5sYXN0SW5kZXg9
MDt2YXIgcj1FLmV4ZWModC5zdWJzdHJpbmcoZSkpO3JldHVybiByPyhuLm09QS5nZXQoclswXS50
b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBvKG4sdCxlKXtTLmxhc3RJ
bmRleD0wO3ZhciByPVMuZXhlYyh0LnN1YnN0cmluZyhlKSk7cmV0dXJuIHI/KG4ubT1rLmdldChy
WzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGEobix0LHIpe3Jl
dHVybiBlKG4sQy5jLnRvU3RyaW5nKCksdCxyKX1mdW5jdGlvbiBjKG4sdCxyKXtyZXR1cm4gZShu
LEMueC50b1N0cmluZygpLHQscil9ZnVuY3Rpb24gcyhuLHQscil7cmV0dXJuIGUobixDLlgudG9T
dHJpbmcoKSx0LHIpfWZ1bmN0aW9uIGwobix0LGUpe3ZhciByPXguZ2V0KHQuc3Vic3RyaW5nKGUs
ZSs9MikudG9Mb3dlckNhc2UoKSk7cmV0dXJuIG51bGw9PXI/LTE6KG4ucD1yLGUpfXZhciBmPW4u
ZGF0ZVRpbWUsaD1uLmRhdGUsZz1uLnRpbWUscD1uLnBlcmlvZHMsdj1uLmRheXMsZD1uLnNob3J0
RGF5cyxtPW4ubW9udGhzLHk9bi5zaG9ydE1vbnRoczt0LnV0Yz1mdW5jdGlvbihuKXtmdW5jdGlv
biBlKG4pe3RyeXtuYz1SdDt2YXIgdD1uZXcgbmM7cmV0dXJuIHQuXz1uLHIodCl9ZmluYWxseXtu
Yz1EYXRlfX12YXIgcj10KG4pO3JldHVybiBlLnBhcnNlPWZ1bmN0aW9uKG4pe3RyeXtuYz1SdDt2
YXIgdD1yLnBhcnNlKG4pO3JldHVybiB0JiZ0Ll99ZmluYWxseXtuYz1EYXRlfX0sZS50b1N0cmlu
Zz1yLnRvU3RyaW5nLGV9LHQubXVsdGk9dC51dGMubXVsdGk9cmU7dmFyIHg9Wm8ubWFwKCksTT1I
dCh2KSxfPUZ0KHYpLGI9SHQoZCksdz1GdChkKSxTPUh0KG0pLGs9RnQobSksRT1IdCh5KSxBPUZ0
KHkpO3AuZm9yRWFjaChmdW5jdGlvbihuLHQpe3guc2V0KG4udG9Mb3dlckNhc2UoKSx0KX0pO3Zh
ciBDPXthOmZ1bmN0aW9uKG4pe3JldHVybiBkW24uZ2V0RGF5KCldfSxBOmZ1bmN0aW9uKG4pe3Jl
dHVybiB2W24uZ2V0RGF5KCldfSxiOmZ1bmN0aW9uKG4pe3JldHVybiB5W24uZ2V0TW9udGgoKV19
LEI6ZnVuY3Rpb24obil7cmV0dXJuIG1bbi5nZXRNb250aCgpXX0sYzp0KGYpLGQ6ZnVuY3Rpb24o
bix0KXtyZXR1cm4ganQobi5nZXREYXRlKCksdCwyKX0sZTpmdW5jdGlvbihuLHQpe3JldHVybiBq
dChuLmdldERhdGUoKSx0LDIpfSxIOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0SG91cnMo
KSx0LDIpfSxJOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0SG91cnMoKSUxMnx8MTIsdCwy
KX0sajpmdW5jdGlvbihuLHQpe3JldHVybiBqdCgxK1FhLmRheU9mWWVhcihuKSx0LDMpfSxMOmZ1
bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0TWlsbGlzZWNvbmRzKCksdCwzKX0sbTpmdW5jdGlv
bihuLHQpe3JldHVybiBqdChuLmdldE1vbnRoKCkrMSx0LDIpfSxNOmZ1bmN0aW9uKG4sdCl7cmV0
dXJuIGp0KG4uZ2V0TWludXRlcygpLHQsMil9LHA6ZnVuY3Rpb24obil7cmV0dXJuIHBbKyhuLmdl
dEhvdXJzKCk+PTEyKV19LFM6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobi5nZXRTZWNvbmRzKCks
dCwyKX0sVTpmdW5jdGlvbihuLHQpe3JldHVybiBqdChRYS5zdW5kYXlPZlllYXIobiksdCwyKX0s
dzpmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXREYXkoKX0sVzpmdW5jdGlvbihuLHQpe3JldHVybiBq
dChRYS5tb25kYXlPZlllYXIobiksdCwyKX0seDp0KGgpLFg6dChnKSx5OmZ1bmN0aW9uKG4sdCl7
cmV0dXJuIGp0KG4uZ2V0RnVsbFllYXIoKSUxMDAsdCwyKX0sWTpmdW5jdGlvbihuLHQpe3JldHVy
biBqdChuLmdldEZ1bGxZZWFyKCklMWU0LHQsNCl9LFo6dGUsIiUiOmZ1bmN0aW9uKCl7cmV0dXJu
IiUifX0sTj17YTpyLEE6dSxiOmksQjpvLGM6YSxkOld0LGU6V3QsSDpHdCxJOkd0LGo6SnQsTDpu
ZSxtOkJ0LE06S3QscDpsLFM6UXQsVTpZdCx3Ok90LFc6SXQseDpjLFg6cyx5OlZ0LFk6WnQsWjpY
dCwiJSI6ZWV9O3JldHVybiB0fWZ1bmN0aW9uIGp0KG4sdCxlKXt2YXIgcj0wPm4/Ii0iOiIiLHU9
KHI/LW46bikrIiIsaT11Lmxlbmd0aDtyZXR1cm4gcisoZT5pP25ldyBBcnJheShlLWkrMSkuam9p
bih0KSt1OnUpfWZ1bmN0aW9uIEh0KG4pe3JldHVybiBuZXcgUmVnRXhwKCJeKD86IituLm1hcCha
by5yZXF1b3RlKS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gRnQobil7Zm9yKHZhciB0PW5l
dyBvLGU9LTEscj1uLmxlbmd0aDsrK2U8cjspdC5zZXQobltlXS50b0xvd2VyQ2FzZSgpLGUpO3Jl
dHVybiB0fWZ1bmN0aW9uIE90KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQu
c3Vic3RyaW5nKGUsZSsxKSk7cmV0dXJuIHI/KG4udz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1m
dW5jdGlvbiBZdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmlu
ZyhlKSk7cmV0dXJuIHI/KG4uVT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBJdChu
LHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlKSk7cmV0dXJu
IHI/KG4uVz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBadChuLHQsZSl7cmMubGFz
dEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUrNCkpO3JldHVybiByPyhuLnk9
K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gVnQobix0LGUpe3JjLmxhc3RJbmRleD0w
O3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzIpKTtyZXR1cm4gcj8obi55PSR0KCtyWzBd
KSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBYdChuLHQsZSl7cmV0dXJuL15bKy1dXGR7NH0k
Ly50ZXN0KHQ9dC5zdWJzdHJpbmcoZSxlKzUpKT8obi5aPS10LGUrNSk6LTF9ZnVuY3Rpb24gJHQo
bil7cmV0dXJuIG4rKG4+Njg/MTkwMDoyZTMpfWZ1bmN0aW9uIEJ0KG4sdCxlKXtyYy5sYXN0SW5k
ZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4ubT1yWzBd
LTEsZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gV3Qobix0LGUpe3JjLmxhc3RJbmRleD0wO3Zh
ciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzIpKTtyZXR1cm4gcj8obi5kPStyWzBdLGUrclsw
XS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEp0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5l
eGVjKHQuc3Vic3RyaW5nKGUsZSszKSk7cmV0dXJuIHI/KG4uaj0rclswXSxlK3JbMF0ubGVuZ3Ro
KTotMX1mdW5jdGlvbiBHdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1
YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhuLkg9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVu
Y3Rpb24gS3Qobix0LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmco
ZSxlKzIpKTtyZXR1cm4gcj8obi5NPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFF0
KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSsyKSk7
cmV0dXJuIHI/KG4uUz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBuZShuLHQsZSl7
cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUrMykpO3JldHVybiBy
PyhuLkw9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdGUobil7dmFyIHQ9bi5nZXRU
aW1lem9uZU9mZnNldCgpLGU9dD4wPyItIjoiKyIscj1+fih1YSh0KS82MCksdT11YSh0KSU2MDty
ZXR1cm4gZStqdChyLCIwIiwyKStqdCh1LCIwIiwyKX1mdW5jdGlvbiBlZShuLHQsZSl7dWMubGFz
dEluZGV4PTA7dmFyIHI9dWMuZXhlYyh0LnN1YnN0cmluZyhlLGUrMSkpO3JldHVybiByP2Urclsw
XS5sZW5ndGg6LTF9ZnVuY3Rpb24gcmUobil7Zm9yKHZhciB0PW4ubGVuZ3RoLGU9LTE7KytlPHQ7
KW5bZV1bMF09dGhpcyhuW2VdWzBdKTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj1u
W2VdOyFyWzFdKHQpOylyPW5bKytlXTtyZXR1cm4gclswXSh0KX19ZnVuY3Rpb24gdWUoKXt9ZnVu
Y3Rpb24gaWUobix0LGUpe3ZhciByPWUucz1uK3QsdT1yLW4saT1yLXU7ZS50PW4taSsodC11KX1m
dW5jdGlvbiBvZShuLHQpe24mJmNjLmhhc093blByb3BlcnR5KG4udHlwZSkmJmNjW24udHlwZV0o
bix0KX1mdW5jdGlvbiBhZShuLHQsZSl7dmFyIHIsdT0tMSxpPW4ubGVuZ3RoLWU7Zm9yKHQubGlu
ZVN0YXJ0KCk7Kyt1PGk7KXI9blt1XSx0LnBvaW50KHJbMF0sclsxXSxyWzJdKTt0LmxpbmVFbmQo
KX1mdW5jdGlvbiBjZShuLHQpe3ZhciBlPS0xLHI9bi5sZW5ndGg7Zm9yKHQucG9seWdvblN0YXJ0
KCk7KytlPHI7KWFlKG5bZV0sdCwxKTt0LnBvbHlnb25FbmQoKX1mdW5jdGlvbiBzZSgpe2Z1bmN0
aW9uIG4obix0KXtuKj1BYSx0PXQqQWEvMitiYS80O3ZhciBlPW4tcixvPWU+PTA/MTotMSxhPW8q
ZSxjPU1hdGguY29zKHQpLHM9TWF0aC5zaW4odCksbD1pKnMsZj11KmMrbCpNYXRoLmNvcyhhKSxo
PWwqbypNYXRoLnNpbihhKTtsYy5hZGQoTWF0aC5hdGFuMihoLGYpKSxyPW4sdT1jLGk9c312YXIg
dCxlLHIsdSxpO2ZjLnBvaW50PWZ1bmN0aW9uKG8sYSl7ZmMucG9pbnQ9bixyPSh0PW8pKkFhLHU9
TWF0aC5jb3MoYT0oZT1hKSpBYS8yK2JhLzQpLGk9TWF0aC5zaW4oYSl9LGZjLmxpbmVFbmQ9ZnVu
Y3Rpb24oKXtuKHQsZSl9fWZ1bmN0aW9uIGxlKG4pe3ZhciB0PW5bMF0sZT1uWzFdLHI9TWF0aC5j
b3MoZSk7cmV0dXJuW3IqTWF0aC5jb3ModCkscipNYXRoLnNpbih0KSxNYXRoLnNpbihlKV19ZnVu
Y3Rpb24gZmUobix0KXtyZXR1cm4gblswXSp0WzBdK25bMV0qdFsxXStuWzJdKnRbMl19ZnVuY3Rp
b24gaGUobix0KXtyZXR1cm5bblsxXSp0WzJdLW5bMl0qdFsxXSxuWzJdKnRbMF0tblswXSp0WzJd
LG5bMF0qdFsxXS1uWzFdKnRbMF1dfWZ1bmN0aW9uIGdlKG4sdCl7blswXSs9dFswXSxuWzFdKz10
WzFdLG5bMl0rPXRbMl19ZnVuY3Rpb24gcGUobix0KXtyZXR1cm5bblswXSp0LG5bMV0qdCxuWzJd
KnRdfWZ1bmN0aW9uIHZlKG4pe3ZhciB0PU1hdGguc3FydChuWzBdKm5bMF0rblsxXSpuWzFdK25b
Ml0qblsyXSk7blswXS89dCxuWzFdLz10LG5bMl0vPXR9ZnVuY3Rpb24gZGUobil7cmV0dXJuW01h
dGguYXRhbjIoblsxXSxuWzBdKSxHKG5bMl0pXX1mdW5jdGlvbiBtZShuLHQpe3JldHVybiB1YShu
WzBdLXRbMF0pPGthJiZ1YShuWzFdLXRbMV0pPGthfWZ1bmN0aW9uIHllKG4sdCl7bio9QWE7dmFy
IGU9TWF0aC5jb3ModCo9QWEpO3hlKGUqTWF0aC5jb3MobiksZSpNYXRoLnNpbihuKSxNYXRoLnNp
bih0KSl9ZnVuY3Rpb24geGUobix0LGUpeysraGMscGMrPShuLXBjKS9oYyx2Yys9KHQtdmMpL2hj
LGRjKz0oZS1kYykvaGN9ZnVuY3Rpb24gTWUoKXtmdW5jdGlvbiBuKG4sdSl7bio9QWE7dmFyIGk9
TWF0aC5jb3ModSo9QWEpLG89aSpNYXRoLmNvcyhuKSxhPWkqTWF0aC5zaW4obiksYz1NYXRoLnNp
bih1KSxzPU1hdGguYXRhbjIoTWF0aC5zcXJ0KChzPWUqYy1yKmEpKnMrKHM9cipvLXQqYykqcyso
cz10KmEtZSpvKSpzKSx0Km8rZSphK3IqYyk7Z2MrPXMsbWMrPXMqKHQrKHQ9bykpLHljKz1zKihl
KyhlPWEpKSx4Yys9cyoocisocj1jKSkseGUodCxlLHIpfXZhciB0LGUscjt3Yy5wb2ludD1mdW5j
dGlvbih1LGkpe3UqPUFhO3ZhciBvPU1hdGguY29zKGkqPUFhKTt0PW8qTWF0aC5jb3ModSksZT1v
Kk1hdGguc2luKHUpLHI9TWF0aC5zaW4oaSksd2MucG9pbnQ9bix4ZSh0LGUscil9fWZ1bmN0aW9u
IF9lKCl7d2MucG9pbnQ9eWV9ZnVuY3Rpb24gYmUoKXtmdW5jdGlvbiBuKG4sdCl7bio9QWE7dmFy
IGU9TWF0aC5jb3ModCo9QWEpLG89ZSpNYXRoLmNvcyhuKSxhPWUqTWF0aC5zaW4obiksYz1NYXRo
LnNpbih0KSxzPXUqYy1pKmEsbD1pKm8tcipjLGY9ciphLXUqbyxoPU1hdGguc3FydChzKnMrbCps
K2YqZiksZz1yKm8rdSphK2kqYyxwPWgmJi1KKGcpL2gsdj1NYXRoLmF0YW4yKGgsZyk7TWMrPXAq
cyxfYys9cCpsLGJjKz1wKmYsZ2MrPXYsbWMrPXYqKHIrKHI9bykpLHljKz12Kih1Kyh1PWEpKSx4
Yys9diooaSsoaT1jKSkseGUocix1LGkpfXZhciB0LGUscix1LGk7d2MucG9pbnQ9ZnVuY3Rpb24o
byxhKXt0PW8sZT1hLHdjLnBvaW50PW4sbyo9QWE7dmFyIGM9TWF0aC5jb3MoYSo9QWEpO3I9YypN
YXRoLmNvcyhvKSx1PWMqTWF0aC5zaW4obyksaT1NYXRoLnNpbihhKSx4ZShyLHUsaSl9LHdjLmxp
bmVFbmQ9ZnVuY3Rpb24oKXtuKHQsZSksd2MubGluZUVuZD1fZSx3Yy5wb2ludD15ZX19ZnVuY3Rp
b24gd2UoKXtyZXR1cm4hMH1mdW5jdGlvbiBTZShuLHQsZSxyLHUpe3ZhciBpPVtdLG89W107aWYo
bi5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lmKCEoKHQ9bi5sZW5ndGgtMSk8PTApKXt2YXIgdCxlPW5b
MF0scj1uW3RdO2lmKG1lKGUscikpe3UubGluZVN0YXJ0KCk7Zm9yKHZhciBhPTA7dD5hOysrYSl1
LnBvaW50KChlPW5bYV0pWzBdLGVbMV0pO3JldHVybiB1LmxpbmVFbmQoKSx2b2lkIDB9dmFyIGM9
bmV3IEVlKGUsbixudWxsLCEwKSxzPW5ldyBFZShlLG51bGwsYywhMSk7Yy5vPXMsaS5wdXNoKGMp
LG8ucHVzaChzKSxjPW5ldyBFZShyLG4sbnVsbCwhMSkscz1uZXcgRWUocixudWxsLGMsITApLGMu
bz1zLGkucHVzaChjKSxvLnB1c2gocyl9fSksby5zb3J0KHQpLGtlKGkpLGtlKG8pLGkubGVuZ3Ro
KXtmb3IodmFyIGE9MCxjPWUscz1vLmxlbmd0aDtzPmE7KythKW9bYV0uZT1jPSFjO2Zvcih2YXIg
bCxmLGg9aVswXTs7KXtmb3IodmFyIGc9aCxwPSEwO2cudjspaWYoKGc9Zy5uKT09PWgpcmV0dXJu
O2w9Zy56LHUubGluZVN0YXJ0KCk7ZG97aWYoZy52PWcuby52PSEwLGcuZSl7aWYocClmb3IodmFy
IGE9MCxzPWwubGVuZ3RoO3M+YTsrK2EpdS5wb2ludCgoZj1sW2FdKVswXSxmWzFdKTtlbHNlIHIo
Zy54LGcubi54LDEsdSk7Zz1nLm59ZWxzZXtpZihwKXtsPWcucC56O2Zvcih2YXIgYT1sLmxlbmd0
aC0xO2E+PTA7LS1hKXUucG9pbnQoKGY9bFthXSlbMF0sZlsxXSl9ZWxzZSByKGcueCxnLnAueCwt
MSx1KTtnPWcucH1nPWcubyxsPWcueixwPSFwfXdoaWxlKCFnLnYpO3UubGluZUVuZCgpfX19ZnVu
Y3Rpb24ga2Uobil7aWYodD1uLmxlbmd0aCl7Zm9yKHZhciB0LGUscj0wLHU9blswXTsrK3I8dDsp
dS5uPWU9bltyXSxlLnA9dSx1PWU7dS5uPWU9blswXSxlLnA9dX19ZnVuY3Rpb24gRWUobix0LGUs
cil7dGhpcy54PW4sdGhpcy56PXQsdGhpcy5vPWUsdGhpcy5lPXIsdGhpcy52PSExLHRoaXMubj10
aGlzLnA9bnVsbH1mdW5jdGlvbiBBZShuLHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odSxpKXtmdW5j
dGlvbiBvKHQsZSl7dmFyIHI9dSh0LGUpO24odD1yWzBdLGU9clsxXSkmJmkucG9pbnQodCxlKX1m
dW5jdGlvbiBhKG4sdCl7dmFyIGU9dShuLHQpO2QucG9pbnQoZVswXSxlWzFdKX1mdW5jdGlvbiBj
KCl7eS5wb2ludD1hLGQubGluZVN0YXJ0KCl9ZnVuY3Rpb24gcygpe3kucG9pbnQ9byxkLmxpbmVF
bmQoKX1mdW5jdGlvbiBsKG4sdCl7di5wdXNoKFtuLHRdKTt2YXIgZT11KG4sdCk7TS5wb2ludChl
WzBdLGVbMV0pfWZ1bmN0aW9uIGYoKXtNLmxpbmVTdGFydCgpLHY9W119ZnVuY3Rpb24gaCgpe2wo
dlswXVswXSx2WzBdWzFdKSxNLmxpbmVFbmQoKTt2YXIgbix0PU0uY2xlYW4oKSxlPXguYnVmZmVy
KCkscj1lLmxlbmd0aDtpZih2LnBvcCgpLHAucHVzaCh2KSx2PW51bGwscilpZigxJnQpe249ZVsw
XTt2YXIgdSxyPW4ubGVuZ3RoLTEsbz0tMTtpZihyPjApe2ZvcihffHwoaS5wb2x5Z29uU3RhcnQo
KSxfPSEwKSxpLmxpbmVTdGFydCgpOysrbzxyOylpLnBvaW50KCh1PW5bb10pWzBdLHVbMV0pO2ku
bGluZUVuZCgpfX1lbHNlIHI+MSYmMiZ0JiZlLnB1c2goZS5wb3AoKS5jb25jYXQoZS5zaGlmdCgp
KSksZy5wdXNoKGUuZmlsdGVyKENlKSl9dmFyIGcscCx2LGQ9dChpKSxtPXUuaW52ZXJ0KHJbMF0s
clsxXSkseT17cG9pbnQ6byxsaW5lU3RhcnQ6YyxsaW5lRW5kOnMscG9seWdvblN0YXJ0OmZ1bmN0
aW9uKCl7eS5wb2ludD1sLHkubGluZVN0YXJ0PWYseS5saW5lRW5kPWgsZz1bXSxwPVtdfSxwb2x5
Z29uRW5kOmZ1bmN0aW9uKCl7eS5wb2ludD1vLHkubGluZVN0YXJ0PWMseS5saW5lRW5kPXMsZz1a
by5tZXJnZShnKTt2YXIgbj1MZShtLHApO2cubGVuZ3RoPyhffHwoaS5wb2x5Z29uU3RhcnQoKSxf
PSEwKSxTZShnLHplLG4sZSxpKSk6biYmKF98fChpLnBvbHlnb25TdGFydCgpLF89ITApLGkubGlu
ZVN0YXJ0KCksZShudWxsLG51bGwsMSxpKSxpLmxpbmVFbmQoKSksXyYmKGkucG9seWdvbkVuZCgp
LF89ITEpLGc9cD1udWxsfSxzcGhlcmU6ZnVuY3Rpb24oKXtpLnBvbHlnb25TdGFydCgpLGkubGlu
ZVN0YXJ0KCksZShudWxsLG51bGwsMSxpKSxpLmxpbmVFbmQoKSxpLnBvbHlnb25FbmQoKX19LHg9
TmUoKSxNPXQoeCksXz0hMTtyZXR1cm4geX19ZnVuY3Rpb24gQ2Uobil7cmV0dXJuIG4ubGVuZ3Ro
PjF9ZnVuY3Rpb24gTmUoKXt2YXIgbix0PVtdO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0
LnB1c2gobj1bXSl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7bi5wdXNoKFt0LGVdKX0sbGluZUVuZDp2
LGJ1ZmZlcjpmdW5jdGlvbigpe3ZhciBlPXQ7cmV0dXJuIHQ9W10sbj1udWxsLGV9LHJlam9pbjpm
dW5jdGlvbigpe3QubGVuZ3RoPjEmJnQucHVzaCh0LnBvcCgpLmNvbmNhdCh0LnNoaWZ0KCkpKX19
fWZ1bmN0aW9uIHplKG4sdCl7cmV0dXJuKChuPW4ueClbMF08MD9uWzFdLVNhLWthOlNhLW5bMV0p
LSgodD10LngpWzBdPDA/dFsxXS1TYS1rYTpTYS10WzFdKX1mdW5jdGlvbiBMZShuLHQpe3ZhciBl
PW5bMF0scj1uWzFdLHU9W01hdGguc2luKGUpLC1NYXRoLmNvcyhlKSwwXSxpPTAsbz0wO2xjLnJl
c2V0KCk7Zm9yKHZhciBhPTAsYz10Lmxlbmd0aDtjPmE7KythKXt2YXIgcz10W2FdLGw9cy5sZW5n
dGg7aWYobClmb3IodmFyIGY9c1swXSxoPWZbMF0sZz1mWzFdLzIrYmEvNCxwPU1hdGguc2luKGcp
LHY9TWF0aC5jb3MoZyksZD0xOzspe2Q9PT1sJiYoZD0wKSxuPXNbZF07dmFyIG09blswXSx5PW5b
MV0vMitiYS80LHg9TWF0aC5zaW4oeSksTT1NYXRoLmNvcyh5KSxfPW0taCxiPV8+PTA/MTotMSx3
PWIqXyxTPXc+YmEsaz1wKng7aWYobGMuYWRkKE1hdGguYXRhbjIoaypiKk1hdGguc2luKHcpLHYq
TStrKk1hdGguY29zKHcpKSksaSs9Uz9fK2Iqd2E6XyxTXmg+PWVebT49ZSl7dmFyIEU9aGUobGUo
ZiksbGUobikpO3ZlKEUpO3ZhciBBPWhlKHUsRSk7dmUoQSk7dmFyIEM9KFNeXz49MD8tMToxKSpH
KEFbMl0pOyhyPkN8fHI9PT1DJiYoRVswXXx8RVsxXSkpJiYobys9U15fPj0wPzE6LTEpfWlmKCFk
KyspYnJlYWs7aD1tLHA9eCx2PU0sZj1ufX1yZXR1cm4oLWthPml8fGthPmkmJjA+bGMpXjEmb31m
dW5jdGlvbiBUZShuKXt2YXIgdCxlPTAvMCxyPTAvMCx1PTAvMDtyZXR1cm57bGluZVN0YXJ0OmZ1
bmN0aW9uKCl7bi5saW5lU3RhcnQoKSx0PTF9LHBvaW50OmZ1bmN0aW9uKGksbyl7dmFyIGE9aT4w
P2JhOi1iYSxjPXVhKGktZSk7dWEoYy1iYSk8a2E/KG4ucG9pbnQoZSxyPShyK28pLzI+MD9TYTot
U2EpLG4ucG9pbnQodSxyKSxuLmxpbmVFbmQoKSxuLmxpbmVTdGFydCgpLG4ucG9pbnQoYSxyKSxu
LnBvaW50KGksciksdD0wKTp1IT09YSYmYz49YmEmJih1YShlLXUpPGthJiYoZS09dSprYSksdWEo
aS1hKTxrYSYmKGktPWEqa2EpLHI9cWUoZSxyLGksbyksbi5wb2ludCh1LHIpLG4ubGluZUVuZCgp
LG4ubGluZVN0YXJ0KCksbi5wb2ludChhLHIpLHQ9MCksbi5wb2ludChlPWkscj1vKSx1PWF9LGxp
bmVFbmQ6ZnVuY3Rpb24oKXtuLmxpbmVFbmQoKSxlPXI9MC8wfSxjbGVhbjpmdW5jdGlvbigpe3Jl
dHVybiAyLXR9fX1mdW5jdGlvbiBxZShuLHQsZSxyKXt2YXIgdSxpLG89TWF0aC5zaW4obi1lKTty
ZXR1cm4gdWEobyk+a2E/TWF0aC5hdGFuKChNYXRoLnNpbih0KSooaT1NYXRoLmNvcyhyKSkqTWF0
aC5zaW4oZSktTWF0aC5zaW4ocikqKHU9TWF0aC5jb3ModCkpKk1hdGguc2luKG4pKS8odSppKm8p
KToodCtyKS8yfWZ1bmN0aW9uIFJlKG4sdCxlLHIpe3ZhciB1O2lmKG51bGw9PW4pdT1lKlNhLHIu
cG9pbnQoLWJhLHUpLHIucG9pbnQoMCx1KSxyLnBvaW50KGJhLHUpLHIucG9pbnQoYmEsMCksci5w
b2ludChiYSwtdSksci5wb2ludCgwLC11KSxyLnBvaW50KC1iYSwtdSksci5wb2ludCgtYmEsMCks
ci5wb2ludCgtYmEsdSk7ZWxzZSBpZih1YShuWzBdLXRbMF0pPmthKXt2YXIgaT1uWzBdPHRbMF0/
YmE6LWJhO3U9ZSppLzIsci5wb2ludCgtaSx1KSxyLnBvaW50KDAsdSksci5wb2ludChpLHUpfWVs
c2Ugci5wb2ludCh0WzBdLHRbMV0pfWZ1bmN0aW9uIERlKG4pe2Z1bmN0aW9uIHQobix0KXtyZXR1
cm4gTWF0aC5jb3MobikqTWF0aC5jb3ModCk+aX1mdW5jdGlvbiBlKG4pe3ZhciBlLGksYyxzLGw7
cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe3M9Yz0hMSxsPTF9LHBvaW50OmZ1bmN0aW9uKGYs
aCl7dmFyIGcscD1bZixoXSx2PXQoZixoKSxkPW8/dj8wOnUoZixoKTp2P3UoZisoMD5mP2JhOi1i
YSksaCk6MDtpZighZSYmKHM9Yz12KSYmbi5saW5lU3RhcnQoKSx2IT09YyYmKGc9cihlLHApLCht
ZShlLGcpfHxtZShwLGcpKSYmKHBbMF0rPWthLHBbMV0rPWthLHY9dChwWzBdLHBbMV0pKSksdiE9
PWMpbD0wLHY/KG4ubGluZVN0YXJ0KCksZz1yKHAsZSksbi5wb2ludChnWzBdLGdbMV0pKTooZz1y
KGUscCksbi5wb2ludChnWzBdLGdbMV0pLG4ubGluZUVuZCgpKSxlPWc7ZWxzZSBpZihhJiZlJiZv
XnYpe3ZhciBtO2QmaXx8IShtPXIocCxlLCEwKSl8fChsPTAsbz8obi5saW5lU3RhcnQoKSxuLnBv
aW50KG1bMF1bMF0sbVswXVsxXSksbi5wb2ludChtWzFdWzBdLG1bMV1bMV0pLG4ubGluZUVuZCgp
KToobi5wb2ludChtWzFdWzBdLG1bMV1bMV0pLG4ubGluZUVuZCgpLG4ubGluZVN0YXJ0KCksbi5w
b2ludChtWzBdWzBdLG1bMF1bMV0pKSl9IXZ8fGUmJm1lKGUscCl8fG4ucG9pbnQocFswXSxwWzFd
KSxlPXAsYz12LGk9ZH0sbGluZUVuZDpmdW5jdGlvbigpe2MmJm4ubGluZUVuZCgpLGU9bnVsbH0s
Y2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gbHwocyYmYyk8PDF9fX1mdW5jdGlvbiByKG4sdCxlKXt2
YXIgcj1sZShuKSx1PWxlKHQpLG89WzEsMCwwXSxhPWhlKHIsdSksYz1mZShhLGEpLHM9YVswXSxs
PWMtcypzO2lmKCFsKXJldHVybiFlJiZuO3ZhciBmPWkqYy9sLGg9LWkqcy9sLGc9aGUobyxhKSxw
PXBlKG8sZiksdj1wZShhLGgpO2dlKHAsdik7dmFyIGQ9ZyxtPWZlKHAsZCkseT1mZShkLGQpLHg9
bSptLXkqKGZlKHAscCktMSk7aWYoISgwPngpKXt2YXIgTT1NYXRoLnNxcnQoeCksXz1wZShkLCgt
bS1NKS95KTtpZihnZShfLHApLF89ZGUoXyksIWUpcmV0dXJuIF87dmFyIGIsdz1uWzBdLFM9dFsw
XSxrPW5bMV0sRT10WzFdO3c+UyYmKGI9dyx3PVMsUz1iKTt2YXIgQT1TLXcsQz11YShBLWJhKTxr
YSxOPUN8fGthPkE7aWYoIUMmJms+RSYmKGI9ayxrPUUsRT1iKSxOP0M/aytFPjBeX1sxXTwodWEo
X1swXS13KTxrYT9rOkUpOms8PV9bMV0mJl9bMV08PUU6QT5iYV4odzw9X1swXSYmX1swXTw9Uykp
e3ZhciB6PXBlKGQsKC1tK00pL3kpO3JldHVybiBnZSh6LHApLFtfLGRlKHopXX19fWZ1bmN0aW9u
IHUodCxlKXt2YXIgcj1vP246YmEtbix1PTA7cmV0dXJuLXI+dD91fD0xOnQ+ciYmKHV8PTIpLC1y
PmU/dXw9NDplPnImJih1fD04KSx1fXZhciBpPU1hdGguY29zKG4pLG89aT4wLGE9dWEoaSk+a2Es
Yz1zcihuLDYqQWEpO3JldHVybiBBZSh0LGUsYyxvP1swLC1uXTpbLWJhLG4tYmFdKX1mdW5jdGlv
biBQZShuLHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odSl7dmFyIGksbz11LmEsYT11LmIsYz1vLngs
cz1vLnksbD1hLngsZj1hLnksaD0wLGc9MSxwPWwtYyx2PWYtcztpZihpPW4tYyxwfHwhKGk+MCkp
e2lmKGkvPXAsMD5wKXtpZihoPmkpcmV0dXJuO2c+aSYmKGc9aSl9ZWxzZSBpZihwPjApe2lmKGk+
ZylyZXR1cm47aT5oJiYoaD1pKX1pZihpPWUtYyxwfHwhKDA+aSkpe2lmKGkvPXAsMD5wKXtpZihp
PmcpcmV0dXJuO2k+aCYmKGg9aSl9ZWxzZSBpZihwPjApe2lmKGg+aSlyZXR1cm47Zz5pJiYoZz1p
KX1pZihpPXQtcyx2fHwhKGk+MCkpe2lmKGkvPXYsMD52KXtpZihoPmkpcmV0dXJuO2c+aSYmKGc9
aSl9ZWxzZSBpZih2PjApe2lmKGk+ZylyZXR1cm47aT5oJiYoaD1pKX1pZihpPXItcyx2fHwhKDA+
aSkpe2lmKGkvPXYsMD52KXtpZihpPmcpcmV0dXJuO2k+aCYmKGg9aSl9ZWxzZSBpZih2PjApe2lm
KGg+aSlyZXR1cm47Zz5pJiYoZz1pKX1yZXR1cm4gaD4wJiYodS5hPXt4OmMraCpwLHk6cytoKnZ9
KSwxPmcmJih1LmI9e3g6YytnKnAseTpzK2cqdn0pLHV9fX19fX1mdW5jdGlvbiBVZShuLHQsZSxy
KXtmdW5jdGlvbiB1KHIsdSl7cmV0dXJuIHVhKHJbMF0tbik8a2E/dT4wPzA6Mzp1YShyWzBdLWUp
PGthP3U+MD8yOjE6dWEoclsxXS10KTxrYT91PjA/MTowOnU+MD8zOjJ9ZnVuY3Rpb24gaShuLHQp
e3JldHVybiBvKG4ueCx0LngpfWZ1bmN0aW9uIG8obix0KXt2YXIgZT11KG4sMSkscj11KHQsMSk7
cmV0dXJuIGUhPT1yP2UtcjowPT09ZT90WzFdLW5bMV06MT09PWU/blswXS10WzBdOjI9PT1lP25b
MV0tdFsxXTp0WzBdLW5bMF19cmV0dXJuIGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMobil7Zm9yKHZh
ciB0PTAsZT1kLmxlbmd0aCxyPW5bMV0sdT0wO2U+dTsrK3UpZm9yKHZhciBpLG89MSxhPWRbdV0s
Yz1hLmxlbmd0aCxzPWFbMF07Yz5vOysrbylpPWFbb10sc1sxXTw9cj9pWzFdPnImJlcocyxpLG4p
PjAmJisrdDppWzFdPD1yJiZXKHMsaSxuKTwwJiYtLXQscz1pO3JldHVybiAwIT09dH1mdW5jdGlv
biBzKGksYSxjLHMpe3ZhciBsPTAsZj0wO2lmKG51bGw9PWl8fChsPXUoaSxjKSkhPT0oZj11KGEs
YykpfHxvKGksYSk8MF5jPjApe2RvIHMucG9pbnQoMD09PWx8fDM9PT1sP246ZSxsPjE/cjp0KTt3
aGlsZSgobD0obCtjKzQpJTQpIT09Zil9ZWxzZSBzLnBvaW50KGFbMF0sYVsxXSl9ZnVuY3Rpb24g
bCh1LGkpe3JldHVybiB1Pj1uJiZlPj11JiZpPj10JiZyPj1pfWZ1bmN0aW9uIGYobix0KXtsKG4s
dCkmJmEucG9pbnQobix0KX1mdW5jdGlvbiBoKCl7Ti5wb2ludD1wLGQmJmQucHVzaChtPVtdKSxT
PSEwLHc9ITEsXz1iPTAvMH1mdW5jdGlvbiBnKCl7diYmKHAoeSx4KSxNJiZ3JiZBLnJlam9pbigp
LHYucHVzaChBLmJ1ZmZlcigpKSksTi5wb2ludD1mLHcmJmEubGluZUVuZCgpfWZ1bmN0aW9uIHAo
bix0KXtuPU1hdGgubWF4KC1rYyxNYXRoLm1pbihrYyxuKSksdD1NYXRoLm1heCgta2MsTWF0aC5t
aW4oa2MsdCkpO3ZhciBlPWwobix0KTtpZihkJiZtLnB1c2goW24sdF0pLFMpeT1uLHg9dCxNPWUs
Uz0hMSxlJiYoYS5saW5lU3RhcnQoKSxhLnBvaW50KG4sdCkpO2Vsc2UgaWYoZSYmdylhLnBvaW50
KG4sdCk7ZWxzZXt2YXIgcj17YTp7eDpfLHk6Yn0sYjp7eDpuLHk6dH19O0Mocik/KHd8fChhLmxp
bmVTdGFydCgpLGEucG9pbnQoci5hLngsci5hLnkpKSxhLnBvaW50KHIuYi54LHIuYi55KSxlfHxh
LmxpbmVFbmQoKSxrPSExKTplJiYoYS5saW5lU3RhcnQoKSxhLnBvaW50KG4sdCksaz0hMSl9Xz1u
LGI9dCx3PWV9dmFyIHYsZCxtLHkseCxNLF8sYix3LFMsayxFPWEsQT1OZSgpLEM9UGUobix0LGUs
ciksTj17cG9pbnQ6ZixsaW5lU3RhcnQ6aCxsaW5lRW5kOmcscG9seWdvblN0YXJ0OmZ1bmN0aW9u
KCl7YT1BLHY9W10sZD1bXSxrPSEwfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7YT1FLHY9Wm8ubWVy
Z2Uodik7dmFyIHQ9YyhbbixyXSksZT1rJiZ0LHU9di5sZW5ndGg7KGV8fHUpJiYoYS5wb2x5Z29u
U3RhcnQoKSxlJiYoYS5saW5lU3RhcnQoKSxzKG51bGwsbnVsbCwxLGEpLGEubGluZUVuZCgpKSx1
JiZTZSh2LGksdCxzLGEpLGEucG9seWdvbkVuZCgpKSx2PWQ9bT1udWxsfX07cmV0dXJuIE59fWZ1
bmN0aW9uIGplKG4sdCl7ZnVuY3Rpb24gZShlLHIpe3JldHVybiBlPW4oZSxyKSx0KGVbMF0sZVsx
XSl9cmV0dXJuIG4uaW52ZXJ0JiZ0LmludmVydCYmKGUuaW52ZXJ0PWZ1bmN0aW9uKGUscil7cmV0
dXJuIGU9dC5pbnZlcnQoZSxyKSxlJiZuLmludmVydChlWzBdLGVbMV0pfSksZX1mdW5jdGlvbiBI
ZShuKXt2YXIgdD0wLGU9YmEvMyxyPXRyKG4pLHU9cih0LGUpO3JldHVybiB1LnBhcmFsbGVscz1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9yKHQ9blswXSpiYS8xODAsZT1uWzFd
KmJhLzE4MCk6WzE4MCoodC9iYSksMTgwKihlL2JhKV19LHV9ZnVuY3Rpb24gRmUobix0KXtmdW5j
dGlvbiBlKG4sdCl7dmFyIGU9TWF0aC5zcXJ0KGktMip1Kk1hdGguc2luKHQpKS91O3JldHVybltl
Kk1hdGguc2luKG4qPXUpLG8tZSpNYXRoLmNvcyhuKV19dmFyIHI9TWF0aC5zaW4obiksdT0ocitN
YXRoLnNpbih0KSkvMixpPTErciooMip1LXIpLG89TWF0aC5zcXJ0KGkpL3U7cmV0dXJuIGUuaW52
ZXJ0PWZ1bmN0aW9uKG4sdCl7dmFyIGU9by10O3JldHVybltNYXRoLmF0YW4yKG4sZSkvdSxHKChp
LShuKm4rZSplKSp1KnUpLygyKnUpKV19LGV9ZnVuY3Rpb24gT2UoKXtmdW5jdGlvbiBuKG4sdCl7
QWMrPXUqbi1yKnQscj1uLHU9dH12YXIgdCxlLHIsdTtUYy5wb2ludD1mdW5jdGlvbihpLG8pe1Rj
LnBvaW50PW4sdD1yPWksZT11PW99LFRjLmxpbmVFbmQ9ZnVuY3Rpb24oKXtuKHQsZSl9fWZ1bmN0
aW9uIFllKG4sdCl7Q2M+biYmKENjPW4pLG4+emMmJih6Yz1uKSxOYz50JiYoTmM9dCksdD5MYyYm
KExjPXQpfWZ1bmN0aW9uIEllKCl7ZnVuY3Rpb24gbihuLHQpe28ucHVzaCgiTSIsbiwiLCIsdCxp
KX1mdW5jdGlvbiB0KG4sdCl7by5wdXNoKCJNIixuLCIsIix0KSxhLnBvaW50PWV9ZnVuY3Rpb24g
ZShuLHQpe28ucHVzaCgiTCIsbiwiLCIsdCl9ZnVuY3Rpb24gcigpe2EucG9pbnQ9bn1mdW5jdGlv
biB1KCl7by5wdXNoKCJaIil9dmFyIGk9WmUoNC41KSxvPVtdLGE9e3BvaW50Om4sbGluZVN0YXJ0
OmZ1bmN0aW9uKCl7YS5wb2ludD10fSxsaW5lRW5kOnIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7
YS5saW5lRW5kPXV9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXthLmxpbmVFbmQ9cixhLnBvaW50PW59
LHBvaW50UmFkaXVzOmZ1bmN0aW9uKG4pe3JldHVybiBpPVplKG4pLGF9LHJlc3VsdDpmdW5jdGlv
bigpe2lmKG8ubGVuZ3RoKXt2YXIgbj1vLmpvaW4oIiIpO3JldHVybiBvPVtdLG59fX07cmV0dXJu
IGF9ZnVuY3Rpb24gWmUobil7cmV0dXJuIm0wLCIrbisiYSIrbisiLCIrbisiIDAgMSwxIDAsIist
MipuKyJhIituKyIsIituKyIgMCAxLDEgMCwiKzIqbisieiJ9ZnVuY3Rpb24gVmUobix0KXtwYys9
bix2Yys9dCwrK2RjfWZ1bmN0aW9uIFhlKCl7ZnVuY3Rpb24gbihuLHIpe3ZhciB1PW4tdCxpPXIt
ZSxvPU1hdGguc3FydCh1KnUraSppKTttYys9byoodCtuKS8yLHljKz1vKihlK3IpLzIseGMrPW8s
VmUodD1uLGU9cil9dmFyIHQsZTtSYy5wb2ludD1mdW5jdGlvbihyLHUpe1JjLnBvaW50PW4sVmUo
dD1yLGU9dSl9fWZ1bmN0aW9uICRlKCl7UmMucG9pbnQ9VmV9ZnVuY3Rpb24gQmUoKXtmdW5jdGlv
biBuKG4sdCl7dmFyIGU9bi1yLGk9dC11LG89TWF0aC5zcXJ0KGUqZStpKmkpO21jKz1vKihyK24p
LzIseWMrPW8qKHUrdCkvMix4Yys9byxvPXUqbi1yKnQsTWMrPW8qKHIrbiksX2MrPW8qKHUrdCks
YmMrPTMqbyxWZShyPW4sdT10KX12YXIgdCxlLHIsdTtSYy5wb2ludD1mdW5jdGlvbihpLG8pe1Jj
LnBvaW50PW4sVmUodD1yPWksZT11PW8pfSxSYy5saW5lRW5kPWZ1bmN0aW9uKCl7bih0LGUpfX1m
dW5jdGlvbiBXZShuKXtmdW5jdGlvbiB0KHQsZSl7bi5tb3ZlVG8odCxlKSxuLmFyYyh0LGUsbyww
LHdhKX1mdW5jdGlvbiBlKHQsZSl7bi5tb3ZlVG8odCxlKSxhLnBvaW50PXJ9ZnVuY3Rpb24gcih0
LGUpe24ubGluZVRvKHQsZSl9ZnVuY3Rpb24gdSgpe2EucG9pbnQ9dH1mdW5jdGlvbiBpKCl7bi5j
bG9zZVBhdGgoKX12YXIgbz00LjUsYT17cG9pbnQ6dCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXthLnBv
aW50PWV9LGxpbmVFbmQ6dSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXthLmxpbmVFbmQ9aX0scG9s
eWdvbkVuZDpmdW5jdGlvbigpe2EubGluZUVuZD11LGEucG9pbnQ9dH0scG9pbnRSYWRpdXM6ZnVu
Y3Rpb24obil7cmV0dXJuIG89bixhfSxyZXN1bHQ6dn07cmV0dXJuIGF9ZnVuY3Rpb24gSmUobil7
ZnVuY3Rpb24gdChuKXtyZXR1cm4oYT9yOmUpKG4pfWZ1bmN0aW9uIGUodCl7cmV0dXJuIFFlKHQs
ZnVuY3Rpb24oZSxyKXtlPW4oZSxyKSx0LnBvaW50KGVbMF0sZVsxXSl9KX1mdW5jdGlvbiByKHQp
e2Z1bmN0aW9uIGUoZSxyKXtlPW4oZSxyKSx0LnBvaW50KGVbMF0sZVsxXSl9ZnVuY3Rpb24gcigp
e3g9MC8wLFMucG9pbnQ9aSx0LmxpbmVTdGFydCgpfWZ1bmN0aW9uIGkoZSxyKXt2YXIgaT1sZShb
ZSxyXSksbz1uKGUscik7dSh4LE0seSxfLGIsdyx4PW9bMF0sTT1vWzFdLHk9ZSxfPWlbMF0sYj1p
WzFdLHc9aVsyXSxhLHQpLHQucG9pbnQoeCxNKX1mdW5jdGlvbiBvKCl7Uy5wb2ludD1lLHQubGlu
ZUVuZCgpfWZ1bmN0aW9uIGMoKXtyKCksUy5wb2ludD1zLFMubGluZUVuZD1sfWZ1bmN0aW9uIHMo
bix0KXtpKGY9bixoPXQpLGc9eCxwPU0sdj1fLGQ9YixtPXcsUy5wb2ludD1pfWZ1bmN0aW9uIGwo
KXt1KHgsTSx5LF8sYix3LGcscCxmLHYsZCxtLGEsdCksUy5saW5lRW5kPW8sbygpfXZhciBmLGgs
ZyxwLHYsZCxtLHkseCxNLF8sYix3LFM9e3BvaW50OmUsbGluZVN0YXJ0OnIsbGluZUVuZDpvLHBv
bHlnb25TdGFydDpmdW5jdGlvbigpe3QucG9seWdvblN0YXJ0KCksUy5saW5lU3RhcnQ9Y30scG9s
eWdvbkVuZDpmdW5jdGlvbigpe3QucG9seWdvbkVuZCgpLFMubGluZVN0YXJ0PXJ9fTtyZXR1cm4g
U31mdW5jdGlvbiB1KHQsZSxyLGEsYyxzLGwsZixoLGcscCx2LGQsbSl7dmFyIHk9bC10LHg9Zi1l
LE09eSp5K3gqeDtpZihNPjQqaSYmZC0tKXt2YXIgXz1hK2csYj1jK3Asdz1zK3YsUz1NYXRoLnNx
cnQoXypfK2IqYit3KncpLGs9TWF0aC5hc2luKHcvPVMpLEU9dWEodWEodyktMSk8a2F8fHVhKHIt
aCk8a2E/KHIraCkvMjpNYXRoLmF0YW4yKGIsXyksQT1uKEUsayksQz1BWzBdLE49QVsxXSx6PUMt
dCxMPU4tZSxUPXgqei15Kkw7KFQqVC9NPml8fHVhKCh5KnoreCpMKS9NLS41KT4uM3x8bz5hKmcr
YypwK3MqdikmJih1KHQsZSxyLGEsYyxzLEMsTixFLF8vPVMsYi89Uyx3LGQsbSksbS5wb2ludChD
LE4pLHUoQyxOLEUsXyxiLHcsbCxmLGgsZyxwLHYsZCxtKSl9fXZhciBpPS41LG89TWF0aC5jb3Mo
MzAqQWEpLGE9MTY7Ci1yZXR1cm4gdC5wcmVjaXNpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGE9KGk9bipuKT4wJiYxNix0KTpNYXRoLnNxcnQoaSl9LHR9ZnVuY3Rpb24g
R2Uobil7dmFyIHQ9SmUoZnVuY3Rpb24odCxlKXtyZXR1cm4gbihbdCpDYSxlKkNhXSl9KTtyZXR1
cm4gZnVuY3Rpb24obil7cmV0dXJuIGVyKHQobikpfX1mdW5jdGlvbiBLZShuKXt0aGlzLnN0cmVh
bT1ufWZ1bmN0aW9uIFFlKG4sdCl7cmV0dXJue3BvaW50OnQsc3BoZXJlOmZ1bmN0aW9uKCl7bi5z
cGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7bi5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5j
dGlvbigpe24ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtuLnBvbHlnb25TdGFy
dCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7bi5wb2x5Z29uRW5kKCl9fX1mdW5jdGlvbiBucihu
KXtyZXR1cm4gdHIoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKCl9ZnVuY3Rpb24gdHIobil7ZnVuY3Rp
b24gdChuKXtyZXR1cm4gbj1hKG5bMF0qQWEsblsxXSpBYSksW25bMF0qaCtjLHMtblsxXSpoXX1m
dW5jdGlvbiBlKG4pe3JldHVybiBuPWEuaW52ZXJ0KChuWzBdLWMpL2gsKHMtblsxXSkvaCksbiYm
W25bMF0qQ2EsblsxXSpDYV19ZnVuY3Rpb24gcigpe2E9amUobz1pcihtLHkseCksaSk7dmFyIG49
aSh2LGQpO3JldHVybiBjPWctblswXSpoLHM9cCtuWzFdKmgsdSgpfWZ1bmN0aW9uIHUoKXtyZXR1
cm4gbCYmKGwudmFsaWQ9ITEsbD1udWxsKSx0fXZhciBpLG8sYSxjLHMsbCxmPUplKGZ1bmN0aW9u
KG4sdCl7cmV0dXJuIG49aShuLHQpLFtuWzBdKmgrYyxzLW5bMV0qaF19KSxoPTE1MCxnPTQ4MCxw
PTI1MCx2PTAsZD0wLG09MCx5PTAseD0wLE09U2MsXz13dCxiPW51bGwsdz1udWxsO3JldHVybiB0
LnN0cmVhbT1mdW5jdGlvbihuKXtyZXR1cm4gbCYmKGwudmFsaWQ9ITEpLGw9ZXIoTShvLGYoXyhu
KSkpKSxsLnZhbGlkPSEwLGx9LHQuY2xpcEFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhNPW51bGw9PW4/KGI9bixTYyk6RGUoKGI9K24pKkFhKSx1KCkpOmJ9LHQuY2xp
cEV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz1uLF89bj9VZShu
WzBdWzBdLG5bMF1bMV0sblsxXVswXSxuWzFdWzFdKTp3dCx1KCkpOnd9LHQuc2NhbGU9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K24scigpKTpofSx0LnRyYW5zbGF0ZT1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0rblswXSxwPStuWzFdLHIoKSk6
W2cscF19LHQuY2VudGVyPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PW5b
MF0lMzYwKkFhLGQ9blsxXSUzNjAqQWEscigpKTpbdipDYSxkKkNhXX0sdC5yb3RhdGU9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09blswXSUzNjAqQWEseT1uWzFdJTM2MCpB
YSx4PW4ubGVuZ3RoPjI/blsyXSUzNjAqQWE6MCxyKCkpOlttKkNhLHkqQ2EseCpDYV19LFpvLnJl
YmluZCh0LGYsInByZWNpc2lvbiIpLGZ1bmN0aW9uKCl7cmV0dXJuIGk9bi5hcHBseSh0aGlzLGFy
Z3VtZW50cyksdC5pbnZlcnQ9aS5pbnZlcnQmJmUscigpfX1mdW5jdGlvbiBlcihuKXtyZXR1cm4g
UWUobixmdW5jdGlvbih0LGUpe24ucG9pbnQodCpBYSxlKkFhKX0pfWZ1bmN0aW9uIHJyKG4sdCl7
cmV0dXJuW24sdF19ZnVuY3Rpb24gdXIobix0KXtyZXR1cm5bbj5iYT9uLXdhOi1iYT5uP24rd2E6
bix0XX1mdW5jdGlvbiBpcihuLHQsZSl7cmV0dXJuIG4/dHx8ZT9qZShhcihuKSxjcih0LGUpKTph
cihuKTp0fHxlP2NyKHQsZSk6dXJ9ZnVuY3Rpb24gb3Iobil7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7
cmV0dXJuIHQrPW4sW3Q+YmE/dC13YTotYmE+dD90K3dhOnQsZV19fWZ1bmN0aW9uIGFyKG4pe3Zh
ciB0PW9yKG4pO3JldHVybiB0LmludmVydD1vcigtbiksdH1mdW5jdGlvbiBjcihuLHQpe2Z1bmN0
aW9uIGUobix0KXt2YXIgZT1NYXRoLmNvcyh0KSxhPU1hdGguY29zKG4pKmUsYz1NYXRoLnNpbihu
KSplLHM9TWF0aC5zaW4odCksbD1zKnIrYSp1O3JldHVybltNYXRoLmF0YW4yKGMqaS1sKm8sYSpy
LXMqdSksRyhsKmkrYypvKV19dmFyIHI9TWF0aC5jb3MobiksdT1NYXRoLnNpbihuKSxpPU1hdGgu
Y29zKHQpLG89TWF0aC5zaW4odCk7cmV0dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7dmFyIGU9
TWF0aC5jb3ModCksYT1NYXRoLmNvcyhuKSplLGM9TWF0aC5zaW4obikqZSxzPU1hdGguc2luKHQp
LGw9cyppLWMqbztyZXR1cm5bTWF0aC5hdGFuMihjKmkrcypvLGEqcitsKnUpLEcobCpyLWEqdSld
fSxlfWZ1bmN0aW9uIHNyKG4sdCl7dmFyIGU9TWF0aC5jb3Mobikscj1NYXRoLnNpbihuKTtyZXR1
cm4gZnVuY3Rpb24odSxpLG8sYSl7dmFyIGM9byp0O251bGwhPXU/KHU9bHIoZSx1KSxpPWxyKGUs
aSksKG8+MD9pPnU6dT5pKSYmKHUrPW8qd2EpKToodT1uK28qd2EsaT1uLS41KmMpO2Zvcih2YXIg
cyxsPXU7bz4wP2w+aTppPmw7bC09YylhLnBvaW50KChzPWRlKFtlLC1yKk1hdGguY29zKGwpLC1y
Kk1hdGguc2luKGwpXSkpWzBdLHNbMV0pfX1mdW5jdGlvbiBscihuLHQpe3ZhciBlPWxlKHQpO2Vb
MF0tPW4sdmUoZSk7dmFyIHI9SigtZVsxXSk7cmV0dXJuKCgtZVsyXTwwPy1yOnIpKzIqTWF0aC5Q
SS1rYSklKDIqTWF0aC5QSSl9ZnVuY3Rpb24gZnIobix0LGUpe3ZhciByPVpvLnJhbmdlKG4sdC1r
YSxlKS5jb25jYXQodCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiByLm1hcChmdW5jdGlvbih0
KXtyZXR1cm5bbix0XX0pfX1mdW5jdGlvbiBocihuLHQsZSl7dmFyIHI9Wm8ucmFuZ2Uobix0LWth
LGUpLmNvbmNhdCh0KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHIubWFwKGZ1bmN0aW9uKHQp
e3JldHVyblt0LG5dfSl9fWZ1bmN0aW9uIGdyKG4pe3JldHVybiBuLnNvdXJjZX1mdW5jdGlvbiBw
cihuKXtyZXR1cm4gbi50YXJnZXR9ZnVuY3Rpb24gdnIobix0LGUscil7dmFyIHU9TWF0aC5jb3Mo
dCksaT1NYXRoLnNpbih0KSxvPU1hdGguY29zKHIpLGE9TWF0aC5zaW4ociksYz11Kk1hdGguY29z
KG4pLHM9dSpNYXRoLnNpbihuKSxsPW8qTWF0aC5jb3MoZSksZj1vKk1hdGguc2luKGUpLGg9MipN
YXRoLmFzaW4oTWF0aC5zcXJ0KHR0KHItdCkrdSpvKnR0KGUtbikpKSxnPTEvTWF0aC5zaW4oaCks
cD1oP2Z1bmN0aW9uKG4pe3ZhciB0PU1hdGguc2luKG4qPWgpKmcsZT1NYXRoLnNpbihoLW4pKmcs
cj1lKmMrdCpsLHU9ZSpzK3QqZixvPWUqaSt0KmE7cmV0dXJuW01hdGguYXRhbjIodSxyKSpDYSxN
YXRoLmF0YW4yKG8sTWF0aC5zcXJ0KHIqcit1KnUpKSpDYV19OmZ1bmN0aW9uKCl7cmV0dXJuW24q
Q2EsdCpDYV19O3JldHVybiBwLmRpc3RhbmNlPWgscH1mdW5jdGlvbiBkcigpe2Z1bmN0aW9uIG4o
bix1KXt2YXIgaT1NYXRoLnNpbih1Kj1BYSksbz1NYXRoLmNvcyh1KSxhPXVhKChuKj1BYSktdCks
Yz1NYXRoLmNvcyhhKTtEYys9TWF0aC5hdGFuMihNYXRoLnNxcnQoKGE9bypNYXRoLnNpbihhKSkq
YSsoYT1yKmktZSpvKmMpKmEpLGUqaStyKm8qYyksdD1uLGU9aSxyPW99dmFyIHQsZSxyO1BjLnBv
aW50PWZ1bmN0aW9uKHUsaSl7dD11KkFhLGU9TWF0aC5zaW4oaSo9QWEpLHI9TWF0aC5jb3MoaSks
UGMucG9pbnQ9bn0sUGMubGluZUVuZD1mdW5jdGlvbigpe1BjLnBvaW50PVBjLmxpbmVFbmQ9dn19
ZnVuY3Rpb24gbXIobix0KXtmdW5jdGlvbiBlKHQsZSl7dmFyIHI9TWF0aC5jb3ModCksdT1NYXRo
LmNvcyhlKSxpPW4ocip1KTtyZXR1cm5baSp1Kk1hdGguc2luKHQpLGkqTWF0aC5zaW4oZSldfXJl
dHVybiBlLmludmVydD1mdW5jdGlvbihuLGUpe3ZhciByPU1hdGguc3FydChuKm4rZSplKSx1PXQo
ciksaT1NYXRoLnNpbih1KSxvPU1hdGguY29zKHUpO3JldHVybltNYXRoLmF0YW4yKG4qaSxyKm8p
LE1hdGguYXNpbihyJiZlKmkvcildfSxlfWZ1bmN0aW9uIHlyKG4sdCl7ZnVuY3Rpb24gZShuLHQp
e28+MD8tU2Era2E+dCYmKHQ9LVNhK2thKTp0PlNhLWthJiYodD1TYS1rYSk7dmFyIGU9by9NYXRo
LnBvdyh1KHQpLGkpO3JldHVybltlKk1hdGguc2luKGkqbiksby1lKk1hdGguY29zKGkqbildfXZh
ciByPU1hdGguY29zKG4pLHU9ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgudGFuKGJhLzQrbi8yKX0s
aT1uPT09dD9NYXRoLnNpbihuKTpNYXRoLmxvZyhyL01hdGguY29zKHQpKS9NYXRoLmxvZyh1KHQp
L3UobikpLG89cipNYXRoLnBvdyh1KG4pLGkpL2k7cmV0dXJuIGk/KGUuaW52ZXJ0PWZ1bmN0aW9u
KG4sdCl7dmFyIGU9by10LHI9QihpKSpNYXRoLnNxcnQobipuK2UqZSk7cmV0dXJuW01hdGguYXRh
bjIobixlKS9pLDIqTWF0aC5hdGFuKE1hdGgucG93KG8vciwxL2kpKS1TYV19LGUpOk1yfWZ1bmN0
aW9uIHhyKG4sdCl7ZnVuY3Rpb24gZShuLHQpe3ZhciBlPWktdDtyZXR1cm5bZSpNYXRoLnNpbih1
Km4pLGktZSpNYXRoLmNvcyh1Km4pXX12YXIgcj1NYXRoLmNvcyhuKSx1PW49PT10P01hdGguc2lu
KG4pOihyLU1hdGguY29zKHQpKS8odC1uKSxpPXIvdStuO3JldHVybiB1YSh1KTxrYT9ycjooZS5p
bnZlcnQ9ZnVuY3Rpb24obix0KXt2YXIgZT1pLXQ7cmV0dXJuW01hdGguYXRhbjIobixlKS91LGkt
Qih1KSpNYXRoLnNxcnQobipuK2UqZSldfSxlKX1mdW5jdGlvbiBNcihuLHQpe3JldHVybltuLE1h
dGgubG9nKE1hdGgudGFuKGJhLzQrdC8yKSldfWZ1bmN0aW9uIF9yKG4pe3ZhciB0LGU9bnIobiks
cj1lLnNjYWxlLHU9ZS50cmFuc2xhdGUsaT1lLmNsaXBFeHRlbnQ7cmV0dXJuIGUuc2NhbGU9ZnVu
Y3Rpb24oKXt2YXIgbj1yLmFwcGx5KGUsYXJndW1lbnRzKTtyZXR1cm4gbj09PWU/dD9lLmNsaXBF
eHRlbnQobnVsbCk6ZTpufSxlLnRyYW5zbGF0ZT1mdW5jdGlvbigpe3ZhciBuPXUuYXBwbHkoZSxh
cmd1bWVudHMpO3JldHVybiBuPT09ZT90P2UuY2xpcEV4dGVudChudWxsKTplOm59LGUuY2xpcEV4
dGVudD1mdW5jdGlvbihuKXt2YXIgbz1pLmFwcGx5KGUsYXJndW1lbnRzKTtpZihvPT09ZSl7aWYo
dD1udWxsPT1uKXt2YXIgYT1iYSpyKCksYz11KCk7aShbW2NbMF0tYSxjWzFdLWFdLFtjWzBdK2Es
Y1sxXSthXV0pfX1lbHNlIHQmJihvPW51bGwpO3JldHVybiBvfSxlLmNsaXBFeHRlbnQobnVsbCl9
ZnVuY3Rpb24gYnIobix0KXtyZXR1cm5bTWF0aC5sb2coTWF0aC50YW4oYmEvNCt0LzIpKSwtbl19
ZnVuY3Rpb24gd3Iobil7cmV0dXJuIG5bMF19ZnVuY3Rpb24gU3Iobil7cmV0dXJuIG5bMV19ZnVu
Y3Rpb24ga3Iobil7Zm9yKHZhciB0PW4ubGVuZ3RoLGU9WzAsMV0scj0yLHU9Mjt0PnU7dSsrKXtm
b3IoO3I+MSYmVyhuW2Vbci0yXV0sbltlW3ItMV1dLG5bdV0pPD0wOyktLXI7ZVtyKytdPXV9cmV0
dXJuIGUuc2xpY2UoMCxyKX1mdW5jdGlvbiBFcihuLHQpe3JldHVybiBuWzBdLXRbMF18fG5bMV0t
dFsxXX1mdW5jdGlvbiBBcihuLHQsZSl7cmV0dXJuKGVbMF0tdFswXSkqKG5bMV0tdFsxXSk8KGVb
MV0tdFsxXSkqKG5bMF0tdFswXSl9ZnVuY3Rpb24gQ3Iobix0LGUscil7dmFyIHU9blswXSxpPWVb
MF0sbz10WzBdLXUsYT1yWzBdLWksYz1uWzFdLHM9ZVsxXSxsPXRbMV0tYyxmPXJbMV0tcyxoPShh
KihjLXMpLWYqKHUtaSkpLyhmKm8tYSpsKTtyZXR1cm5bdStoKm8sYytoKmxdfWZ1bmN0aW9uIE5y
KG4pe3ZhciB0PW5bMF0sZT1uW24ubGVuZ3RoLTFdO3JldHVybiEodFswXS1lWzBdfHx0WzFdLWVb
MV0pfWZ1bmN0aW9uIHpyKCl7R3IodGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNs
ZT1udWxsfWZ1bmN0aW9uIExyKG4pe3ZhciB0PUJjLnBvcCgpfHxuZXcgenI7cmV0dXJuIHQuc2l0
ZT1uLHR9ZnVuY3Rpb24gVHIobil7WXIobiksVmMucmVtb3ZlKG4pLEJjLnB1c2gobiksR3Iobil9
ZnVuY3Rpb24gcXIobil7dmFyIHQ9bi5jaXJjbGUsZT10Lngscj10LmN5LHU9e3g6ZSx5OnJ9LGk9
bi5QLG89bi5OLGE9W25dO1RyKG4pO2Zvcih2YXIgYz1pO2MuY2lyY2xlJiZ1YShlLWMuY2lyY2xl
LngpPGthJiZ1YShyLWMuY2lyY2xlLmN5KTxrYTspaT1jLlAsYS51bnNoaWZ0KGMpLFRyKGMpLGM9
aTthLnVuc2hpZnQoYyksWXIoYyk7Zm9yKHZhciBzPW87cy5jaXJjbGUmJnVhKGUtcy5jaXJjbGUu
eCk8a2EmJnVhKHItcy5jaXJjbGUuY3kpPGthOylvPXMuTixhLnB1c2gocyksVHIocykscz1vO2Eu
cHVzaChzKSxZcihzKTt2YXIgbCxmPWEubGVuZ3RoO2ZvcihsPTE7Zj5sOysrbClzPWFbbF0sYz1h
W2wtMV0sQnIocy5lZGdlLGMuc2l0ZSxzLnNpdGUsdSk7Yz1hWzBdLHM9YVtmLTFdLHMuZWRnZT1Y
cihjLnNpdGUscy5zaXRlLG51bGwsdSksT3IoYyksT3Iocyl9ZnVuY3Rpb24gUnIobil7Zm9yKHZh
ciB0LGUscix1LGk9bi54LG89bi55LGE9VmMuXzthOylpZihyPURyKGEsbyktaSxyPmthKWE9YS5M
O2Vsc2V7aWYodT1pLVByKGEsbyksISh1PmthKSl7cj4ta2E/KHQ9YS5QLGU9YSk6dT4ta2E/KHQ9
YSxlPWEuTik6dD1lPWE7YnJlYWt9aWYoIWEuUil7dD1hO2JyZWFrfWE9YS5SfXZhciBjPUxyKG4p
O2lmKFZjLmluc2VydCh0LGMpLHR8fGUpe2lmKHQ9PT1lKXJldHVybiBZcih0KSxlPUxyKHQuc2l0
ZSksVmMuaW5zZXJ0KGMsZSksYy5lZGdlPWUuZWRnZT1Ycih0LnNpdGUsYy5zaXRlKSxPcih0KSxP
cihlKSx2b2lkIDA7aWYoIWUpcmV0dXJuIGMuZWRnZT1Ycih0LnNpdGUsYy5zaXRlKSx2b2lkIDA7
WXIodCksWXIoZSk7dmFyIHM9dC5zaXRlLGw9cy54LGY9cy55LGg9bi54LWwsZz1uLnktZixwPWUu
c2l0ZSx2PXAueC1sLGQ9cC55LWYsbT0yKihoKmQtZyp2KSx5PWgqaCtnKmcseD12KnYrZCpkLE09
e3g6KGQqeS1nKngpL20rbCx5OihoKngtdip5KS9tK2Z9O0JyKGUuZWRnZSxzLHAsTSksYy5lZGdl
PVhyKHMsbixudWxsLE0pLGUuZWRnZT1YcihuLHAsbnVsbCxNKSxPcih0KSxPcihlKX19ZnVuY3Rp
b24gRHIobix0KXt2YXIgZT1uLnNpdGUscj1lLngsdT1lLnksaT11LXQ7aWYoIWkpcmV0dXJuIHI7
dmFyIG89bi5QO2lmKCFvKXJldHVybi0xLzA7ZT1vLnNpdGU7dmFyIGE9ZS54LGM9ZS55LHM9Yy10
O2lmKCFzKXJldHVybiBhO3ZhciBsPWEtcixmPTEvaS0xL3MsaD1sL3M7cmV0dXJuIGY/KC1oK01h
dGguc3FydChoKmgtMipmKihsKmwvKC0yKnMpLWMrcy8yK3UtaS8yKSkpL2YrcjoocithKS8yfWZ1
bmN0aW9uIFByKG4sdCl7dmFyIGU9bi5OO2lmKGUpcmV0dXJuIERyKGUsdCk7dmFyIHI9bi5zaXRl
O3JldHVybiByLnk9PT10P3IueDoxLzB9ZnVuY3Rpb24gVXIobil7dGhpcy5zaXRlPW4sdGhpcy5l
ZGdlcz1bXX1mdW5jdGlvbiBqcihuKXtmb3IodmFyIHQsZSxyLHUsaSxvLGEsYyxzLGwsZj1uWzBd
WzBdLGg9blsxXVswXSxnPW5bMF1bMV0scD1uWzFdWzFdLHY9WmMsZD12Lmxlbmd0aDtkLS07KWlm
KGk9dltkXSxpJiZpLnByZXBhcmUoKSlmb3IoYT1pLmVkZ2VzLGM9YS5sZW5ndGgsbz0wO2M+bzsp
bD1hW29dLmVuZCgpLHI9bC54LHU9bC55LHM9YVsrK28lY10uc3RhcnQoKSx0PXMueCxlPXMueSwo
dWEoci10KT5rYXx8dWEodS1lKT5rYSkmJihhLnNwbGljZShvLDAsbmV3IFdyKCRyKGkuc2l0ZSxs
LHVhKHItZik8a2EmJnAtdT5rYT97eDpmLHk6dWEodC1mKTxrYT9lOnB9OnVhKHUtcCk8a2EmJmgt
cj5rYT97eDp1YShlLXApPGthP3Q6aCx5OnB9OnVhKHItaCk8a2EmJnUtZz5rYT97eDpoLHk6dWEo
dC1oKTxrYT9lOmd9OnVhKHUtZyk8a2EmJnItZj5rYT97eDp1YShlLWcpPGthP3Q6Zix5Omd9Om51
bGwpLGkuc2l0ZSxudWxsKSksKytjKX1mdW5jdGlvbiBIcihuLHQpe3JldHVybiB0LmFuZ2xlLW4u
YW5nbGV9ZnVuY3Rpb24gRnIoKXtHcih0aGlzKSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMu
c2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24gT3Iobil7dmFyIHQ9bi5QLGU9bi5OO2lmKHQmJmUp
e3ZhciByPXQuc2l0ZSx1PW4uc2l0ZSxpPWUuc2l0ZTtpZihyIT09aSl7dmFyIG89dS54LGE9dS55
LGM9ci54LW8scz1yLnktYSxsPWkueC1vLGY9aS55LWEsaD0yKihjKmYtcypsKTtpZighKGg+PS1F
YSkpe3ZhciBnPWMqYytzKnMscD1sKmwrZipmLHY9KGYqZy1zKnApL2gsZD0oYypwLWwqZykvaCxm
PWQrYSxtPVdjLnBvcCgpfHxuZXcgRnI7bS5hcmM9bixtLnNpdGU9dSxtLng9ditvLG0ueT1mK01h
dGguc3FydCh2KnYrZCpkKSxtLmN5PWYsbi5jaXJjbGU9bTtmb3IodmFyIHk9bnVsbCx4PSRjLl87
eDspaWYobS55PHgueXx8bS55PT09eC55JiZtLng8PXgueCl7aWYoIXguTCl7eT14LlA7YnJlYWt9
eD14Lkx9ZWxzZXtpZigheC5SKXt5PXg7YnJlYWt9eD14LlJ9JGMuaW5zZXJ0KHksbSkseXx8KFhj
PW0pfX19fWZ1bmN0aW9uIFlyKG4pe3ZhciB0PW4uY2lyY2xlO3QmJih0LlB8fChYYz10Lk4pLCRj
LnJlbW92ZSh0KSxXYy5wdXNoKHQpLEdyKHQpLG4uY2lyY2xlPW51bGwpfWZ1bmN0aW9uIElyKG4p
e2Zvcih2YXIgdCxlPUljLHI9UGUoblswXVswXSxuWzBdWzFdLG5bMV1bMF0sblsxXVsxXSksdT1l
Lmxlbmd0aDt1LS07KXQ9ZVt1XSwoIVpyKHQsbil8fCFyKHQpfHx1YSh0LmEueC10LmIueCk8a2Em
JnVhKHQuYS55LXQuYi55KTxrYSkmJih0LmE9dC5iPW51bGwsZS5zcGxpY2UodSwxKSl9ZnVuY3Rp
b24gWnIobix0KXt2YXIgZT1uLmI7aWYoZSlyZXR1cm4hMDt2YXIgcix1LGk9bi5hLG89dFswXVsw
XSxhPXRbMV1bMF0sYz10WzBdWzFdLHM9dFsxXVsxXSxsPW4ubCxmPW4ucixoPWwueCxnPWwueSxw
PWYueCx2PWYueSxkPShoK3ApLzIsbT0oZyt2KS8yO2lmKHY9PT1nKXtpZihvPmR8fGQ+PWEpcmV0
dXJuO2lmKGg+cCl7aWYoaSl7aWYoaS55Pj1zKXJldHVybn1lbHNlIGk9e3g6ZCx5OmN9O2U9e3g6
ZCx5OnN9fWVsc2V7aWYoaSl7aWYoaS55PGMpcmV0dXJufWVsc2UgaT17eDpkLHk6c307ZT17eDpk
LHk6Y319fWVsc2UgaWYocj0oaC1wKS8odi1nKSx1PW0tcipkLC0xPnJ8fHI+MSlpZihoPnApe2lm
KGkpe2lmKGkueT49cylyZXR1cm59ZWxzZSBpPXt4OihjLXUpL3IseTpjfTtlPXt4OihzLXUpL3Is
eTpzfX1lbHNle2lmKGkpe2lmKGkueTxjKXJldHVybn1lbHNlIGk9e3g6KHMtdSkvcix5OnN9O2U9
e3g6KGMtdSkvcix5OmN9fWVsc2UgaWYodj5nKXtpZihpKXtpZihpLng+PWEpcmV0dXJufWVsc2Ug
aT17eDpvLHk6cipvK3V9O2U9e3g6YSx5OnIqYSt1fX1lbHNle2lmKGkpe2lmKGkueDxvKXJldHVy
bn1lbHNlIGk9e3g6YSx5OnIqYSt1fTtlPXt4Om8seTpyKm8rdX19cmV0dXJuIG4uYT1pLG4uYj1l
LCEwfWZ1bmN0aW9uIFZyKG4sdCl7dGhpcy5sPW4sdGhpcy5yPXQsdGhpcy5hPXRoaXMuYj1udWxs
fWZ1bmN0aW9uIFhyKG4sdCxlLHIpe3ZhciB1PW5ldyBWcihuLHQpO3JldHVybiBJYy5wdXNoKHUp
LGUmJkJyKHUsbix0LGUpLHImJkJyKHUsdCxuLHIpLFpjW24uaV0uZWRnZXMucHVzaChuZXcgV3Io
dSxuLHQpKSxaY1t0LmldLmVkZ2VzLnB1c2gobmV3IFdyKHUsdCxuKSksdX1mdW5jdGlvbiAkcihu
LHQsZSl7dmFyIHI9bmV3IFZyKG4sbnVsbCk7cmV0dXJuIHIuYT10LHIuYj1lLEljLnB1c2gociks
cn1mdW5jdGlvbiBCcihuLHQsZSxyKXtuLmF8fG4uYj9uLmw9PT1lP24uYj1yOm4uYT1yOihuLmE9
cixuLmw9dCxuLnI9ZSl9ZnVuY3Rpb24gV3Iobix0LGUpe3ZhciByPW4uYSx1PW4uYjt0aGlzLmVk
Z2U9bix0aGlzLnNpdGU9dCx0aGlzLmFuZ2xlPWU/TWF0aC5hdGFuMihlLnktdC55LGUueC10Lngp
Om4ubD09PXQ/TWF0aC5hdGFuMih1Lngtci54LHIueS11LnkpOk1hdGguYXRhbjIoci54LXUueCx1
Lnktci55KX1mdW5jdGlvbiBKcigpe3RoaXMuXz1udWxsfWZ1bmN0aW9uIEdyKG4pe24uVT1uLkM9
bi5MPW4uUj1uLlA9bi5OPW51bGx9ZnVuY3Rpb24gS3Iobix0KXt2YXIgZT10LHI9dC5SLHU9ZS5V
O3U/dS5MPT09ZT91Lkw9cjp1LlI9cjpuLl89cixyLlU9dSxlLlU9cixlLlI9ci5MLGUuUiYmKGUu
Ui5VPWUpLHIuTD1lfWZ1bmN0aW9uIFFyKG4sdCl7dmFyIGU9dCxyPXQuTCx1PWUuVTt1P3UuTD09
PWU/dS5MPXI6dS5SPXI6bi5fPXIsci5VPXUsZS5VPXIsZS5MPXIuUixlLkwmJihlLkwuVT1lKSxy
LlI9ZX1mdW5jdGlvbiBudShuKXtmb3IoO24uTDspbj1uLkw7cmV0dXJuIG59ZnVuY3Rpb24gdHUo
bix0KXt2YXIgZSxyLHUsaT1uLnNvcnQoZXUpLnBvcCgpO2ZvcihJYz1bXSxaYz1uZXcgQXJyYXko
bi5sZW5ndGgpLFZjPW5ldyBKciwkYz1uZXcgSnI7OylpZih1PVhjLGkmJighdXx8aS55PHUueXx8
aS55PT09dS55JiZpLng8dS54KSkoaS54IT09ZXx8aS55IT09cikmJihaY1tpLmldPW5ldyBVcihp
KSxScihpKSxlPWkueCxyPWkueSksaT1uLnBvcCgpO2Vsc2V7aWYoIXUpYnJlYWs7cXIodS5hcmMp
fXQmJihJcih0KSxqcih0KSk7dmFyIG89e2NlbGxzOlpjLGVkZ2VzOkljfTtyZXR1cm4gVmM9JGM9
SWM9WmM9bnVsbCxvfWZ1bmN0aW9uIGV1KG4sdCl7cmV0dXJuIHQueS1uLnl8fHQueC1uLnh9ZnVu
Y3Rpb24gcnUobix0LGUpe3JldHVybihuLngtZS54KSoodC55LW4ueSktKG4ueC10LngpKihlLnkt
bi55KX1mdW5jdGlvbiB1dShuKXtyZXR1cm4gbi54fWZ1bmN0aW9uIGl1KG4pe3JldHVybiBuLnl9
ZnVuY3Rpb24gb3UoKXtyZXR1cm57bGVhZjohMCxub2RlczpbXSxwb2ludDpudWxsLHg6bnVsbCx5
Om51bGx9fWZ1bmN0aW9uIGF1KG4sdCxlLHIsdSxpKXtpZighbih0LGUscix1LGkpKXt2YXIgbz0u
NSooZSt1KSxhPS41KihyK2kpLGM9dC5ub2RlcztjWzBdJiZhdShuLGNbMF0sZSxyLG8sYSksY1sx
XSYmYXUobixjWzFdLG8scix1LGEpLGNbMl0mJmF1KG4sY1syXSxlLGEsbyxpKSxjWzNdJiZhdShu
LGNbM10sbyxhLHUsaSl9fWZ1bmN0aW9uIGN1KG4sdCl7bj1aby5yZ2IobiksdD1aby5yZ2IodCk7
dmFyIGU9bi5yLHI9bi5nLHU9bi5iLGk9dC5yLWUsbz10LmctcixhPXQuYi11O3JldHVybiBmdW5j
dGlvbihuKXtyZXR1cm4iIyIrZHQoTWF0aC5yb3VuZChlK2kqbikpK2R0KE1hdGgucm91bmQocitv
Km4pKStkdChNYXRoLnJvdW5kKHUrYSpuKSl9fWZ1bmN0aW9uIHN1KG4sdCl7dmFyIGUscj17fSx1
PXt9O2ZvcihlIGluIG4pZSBpbiB0P3JbZV09aHUobltlXSx0W2VdKTp1W2VdPW5bZV07Zm9yKGUg
aW4gdCllIGluIG58fCh1W2VdPXRbZV0pO3JldHVybiBmdW5jdGlvbihuKXtmb3IoZSBpbiByKXVb
ZV09cltlXShuKTtyZXR1cm4gdX19ZnVuY3Rpb24gbHUobix0KXtyZXR1cm4gdC09bj0rbixmdW5j
dGlvbihlKXtyZXR1cm4gbit0KmV9fWZ1bmN0aW9uIGZ1KG4sdCl7dmFyIGUscix1LGk9R2MubGFz
dEluZGV4PUtjLmxhc3RJbmRleD0wLG89LTEsYT1bXSxjPVtdO2ZvcihuKz0iIix0Kz0iIjsoZT1H
Yy5leGVjKG4pKSYmKHI9S2MuZXhlYyh0KSk7KSh1PXIuaW5kZXgpPmkmJih1PXQuc3Vic3RyaW5n
KGksdSksYVtvXT9hW29dKz11OmFbKytvXT11KSwoZT1lWzBdKT09PShyPXJbMF0pP2Fbb10/YVtv
XSs9cjphWysrb109cjooYVsrK29dPW51bGwsYy5wdXNoKHtpOm8seDpsdShlLHIpfSkpLGk9S2Mu
bGFzdEluZGV4O3JldHVybiBpPHQubGVuZ3RoJiYodT10LnN1YnN0cmluZyhpKSxhW29dP2Fbb10r
PXU6YVsrK29dPXUpLGEubGVuZ3RoPDI/Y1swXT8odD1jWzBdLngsZnVuY3Rpb24obil7cmV0dXJu
IHQobikrIiJ9KTpmdW5jdGlvbigpe3JldHVybiB0fToodD1jLmxlbmd0aCxmdW5jdGlvbihuKXtm
b3IodmFyIGUscj0wO3Q+cjsrK3IpYVsoZT1jW3JdKS5pXT1lLngobik7cmV0dXJuIGEuam9pbigi
Iil9KX1mdW5jdGlvbiBodShuLHQpe2Zvcih2YXIgZSxyPVpvLmludGVycG9sYXRvcnMubGVuZ3Ro
Oy0tcj49MCYmIShlPVpvLmludGVycG9sYXRvcnNbcl0obix0KSk7KTtyZXR1cm4gZX1mdW5jdGlv
biBndShuLHQpe3ZhciBlLHI9W10sdT1bXSxpPW4ubGVuZ3RoLG89dC5sZW5ndGgsYT1NYXRoLm1p
bihuLmxlbmd0aCx0Lmxlbmd0aCk7Zm9yKGU9MDthPmU7KytlKXIucHVzaChodShuW2VdLHRbZV0p
KTtmb3IoO2k+ZTsrK2UpdVtlXT1uW2VdO2Zvcig7bz5lOysrZSl1W2VdPXRbZV07cmV0dXJuIGZ1
bmN0aW9uKG4pe2ZvcihlPTA7YT5lOysrZSl1W2VdPXJbZV0obik7cmV0dXJuIHV9fWZ1bmN0aW9u
IHB1KG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gMD49dD8wOnQ+PTE/MTpuKHQpfX1mdW5j
dGlvbiB2dShuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIDEtbigxLXQpfX1mdW5jdGlvbiBk
dShuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuLjUqKC41PnQ/bigyKnQpOjItbigyLTIqdCkp
fX1mdW5jdGlvbiBtdShuKXtyZXR1cm4gbipufWZ1bmN0aW9uIHl1KG4pe3JldHVybiBuKm4qbn1m
dW5jdGlvbiB4dShuKXtpZigwPj1uKXJldHVybiAwO2lmKG4+PTEpcmV0dXJuIDE7dmFyIHQ9bipu
LGU9dCpuO3JldHVybiA0KiguNT5uP2U6Myoobi10KStlLS43NSl9ZnVuY3Rpb24gTXUobil7cmV0
dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdyh0LG4pfX1mdW5jdGlvbiBfdShuKXtyZXR1
cm4gMS1NYXRoLmNvcyhuKlNhKX1mdW5jdGlvbiBidShuKXtyZXR1cm4gTWF0aC5wb3coMiwxMCoo
bi0xKSl9ZnVuY3Rpb24gd3Uobil7cmV0dXJuIDEtTWF0aC5zcXJ0KDEtbipuKX1mdW5jdGlvbiBT
dShuLHQpe3ZhciBlO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PS40NSksYXJndW1lbnRz
Lmxlbmd0aD9lPXQvd2EqTWF0aC5hc2luKDEvbik6KG49MSxlPXQvNCksZnVuY3Rpb24ocil7cmV0
dXJuIDErbipNYXRoLnBvdygyLC0xMCpyKSpNYXRoLnNpbigoci1lKSp3YS90KX19ZnVuY3Rpb24g
a3Uobil7cmV0dXJuIG58fChuPTEuNzAxNTgpLGZ1bmN0aW9uKHQpe3JldHVybiB0KnQqKChuKzEp
KnQtbil9fWZ1bmN0aW9uIEV1KG4pe3JldHVybiAxLzIuNzU+bj83LjU2MjUqbipuOjIvMi43NT5u
PzcuNTYyNSoobi09MS41LzIuNzUpKm4rLjc1OjIuNS8yLjc1Pm4/Ny41NjI1KihuLT0yLjI1LzIu
NzUpKm4rLjkzNzU6Ny41NjI1KihuLT0yLjYyNS8yLjc1KSpuKy45ODQzNzV9ZnVuY3Rpb24gQXUo
bix0KXtuPVpvLmhjbChuKSx0PVpvLmhjbCh0KTt2YXIgZT1uLmgscj1uLmMsdT1uLmwsaT10Lmgt
ZSxvPXQuYy1yLGE9dC5sLXU7cmV0dXJuIGlzTmFOKG8pJiYobz0wLHI9aXNOYU4ocik/dC5jOnIp
LGlzTmFOKGkpPyhpPTAsZT1pc05hTihlKT90Lmg6ZSk6aT4xODA/aS09MzYwOi0xODA+aSYmKGkr
PTM2MCksZnVuY3Rpb24obil7cmV0dXJuIG90KGUraSpuLHIrbypuLHUrYSpuKSsiIn19ZnVuY3Rp
b24gQ3Uobix0KXtuPVpvLmhzbChuKSx0PVpvLmhzbCh0KTt2YXIgZT1uLmgscj1uLnMsdT1uLmws
aT10LmgtZSxvPXQucy1yLGE9dC5sLXU7cmV0dXJuIGlzTmFOKG8pJiYobz0wLHI9aXNOYU4ocik/
dC5zOnIpLGlzTmFOKGkpPyhpPTAsZT1pc05hTihlKT90Lmg6ZSk6aT4xODA/aS09MzYwOi0xODA+
aSYmKGkrPTM2MCksZnVuY3Rpb24obil7cmV0dXJuIHV0KGUraSpuLHIrbypuLHUrYSpuKSsiIn19
ZnVuY3Rpb24gTnUobix0KXtuPVpvLmxhYihuKSx0PVpvLmxhYih0KTt2YXIgZT1uLmwscj1uLmEs
dT1uLmIsaT10LmwtZSxvPXQuYS1yLGE9dC5iLXU7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBj
dChlK2kqbixyK28qbix1K2EqbikrIiJ9fWZ1bmN0aW9uIHp1KG4sdCl7cmV0dXJuIHQtPW4sZnVu
Y3Rpb24oZSl7cmV0dXJuIE1hdGgucm91bmQobit0KmUpfX1mdW5jdGlvbiBMdShuKXt2YXIgdD1b
bi5hLG4uYl0sZT1bbi5jLG4uZF0scj1xdSh0KSx1PVR1KHQsZSksaT1xdShSdShlLHQsLXUpKXx8
MDt0WzBdKmVbMV08ZVswXSp0WzFdJiYodFswXSo9LTEsdFsxXSo9LTEscio9LTEsdSo9LTEpLHRo
aXMucm90YXRlPShyP01hdGguYXRhbjIodFsxXSx0WzBdKTpNYXRoLmF0YW4yKC1lWzBdLGVbMV0p
KSpDYSx0aGlzLnRyYW5zbGF0ZT1bbi5lLG4uZl0sdGhpcy5zY2FsZT1bcixpXSx0aGlzLnNrZXc9
aT9NYXRoLmF0YW4yKHUsaSkqQ2E6MH1mdW5jdGlvbiBUdShuLHQpe3JldHVybiBuWzBdKnRbMF0r
blsxXSp0WzFdfWZ1bmN0aW9uIHF1KG4pe3ZhciB0PU1hdGguc3FydChUdShuLG4pKTtyZXR1cm4g
dCYmKG5bMF0vPXQsblsxXS89dCksdH1mdW5jdGlvbiBSdShuLHQsZSl7cmV0dXJuIG5bMF0rPWUq
dFswXSxuWzFdKz1lKnRbMV0sbn1mdW5jdGlvbiBEdShuLHQpe3ZhciBlLHI9W10sdT1bXSxpPVpv
LnRyYW5zZm9ybShuKSxvPVpvLnRyYW5zZm9ybSh0KSxhPWkudHJhbnNsYXRlLGM9by50cmFuc2xh
dGUscz1pLnJvdGF0ZSxsPW8ucm90YXRlLGY9aS5za2V3LGg9by5za2V3LGc9aS5zY2FsZSxwPW8u
c2NhbGU7cmV0dXJuIGFbMF0hPWNbMF18fGFbMV0hPWNbMV0/KHIucHVzaCgidHJhbnNsYXRlKCIs
bnVsbCwiLCIsbnVsbCwiKSIpLHUucHVzaCh7aToxLHg6bHUoYVswXSxjWzBdKX0se2k6Myx4Omx1
KGFbMV0sY1sxXSl9KSk6Y1swXXx8Y1sxXT9yLnB1c2goInRyYW5zbGF0ZSgiK2MrIikiKTpyLnB1
c2goIiIpLHMhPWw/KHMtbD4xODA/bCs9MzYwOmwtcz4xODAmJihzKz0zNjApLHUucHVzaCh7aTpy
LnB1c2goci5wb3AoKSsicm90YXRlKCIsbnVsbCwiKSIpLTIseDpsdShzLGwpfSkpOmwmJnIucHVz
aChyLnBvcCgpKyJyb3RhdGUoIitsKyIpIiksZiE9aD91LnB1c2goe2k6ci5wdXNoKHIucG9wKCkr
InNrZXdYKCIsbnVsbCwiKSIpLTIseDpsdShmLGgpfSk6aCYmci5wdXNoKHIucG9wKCkrInNrZXdY
KCIraCsiKSIpLGdbMF0hPXBbMF18fGdbMV0hPXBbMV0/KGU9ci5wdXNoKHIucG9wKCkrInNjYWxl
KCIsbnVsbCwiLCIsbnVsbCwiKSIpLHUucHVzaCh7aTplLTQseDpsdShnWzBdLHBbMF0pfSx7aTpl
LTIseDpsdShnWzFdLHBbMV0pfSkpOigxIT1wWzBdfHwxIT1wWzFdKSYmci5wdXNoKHIucG9wKCkr
InNjYWxlKCIrcCsiKSIpLGU9dS5sZW5ndGgsZnVuY3Rpb24obil7Zm9yKHZhciB0LGk9LTE7Kytp
PGU7KXJbKHQ9dVtpXSkuaV09dC54KG4pO3JldHVybiByLmpvaW4oIiIpfX1mdW5jdGlvbiBQdShu
LHQpe3JldHVybiB0PXQtKG49K24pPzEvKHQtbik6MCxmdW5jdGlvbihlKXtyZXR1cm4oZS1uKSp0
fX1mdW5jdGlvbiBVdShuLHQpe3JldHVybiB0PXQtKG49K24pPzEvKHQtbik6MCxmdW5jdGlvbihl
KXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigxLChlLW4pKnQpKX19ZnVuY3Rpb24ganUobil7
Zm9yKHZhciB0PW4uc291cmNlLGU9bi50YXJnZXQscj1GdSh0LGUpLHU9W3RdO3QhPT1yOyl0PXQu
cGFyZW50LHUucHVzaCh0KTtmb3IodmFyIGk9dS5sZW5ndGg7ZSE9PXI7KXUuc3BsaWNlKGksMCxl
KSxlPWUucGFyZW50O3JldHVybiB1fWZ1bmN0aW9uIEh1KG4pe2Zvcih2YXIgdD1bXSxlPW4ucGFy
ZW50O251bGwhPWU7KXQucHVzaChuKSxuPWUsZT1lLnBhcmVudDtyZXR1cm4gdC5wdXNoKG4pLHR9
ZnVuY3Rpb24gRnUobix0KXtpZihuPT09dClyZXR1cm4gbjtmb3IodmFyIGU9SHUobikscj1IdSh0
KSx1PWUucG9wKCksaT1yLnBvcCgpLG89bnVsbDt1PT09aTspbz11LHU9ZS5wb3AoKSxpPXIucG9w
KCk7cmV0dXJuIG99ZnVuY3Rpb24gT3Uobil7bi5maXhlZHw9Mn1mdW5jdGlvbiBZdShuKXtuLmZp
eGVkJj0tN31mdW5jdGlvbiBJdShuKXtuLmZpeGVkfD00LG4ucHg9bi54LG4ucHk9bi55fWZ1bmN0
aW9uIFp1KG4pe24uZml4ZWQmPS01fWZ1bmN0aW9uIFZ1KG4sdCxlKXt2YXIgcj0wLHU9MDtpZihu
LmNoYXJnZT0wLCFuLmxlYWYpZm9yKHZhciBpLG89bi5ub2RlcyxhPW8ubGVuZ3RoLGM9LTE7Kytj
PGE7KWk9b1tjXSxudWxsIT1pJiYoVnUoaSx0LGUpLG4uY2hhcmdlKz1pLmNoYXJnZSxyKz1pLmNo
YXJnZSppLmN4LHUrPWkuY2hhcmdlKmkuY3kpO2lmKG4ucG9pbnQpe24ubGVhZnx8KG4ucG9pbnQu
eCs9TWF0aC5yYW5kb20oKS0uNSxuLnBvaW50LnkrPU1hdGgucmFuZG9tKCktLjUpO3ZhciBzPXQq
ZVtuLnBvaW50LmluZGV4XTtuLmNoYXJnZSs9bi5wb2ludENoYXJnZT1zLHIrPXMqbi5wb2ludC54
LHUrPXMqbi5wb2ludC55fW4uY3g9ci9uLmNoYXJnZSxuLmN5PXUvbi5jaGFyZ2V9ZnVuY3Rpb24g
WHUobix0KXtyZXR1cm4gWm8ucmViaW5kKG4sdCwic29ydCIsImNoaWxkcmVuIiwidmFsdWUiKSxu
Lm5vZGVzPW4sbi5saW5rcz1LdSxufWZ1bmN0aW9uICR1KG4sdCl7Zm9yKHZhciBlPVtuXTtudWxs
IT0obj1lLnBvcCgpKTspaWYodChuKSwodT1uLmNoaWxkcmVuKSYmKHI9dS5sZW5ndGgpKWZvcih2
YXIgcix1Oy0tcj49MDspZS5wdXNoKHVbcl0pfWZ1bmN0aW9uIEJ1KG4sdCl7Zm9yKHZhciBlPVtu
XSxyPVtdO251bGwhPShuPWUucG9wKCkpOylpZihyLnB1c2gobiksKGk9bi5jaGlsZHJlbikmJih1
PWkubGVuZ3RoKSlmb3IodmFyIHUsaSxvPS0xOysrbzx1OyllLnB1c2goaVtvXSk7Zm9yKDtudWxs
IT0obj1yLnBvcCgpKTspdChuKX1mdW5jdGlvbiBXdShuKXtyZXR1cm4gbi5jaGlsZHJlbn1mdW5j
dGlvbiBKdShuKXtyZXR1cm4gbi52YWx1ZX1mdW5jdGlvbiBHdShuLHQpe3JldHVybiB0LnZhbHVl
LW4udmFsdWV9ZnVuY3Rpb24gS3Uobil7cmV0dXJuIFpvLm1lcmdlKG4ubWFwKGZ1bmN0aW9uKG4p
e3JldHVybihuLmNoaWxkcmVufHxbXSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybntzb3VyY2U6bix0
YXJnZXQ6dH19KX0pKX1mdW5jdGlvbiBRdShuKXtyZXR1cm4gbi54fWZ1bmN0aW9uIG5pKG4pe3Jl
dHVybiBuLnl9ZnVuY3Rpb24gdGkobix0LGUpe24ueTA9dCxuLnk9ZX1mdW5jdGlvbiBlaShuKXty
ZXR1cm4gWm8ucmFuZ2Uobi5sZW5ndGgpfWZ1bmN0aW9uIHJpKG4pe2Zvcih2YXIgdD0tMSxlPW5b
MF0ubGVuZ3RoLHI9W107Kyt0PGU7KXJbdF09MDtyZXR1cm4gcn1mdW5jdGlvbiB1aShuKXtmb3Io
dmFyIHQsZT0xLHI9MCx1PW5bMF1bMV0saT1uLmxlbmd0aDtpPmU7KytlKSh0PW5bZV1bMV0pPnUm
JihyPWUsdT10KTtyZXR1cm4gcn1mdW5jdGlvbiBpaShuKXtyZXR1cm4gbi5yZWR1Y2Uob2ksMCl9
ZnVuY3Rpb24gb2kobix0KXtyZXR1cm4gbit0WzFdfWZ1bmN0aW9uIGFpKG4sdCl7cmV0dXJuIGNp
KG4sTWF0aC5jZWlsKE1hdGgubG9nKHQubGVuZ3RoKS9NYXRoLkxOMisxKSl9ZnVuY3Rpb24gY2ko
bix0KXtmb3IodmFyIGU9LTEscj0rblswXSx1PShuWzFdLXIpL3QsaT1bXTsrK2U8PXQ7KWlbZV09
dSplK3I7cmV0dXJuIGl9ZnVuY3Rpb24gc2kobil7cmV0dXJuW1pvLm1pbihuKSxaby5tYXgobild
fWZ1bmN0aW9uIGxpKG4sdCl7cmV0dXJuIG4udmFsdWUtdC52YWx1ZX1mdW5jdGlvbiBmaShuLHQp
e3ZhciBlPW4uX3BhY2tfbmV4dDtuLl9wYWNrX25leHQ9dCx0Ll9wYWNrX3ByZXY9bix0Ll9wYWNr
X25leHQ9ZSxlLl9wYWNrX3ByZXY9dH1mdW5jdGlvbiBoaShuLHQpe24uX3BhY2tfbmV4dD10LHQu
X3BhY2tfcHJldj1ufWZ1bmN0aW9uIGdpKG4sdCl7dmFyIGU9dC54LW4ueCxyPXQueS1uLnksdT1u
LnIrdC5yO3JldHVybi45OTkqdSp1PmUqZStyKnJ9ZnVuY3Rpb24gcGkobil7ZnVuY3Rpb24gdChu
KXtsPU1hdGgubWluKG4ueC1uLnIsbCksZj1NYXRoLm1heChuLngrbi5yLGYpLGg9TWF0aC5taW4o
bi55LW4ucixoKSxnPU1hdGgubWF4KG4ueStuLnIsZyl9aWYoKGU9bi5jaGlsZHJlbikmJihzPWUu
bGVuZ3RoKSl7dmFyIGUscix1LGksbyxhLGMscyxsPTEvMCxmPS0xLzAsaD0xLzAsZz0tMS8wO2lm
KGUuZm9yRWFjaCh2aSkscj1lWzBdLHIueD0tci5yLHIueT0wLHQocikscz4xJiYodT1lWzFdLHUu
eD11LnIsdS55PTAsdCh1KSxzPjIpKWZvcihpPWVbMl0seWkocix1LGkpLHQoaSksZmkocixpKSxy
Ll9wYWNrX3ByZXY9aSxmaShpLHUpLHU9ci5fcGFja19uZXh0LG89MztzPm87bysrKXt5aShyLHUs
aT1lW29dKTt2YXIgcD0wLHY9MSxkPTE7Zm9yKGE9dS5fcGFja19uZXh0O2EhPT11O2E9YS5fcGFj
a19uZXh0LHYrKylpZihnaShhLGkpKXtwPTE7YnJlYWt9aWYoMT09cClmb3IoYz1yLl9wYWNrX3By
ZXY7YyE9PWEuX3BhY2tfcHJldiYmIWdpKGMsaSk7Yz1jLl9wYWNrX3ByZXYsZCsrKTtwPyhkPnZ8
fHY9PWQmJnUucjxyLnI/aGkocix1PWEpOmhpKHI9Yyx1KSxvLS0pOihmaShyLGkpLHU9aSx0KGkp
KX12YXIgbT0obCtmKS8yLHk9KGgrZykvMix4PTA7Zm9yKG89MDtzPm87bysrKWk9ZVtvXSxpLngt
PW0saS55LT15LHg9TWF0aC5tYXgoeCxpLnIrTWF0aC5zcXJ0KGkueCppLngraS55KmkueSkpO24u
cj14LGUuZm9yRWFjaChkaSl9fWZ1bmN0aW9uIHZpKG4pe24uX3BhY2tfbmV4dD1uLl9wYWNrX3By
ZXY9bn1mdW5jdGlvbiBkaShuKXtkZWxldGUgbi5fcGFja19uZXh0LGRlbGV0ZSBuLl9wYWNrX3By
ZXZ9ZnVuY3Rpb24gbWkobix0LGUscil7dmFyIHU9bi5jaGlsZHJlbjtpZihuLng9dCs9cipuLngs
bi55PWUrPXIqbi55LG4ucio9cix1KWZvcih2YXIgaT0tMSxvPXUubGVuZ3RoOysraTxvOyltaSh1
W2ldLHQsZSxyKX1mdW5jdGlvbiB5aShuLHQsZSl7dmFyIHI9bi5yK2Uucix1PXQueC1uLngsaT10
Lnktbi55O2lmKHImJih1fHxpKSl7dmFyIG89dC5yK2UucixhPXUqdStpKmk7byo9byxyKj1yO3Zh
ciBjPS41KyhyLW8pLygyKmEpLHM9TWF0aC5zcXJ0KE1hdGgubWF4KDAsMipvKihyK2EpLShyLT1h
KSpyLW8qbykpLygyKmEpO2UueD1uLngrYyp1K3MqaSxlLnk9bi55K2MqaS1zKnV9ZWxzZSBlLng9
bi54K3IsZS55PW4ueX1mdW5jdGlvbiB4aShuLHQpe3JldHVybiBuLnBhcmVudD09dC5wYXJlbnQ/
MToyfWZ1bmN0aW9uIE1pKG4pe3ZhciB0PW4uY2hpbGRyZW47cmV0dXJuIHQubGVuZ3RoP3RbMF06
bi50fWZ1bmN0aW9uIF9pKG4pe3ZhciB0LGU9bi5jaGlsZHJlbjtyZXR1cm4odD1lLmxlbmd0aCk/
ZVt0LTFdOm4udH1mdW5jdGlvbiBiaShuLHQsZSl7dmFyIHI9ZS8odC5pLW4uaSk7dC5jLT1yLHQu
cys9ZSxuLmMrPXIsdC56Kz1lLHQubSs9ZX1mdW5jdGlvbiB3aShuKXtmb3IodmFyIHQsZT0wLHI9
MCx1PW4uY2hpbGRyZW4saT11Lmxlbmd0aDstLWk+PTA7KXQ9dVtpXSx0LnorPWUsdC5tKz1lLGUr
PXQucysocis9dC5jKX1mdW5jdGlvbiBTaShuLHQsZSl7cmV0dXJuIG4uYS5wYXJlbnQ9PT10LnBh
cmVudD9uLmE6ZX1mdW5jdGlvbiBraShuKXtyZXR1cm4gMStaby5tYXgobixmdW5jdGlvbihuKXty
ZXR1cm4gbi55fSl9ZnVuY3Rpb24gRWkobil7cmV0dXJuIG4ucmVkdWNlKGZ1bmN0aW9uKG4sdCl7
cmV0dXJuIG4rdC54fSwwKS9uLmxlbmd0aH1mdW5jdGlvbiBBaShuKXt2YXIgdD1uLmNoaWxkcmVu
O3JldHVybiB0JiZ0Lmxlbmd0aD9BaSh0WzBdKTpufWZ1bmN0aW9uIENpKG4pe3ZhciB0LGU9bi5j
aGlsZHJlbjtyZXR1cm4gZSYmKHQ9ZS5sZW5ndGgpP0NpKGVbdC0xXSk6bn1mdW5jdGlvbiBOaShu
KXtyZXR1cm57eDpuLngseTpuLnksZHg6bi5keCxkeTpuLmR5fX1mdW5jdGlvbiB6aShuLHQpe3Zh
ciBlPW4ueCt0WzNdLHI9bi55K3RbMF0sdT1uLmR4LXRbMV0tdFszXSxpPW4uZHktdFswXS10WzJd
O3JldHVybiAwPnUmJihlKz11LzIsdT0wKSwwPmkmJihyKz1pLzIsaT0wKSx7eDplLHk6cixkeDp1
LGR5Oml9fWZ1bmN0aW9uIExpKG4pe3ZhciB0PW5bMF0sZT1uW24ubGVuZ3RoLTFdO3JldHVybiBl
PnQ/W3QsZV06W2UsdF19ZnVuY3Rpb24gVGkobil7cmV0dXJuIG4ucmFuZ2VFeHRlbnQ/bi5yYW5n
ZUV4dGVudCgpOkxpKG4ucmFuZ2UoKSl9ZnVuY3Rpb24gcWkobix0LGUscil7dmFyIHU9ZShuWzBd
LG5bMV0pLGk9cih0WzBdLHRbMV0pO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gaSh1KG4pKX19
ZnVuY3Rpb24gUmkobix0KXt2YXIgZSxyPTAsdT1uLmxlbmd0aC0xLGk9bltyXSxvPW5bdV07cmV0
dXJuIGk+byYmKGU9cixyPXUsdT1lLGU9aSxpPW8sbz1lKSxuW3JdPXQuZmxvb3IoaSksblt1XT10
LmNlaWwobyksbn1mdW5jdGlvbiBEaShuKXtyZXR1cm4gbj97Zmxvb3I6ZnVuY3Rpb24odCl7cmV0
dXJuIE1hdGguZmxvb3IodC9uKSpufSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmNlaWwo
dC9uKSpufX06c3N9ZnVuY3Rpb24gUGkobix0LGUscil7dmFyIHU9W10saT1bXSxvPTAsYT1NYXRo
Lm1pbihuLmxlbmd0aCx0Lmxlbmd0aCktMTtmb3IoblthXTxuWzBdJiYobj1uLnNsaWNlKCkucmV2
ZXJzZSgpLHQ9dC5zbGljZSgpLnJldmVyc2UoKSk7KytvPD1hOyl1LnB1c2goZShuW28tMV0sbltv
XSkpLGkucHVzaChyKHRbby0xXSx0W29dKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPVpvLmJp
c2VjdChuLHQsMSxhKS0xO3JldHVybiBpW2VdKHVbZV0odCkpfX1mdW5jdGlvbiBVaShuLHQsZSxy
KXtmdW5jdGlvbiB1KCl7dmFyIHU9TWF0aC5taW4obi5sZW5ndGgsdC5sZW5ndGgpPjI/UGk6cWks
Yz1yP1V1OlB1O3JldHVybiBvPXUobix0LGMsZSksYT11KHQsbixjLGh1KSxpfWZ1bmN0aW9uIGko
bil7cmV0dXJuIG8obil9dmFyIG8sYTtyZXR1cm4gaS5pbnZlcnQ9ZnVuY3Rpb24obil7cmV0dXJu
IGEobil9LGkuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQu
bWFwKE51bWJlciksdSgpKTpufSxpLnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh0PW4sdSgpKTp0fSxpLnJhbmdlUm91bmQ9ZnVuY3Rpb24obil7cmV0dXJuIGkucmFu
Z2UobikuaW50ZXJwb2xhdGUoenUpfSxpLmNsYW1wPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhyPW4sdSgpKTpyfSxpLmludGVycG9sYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhlPW4sdSgpKTplfSxpLnRpY2tzPWZ1bmN0aW9uKHQpe3JldHVybiBP
aShuLHQpfSxpLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gWWkobix0LGUpfSxpLm5p
Y2U9ZnVuY3Rpb24odCl7cmV0dXJuIEhpKG4sdCksdSgpfSxpLmNvcHk9ZnVuY3Rpb24oKXtyZXR1
cm4gVWkobix0LGUscil9LHUoKX1mdW5jdGlvbiBqaShuLHQpe3JldHVybiBaby5yZWJpbmQobix0
LCJyYW5nZSIsInJhbmdlUm91bmQiLCJpbnRlcnBvbGF0ZSIsImNsYW1wIil9ZnVuY3Rpb24gSGko
bix0KXtyZXR1cm4gUmkobixEaShGaShuLHQpWzJdKSl9ZnVuY3Rpb24gRmkobix0KXtudWxsPT10
JiYodD0xMCk7dmFyIGU9TGkobikscj1lWzFdLWVbMF0sdT1NYXRoLnBvdygxMCxNYXRoLmZsb29y
KE1hdGgubG9nKHIvdCkvTWF0aC5MTjEwKSksaT10L3IqdTtyZXR1cm4uMTU+PWk/dSo9MTA6LjM1
Pj1pP3UqPTU6Ljc1Pj1pJiYodSo9MiksZVswXT1NYXRoLmNlaWwoZVswXS91KSp1LGVbMV09TWF0
aC5mbG9vcihlWzFdL3UpKnUrLjUqdSxlWzJdPXUsZX1mdW5jdGlvbiBPaShuLHQpe3JldHVybiBa
by5yYW5nZS5hcHBseShabyxGaShuLHQpKX1mdW5jdGlvbiBZaShuLHQsZSl7dmFyIHI9Rmkobix0
KTtpZihlKXt2YXIgdT1HYS5leGVjKGUpO2lmKHUuc2hpZnQoKSwicyI9PT11WzhdKXt2YXIgaT1a
by5mb3JtYXRQcmVmaXgoTWF0aC5tYXgodWEoclswXSksdWEoclsxXSkpKTtyZXR1cm4gdVs3XXx8
KHVbN109Ii4iK0lpKGkuc2NhbGUoclsyXSkpKSx1WzhdPSJmIixlPVpvLmZvcm1hdCh1LmpvaW4o
IiIpKSxmdW5jdGlvbihuKXtyZXR1cm4gZShpLnNjYWxlKG4pKStpLnN5bWJvbH19dVs3XXx8KHVb
N109Ii4iK1ppKHVbOF0scikpLGU9dS5qb2luKCIiKX1lbHNlIGU9IiwuIitJaShyWzJdKSsiZiI7
cmV0dXJuIFpvLmZvcm1hdChlKX1mdW5jdGlvbiBJaShuKXtyZXR1cm4tTWF0aC5mbG9vcihNYXRo
LmxvZyhuKS9NYXRoLkxOMTArLjAxKX1mdW5jdGlvbiBaaShuLHQpe3ZhciBlPUlpKHRbMl0pO3Jl
dHVybiBuIGluIGxzP01hdGguYWJzKGUtSWkoTWF0aC5tYXgodWEodFswXSksdWEodFsxXSkpKSkr
ICsoImUiIT09bik6ZS0yKigiJSI9PT1uKX1mdW5jdGlvbiBWaShuLHQsZSxyKXtmdW5jdGlvbiB1
KG4pe3JldHVybihlP01hdGgubG9nKDA+bj8wOm4pOi1NYXRoLmxvZyhuPjA/MDotbikpL01hdGgu
bG9nKHQpfWZ1bmN0aW9uIGkobil7cmV0dXJuIGU/TWF0aC5wb3codCxuKTotTWF0aC5wb3codCwt
bil9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbih1KHQpKX1yZXR1cm4gby5pbnZlcnQ9ZnVuY3Rpb24o
dCl7cmV0dXJuIGkobi5pbnZlcnQodCkpfSxvLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oZT10WzBdPj0wLG4uZG9tYWluKChyPXQubWFwKE51bWJlcikpLm1hcCh1
KSksbyk6cn0sby5iYXNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStl
LG4uZG9tYWluKHIubWFwKHUpKSxvKTp0fSxvLm5pY2U9ZnVuY3Rpb24oKXt2YXIgdD1SaShyLm1h
cCh1KSxlP01hdGg6aHMpO3JldHVybiBuLmRvbWFpbih0KSxyPXQubWFwKGkpLG99LG8udGlja3M9
ZnVuY3Rpb24oKXt2YXIgbj1MaShyKSxvPVtdLGE9blswXSxjPW5bMV0scz1NYXRoLmZsb29yKHUo
YSkpLGw9TWF0aC5jZWlsKHUoYykpLGY9dCUxPzI6dDtpZihpc0Zpbml0ZShsLXMpKXtpZihlKXtm
b3IoO2w+cztzKyspZm9yKHZhciBoPTE7Zj5oO2grKylvLnB1c2goaShzKSpoKTtvLnB1c2goaShz
KSl9ZWxzZSBmb3Ioby5wdXNoKGkocykpO3MrKzxsOylmb3IodmFyIGg9Zi0xO2g+MDtoLS0pby5w
dXNoKGkocykqaCk7Zm9yKHM9MDtvW3NdPGE7cysrKTtmb3IobD1vLmxlbmd0aDtvW2wtMV0+Yzts
LS0pO289by5zbGljZShzLGwpfXJldHVybiBvfSxvLnRpY2tGb3JtYXQ9ZnVuY3Rpb24obix0KXtp
ZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZnM7YXJndW1lbnRzLmxlbmd0aDwyP3Q9ZnM6ImZ1
bmN0aW9uIiE9dHlwZW9mIHQmJih0PVpvLmZvcm1hdCh0KSk7dmFyIHIsYT1NYXRoLm1heCguMSxu
L28udGlja3MoKS5sZW5ndGgpLGM9ZT8ocj0xZS0xMixNYXRoLmNlaWwpOihyPS0xZS0xMixNYXRo
LmZsb29yKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG4vaShjKHUobikrcikpPD1hP3Qobik6
IiJ9fSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVmkobi5jb3B5KCksdCxlLHIpfSxqaShvLG4p
fWZ1bmN0aW9uIFhpKG4sdCxlKXtmdW5jdGlvbiByKHQpe3JldHVybiBuKHUodCkpfXZhciB1PSRp
KHQpLGk9JGkoMS90KTtyZXR1cm4gci5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGkobi5pbnZl
cnQodCkpfSxyLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obi5k
b21haW4oKGU9dC5tYXAoTnVtYmVyKSkubWFwKHUpKSxyKTplfSxyLnRpY2tzPWZ1bmN0aW9uKG4p
e3JldHVybiBPaShlLG4pfSxyLnRpY2tGb3JtYXQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gWWkoZSxu
LHQpfSxyLm5pY2U9ZnVuY3Rpb24obil7cmV0dXJuIHIuZG9tYWluKEhpKGUsbikpfSxyLmV4cG9u
ZW50PWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSRpKHQ9byksaT0kaSgx
L3QpLG4uZG9tYWluKGUubWFwKHUpKSxyKTp0fSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gWGko
bi5jb3B5KCksdCxlKX0samkocixuKX1mdW5jdGlvbiAkaShuKXtyZXR1cm4gZnVuY3Rpb24odCl7
cmV0dXJuIDA+dD8tTWF0aC5wb3coLXQsbik6TWF0aC5wb3codCxuKX19ZnVuY3Rpb24gQmkobix0
KXtmdW5jdGlvbiBlKGUpe3JldHVybiBpWygodS5nZXQoZSl8fCgicmFuZ2UiPT09dC50P3Uuc2V0
KGUsbi5wdXNoKGUpKTowLzApKS0xKSVpLmxlbmd0aF19ZnVuY3Rpb24gcih0LGUpe3JldHVybiBa
by5yYW5nZShuLmxlbmd0aCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB0K2Uqbn0pfXZhciB1LGks
YTtyZXR1cm4gZS5kb21haW49ZnVuY3Rpb24ocil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJu
IG47bj1bXSx1PW5ldyBvO2Zvcih2YXIgaSxhPS0xLGM9ci5sZW5ndGg7KythPGM7KXUuaGFzKGk9
clthXSl8fHUuc2V0KGksbi5wdXNoKGkpKTtyZXR1cm4gZVt0LnRdLmFwcGx5KGUsdC5hKX0sZS5y
YW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1uLGE9MCx0PXt0OiJy
YW5nZSIsYTphcmd1bWVudHN9LGUpOml9LGUucmFuZ2VQb2ludHM9ZnVuY3Rpb24odSxvKXthcmd1
bWVudHMubGVuZ3RoPDImJihvPTApO3ZhciBjPXVbMF0scz11WzFdLGw9KHMtYykvKE1hdGgubWF4
KDEsbi5sZW5ndGgtMSkrbyk7cmV0dXJuIGk9cihuLmxlbmd0aDwyPyhjK3MpLzI6YytsKm8vMixs
KSxhPTAsdD17dDoicmFuZ2VQb2ludHMiLGE6YXJndW1lbnRzfSxlfSxlLnJhbmdlQmFuZHM9ZnVu
Y3Rpb24odSxvLGMpe2FyZ3VtZW50cy5sZW5ndGg8MiYmKG89MCksYXJndW1lbnRzLmxlbmd0aDwz
JiYoYz1vKTt2YXIgcz11WzFdPHVbMF0sbD11W3MtMF0sZj11WzEtc10saD0oZi1sKS8obi5sZW5n
dGgtbysyKmMpO3JldHVybiBpPXIobCtoKmMsaCkscyYmaS5yZXZlcnNlKCksYT1oKigxLW8pLHQ9
e3Q6InJhbmdlQmFuZHMiLGE6YXJndW1lbnRzfSxlfSxlLnJhbmdlUm91bmRCYW5kcz1mdW5jdGlv
bih1LG8sYyl7YXJndW1lbnRzLmxlbmd0aDwyJiYobz0wKSxhcmd1bWVudHMubGVuZ3RoPDMmJihj
PW8pO3ZhciBzPXVbMV08dVswXSxsPXVbcy0wXSxmPXVbMS1zXSxoPU1hdGguZmxvb3IoKGYtbCkv
KG4ubGVuZ3RoLW8rMipjKSksZz1mLWwtKG4ubGVuZ3RoLW8pKmg7cmV0dXJuIGk9cihsK01hdGgu
cm91bmQoZy8yKSxoKSxzJiZpLnJldmVyc2UoKSxhPU1hdGgucm91bmQoaCooMS1vKSksdD17dDoi
cmFuZ2VSb3VuZEJhbmRzIixhOmFyZ3VtZW50c30sZX0sZS5yYW5nZUJhbmQ9ZnVuY3Rpb24oKXty
ZXR1cm4gYX0sZS5yYW5nZUV4dGVudD1mdW5jdGlvbigpe3JldHVybiBMaSh0LmFbMF0pfSxlLmNv
cHk9ZnVuY3Rpb24oKXtyZXR1cm4gQmkobix0KX0sZS5kb21haW4obil9ZnVuY3Rpb24gV2koZSxy
KXtmdW5jdGlvbiB1KCl7dmFyIG49MCx0PXIubGVuZ3RoO2ZvcihvPVtdOysrbjx0OylvW24tMV09
Wm8ucXVhbnRpbGUoZSxuL3QpO3JldHVybiBpfWZ1bmN0aW9uIGkobil7cmV0dXJuIGlzTmFOKG49
K24pP3ZvaWQgMDpyW1pvLmJpc2VjdChvLG4pXX12YXIgbztyZXR1cm4gaS5kb21haW49ZnVuY3Rp
b24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ci5maWx0ZXIodCkuc29ydChuKSx1KCkp
OmV9LGkucmFuZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bix1KCkp
OnJ9LGkucXVhbnRpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIG99LGkuaW52ZXJ0RXh0ZW50PWZ1bmN0
aW9uKG4pe3JldHVybiBuPXIuaW5kZXhPZihuKSwwPm4/WzAvMCwwLzBdOltuPjA/b1tuLTFdOmVb
MF0sbjxvLmxlbmd0aD9vW25dOmVbZS5sZW5ndGgtMV1dfSxpLmNvcHk9ZnVuY3Rpb24oKXtyZXR1
cm4gV2koZSxyKX0sdSgpfWZ1bmN0aW9uIEppKG4sdCxlKXtmdW5jdGlvbiByKHQpe3JldHVybiBl
W01hdGgubWF4KDAsTWF0aC5taW4obyxNYXRoLmZsb29yKGkqKHQtbikpKSldfWZ1bmN0aW9uIHUo
KXtyZXR1cm4gaT1lLmxlbmd0aC8odC1uKSxvPWUubGVuZ3RoLTEscn12YXIgaSxvO3JldHVybiBy
LmRvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rZVswXSx0PStl
W2UubGVuZ3RoLTFdLHUoKSk6W24sdF19LHIucmFuZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGU9bix1KCkpOmV9LHIuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVy
biB0PWUuaW5kZXhPZih0KSx0PTA+dD8wLzA6dC9pK24sW3QsdCsxL2ldfSxyLmNvcHk9ZnVuY3Rp
b24oKXtyZXR1cm4gSmkobix0LGUpfSx1KCl9ZnVuY3Rpb24gR2kobix0KXtmdW5jdGlvbiBlKGUp
e3JldHVybiBlPj1lP3RbWm8uYmlzZWN0KG4sZSldOnZvaWQgMH1yZXR1cm4gZS5kb21haW49ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxlKTpufSxlLnJhbmdlPWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sZSk6dH0sZS5pbnZlcnRFeHRlbnQ9
ZnVuY3Rpb24oZSl7cmV0dXJuIGU9dC5pbmRleE9mKGUpLFtuW2UtMV0sbltlXV19LGUuY29weT1m
dW5jdGlvbigpe3JldHVybiBHaShuLHQpfSxlfWZ1bmN0aW9uIEtpKG4pe2Z1bmN0aW9uIHQobil7
cmV0dXJuK259cmV0dXJuIHQuaW52ZXJ0PXQsdC5kb21haW49dC5yYW5nZT1mdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lLm1hcCh0KSx0KTpufSx0LnRpY2tzPWZ1bmN0aW9u
KHQpe3JldHVybiBPaShuLHQpfSx0LnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gWWko
bix0LGUpfSx0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gS2kobil9LHR9ZnVuY3Rpb24gUWkobil7
cmV0dXJuIG4uaW5uZXJSYWRpdXN9ZnVuY3Rpb24gbm8obil7cmV0dXJuIG4ub3V0ZXJSYWRpdXN9
ZnVuY3Rpb24gdG8obil7cmV0dXJuIG4uc3RhcnRBbmdsZX1mdW5jdGlvbiBlbyhuKXtyZXR1cm4g
bi5lbmRBbmdsZX1mdW5jdGlvbiBybyhuKXtmdW5jdGlvbiB0KHQpe2Z1bmN0aW9uIG8oKXtzLnB1
c2goIk0iLGkobihsKSxhKSl9Zm9yKHZhciBjLHM9W10sbD1bXSxmPS0xLGg9dC5sZW5ndGgsZz1i
dChlKSxwPWJ0KHIpOysrZjxoOyl1LmNhbGwodGhpcyxjPXRbZl0sZik/bC5wdXNoKFsrZy5jYWxs
KHRoaXMsYyxmKSwrcC5jYWxsKHRoaXMsYyxmKV0pOmwubGVuZ3RoJiYobygpLGw9W10pO3JldHVy
biBsLmxlbmd0aCYmbygpLHMubGVuZ3RoP3Muam9pbigiIik6bnVsbH12YXIgZT13cixyPVNyLHU9
d2UsaT11byxvPWkua2V5LGE9Ljc7cmV0dXJuIHQueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oZT1uLHQpOmV9LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocj1uLHQpOnJ9LHQuZGVmaW5lZD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odT1uLHQpOnV9LHQuaW50ZXJwb2xhdGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIG4/aT1uOihpPXhzLmdldChuKXx8dW8pLmtl
eSx0KTpvfSx0LnRlbnNpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9
bix0KTphfSx0fWZ1bmN0aW9uIHVvKG4pe3JldHVybiBuLmpvaW4oIkwiKX1mdW5jdGlvbiBpbyhu
KXtyZXR1cm4gdW8obikrIloifWZ1bmN0aW9uIG9vKG4pe2Zvcih2YXIgdD0wLGU9bi5sZW5ndGgs
cj1uWzBdLHU9W3JbMF0sIiwiLHJbMV1dOysrdDxlOyl1LnB1c2goIkgiLChyWzBdKyhyPW5bdF0p
WzBdKS8yLCJWIixyWzFdKTtyZXR1cm4gZT4xJiZ1LnB1c2goIkgiLHJbMF0pLHUuam9pbigiIil9
ZnVuY3Rpb24gYW8obil7Zm9yKHZhciB0PTAsZT1uLmxlbmd0aCxyPW5bMF0sdT1bclswXSwiLCIs
clsxXV07Kyt0PGU7KXUucHVzaCgiViIsKHI9blt0XSlbMV0sIkgiLHJbMF0pO3JldHVybiB1Lmpv
aW4oIiIpfWZ1bmN0aW9uIGNvKG4pe2Zvcih2YXIgdD0wLGU9bi5sZW5ndGgscj1uWzBdLHU9W3Jb
MF0sIiwiLHJbMV1dOysrdDxlOyl1LnB1c2goIkgiLChyPW5bdF0pWzBdLCJWIixyWzFdKTtyZXR1
cm4gdS5qb2luKCIiKX1mdW5jdGlvbiBzbyhuLHQpe3JldHVybiBuLmxlbmd0aDw0P3VvKG4pOm5b
MV0raG8obi5zbGljZSgxLG4ubGVuZ3RoLTEpLGdvKG4sdCkpfWZ1bmN0aW9uIGxvKG4sdCl7cmV0
dXJuIG4ubGVuZ3RoPDM/dW8obik6blswXStobygobi5wdXNoKG5bMF0pLG4pLGdvKFtuW24ubGVu
Z3RoLTJdXS5jb25jYXQobixbblsxXV0pLHQpKX1mdW5jdGlvbiBmbyhuLHQpe3JldHVybiBuLmxl
bmd0aDwzP3VvKG4pOm5bMF0raG8obixnbyhuLHQpKX1mdW5jdGlvbiBobyhuLHQpe2lmKHQubGVu
Z3RoPDF8fG4ubGVuZ3RoIT10Lmxlbmd0aCYmbi5sZW5ndGghPXQubGVuZ3RoKzIpcmV0dXJuIHVv
KG4pO3ZhciBlPW4ubGVuZ3RoIT10Lmxlbmd0aCxyPSIiLHU9blswXSxpPW5bMV0sbz10WzBdLGE9
byxjPTE7aWYoZSYmKHIrPSJRIisoaVswXS0yKm9bMF0vMykrIiwiKyhpWzFdLTIqb1sxXS8zKSsi
LCIraVswXSsiLCIraVsxXSx1PW5bMV0sYz0yKSx0Lmxlbmd0aD4xKXthPXRbMV0saT1uW2NdLGMr
KyxyKz0iQyIrKHVbMF0rb1swXSkrIiwiKyh1WzFdK29bMV0pKyIsIisoaVswXS1hWzBdKSsiLCIr
KGlbMV0tYVsxXSkrIiwiK2lbMF0rIiwiK2lbMV07Zm9yKHZhciBzPTI7czx0Lmxlbmd0aDtzKyss
YysrKWk9bltjXSxhPXRbc10scis9IlMiKyhpWzBdLWFbMF0pKyIsIisoaVsxXS1hWzFdKSsiLCIr
aVswXSsiLCIraVsxXX1pZihlKXt2YXIgbD1uW2NdO3IrPSJRIisoaVswXSsyKmFbMF0vMykrIiwi
KyhpWzFdKzIqYVsxXS8zKSsiLCIrbFswXSsiLCIrbFsxXX1yZXR1cm4gcn1mdW5jdGlvbiBnbyhu
LHQpe2Zvcih2YXIgZSxyPVtdLHU9KDEtdCkvMixpPW5bMF0sbz1uWzFdLGE9MSxjPW4ubGVuZ3Ro
OysrYTxjOyllPWksaT1vLG89blthXSxyLnB1c2goW3UqKG9bMF0tZVswXSksdSoob1sxXS1lWzFd
KV0pO3JldHVybiByfWZ1bmN0aW9uIHBvKG4pe2lmKG4ubGVuZ3RoPDMpcmV0dXJuIHVvKG4pO3Zh
ciB0PTEsZT1uLmxlbmd0aCxyPW5bMF0sdT1yWzBdLGk9clsxXSxvPVt1LHUsdSwocj1uWzFdKVsw
XV0sYT1baSxpLGksclsxXV0sYz1bdSwiLCIsaSwiTCIseG8oYnMsbyksIiwiLHhvKGJzLGEpXTtm
b3Iobi5wdXNoKG5bZS0xXSk7Kyt0PD1lOylyPW5bdF0sby5zaGlmdCgpLG8ucHVzaChyWzBdKSxh
LnNoaWZ0KCksYS5wdXNoKHJbMV0pLE1vKGMsbyxhKTtyZXR1cm4gbi5wb3AoKSxjLnB1c2goIkwi
LHIpLGMuam9pbigiIil9ZnVuY3Rpb24gdm8obil7aWYobi5sZW5ndGg8NClyZXR1cm4gdW8obik7
Zm9yKHZhciB0LGU9W10scj0tMSx1PW4ubGVuZ3RoLGk9WzBdLG89WzBdOysrcjwzOyl0PW5bcl0s
aS5wdXNoKHRbMF0pLG8ucHVzaCh0WzFdKTtmb3IoZS5wdXNoKHhvKGJzLGkpKyIsIit4byhicyxv
KSksLS1yOysrcjx1Oyl0PW5bcl0saS5zaGlmdCgpLGkucHVzaCh0WzBdKSxvLnNoaWZ0KCksby5w
dXNoKHRbMV0pLE1vKGUsaSxvKTtyZXR1cm4gZS5qb2luKCIiKX1mdW5jdGlvbiBtbyhuKXtmb3Io
dmFyIHQsZSxyPS0xLHU9bi5sZW5ndGgsaT11KzQsbz1bXSxhPVtdOysrcjw0OyllPW5bciV1XSxv
LnB1c2goZVswXSksYS5wdXNoKGVbMV0pO2Zvcih0PVt4byhicyxvKSwiLCIseG8oYnMsYSldLC0t
cjsrK3I8aTspZT1uW3IldV0sby5zaGlmdCgpLG8ucHVzaChlWzBdKSxhLnNoaWZ0KCksYS5wdXNo
KGVbMV0pLE1vKHQsbyxhKTtyZXR1cm4gdC5qb2luKCIiKX1mdW5jdGlvbiB5byhuLHQpe3ZhciBl
PW4ubGVuZ3RoLTE7aWYoZSlmb3IodmFyIHIsdSxpPW5bMF1bMF0sbz1uWzBdWzFdLGE9bltlXVsw
XS1pLGM9bltlXVsxXS1vLHM9LTE7KytzPD1lOylyPW5bc10sdT1zL2UsclswXT10KnJbMF0rKDEt
dCkqKGkrdSphKSxyWzFdPXQqclsxXSsoMS10KSoobyt1KmMpO3JldHVybiBwbyhuKX1mdW5jdGlv
biB4byhuLHQpe3JldHVybiBuWzBdKnRbMF0rblsxXSp0WzFdK25bMl0qdFsyXStuWzNdKnRbM119
ZnVuY3Rpb24gTW8obix0LGUpe24ucHVzaCgiQyIseG8oTXMsdCksIiwiLHhvKE1zLGUpLCIsIix4
byhfcyx0KSwiLCIseG8oX3MsZSksIiwiLHhvKGJzLHQpLCIsIix4byhicyxlKSl9ZnVuY3Rpb24g
X28obix0KXtyZXR1cm4odFsxXS1uWzFdKS8odFswXS1uWzBdKX1mdW5jdGlvbiBibyhuKXtmb3Io
dmFyIHQ9MCxlPW4ubGVuZ3RoLTEscj1bXSx1PW5bMF0saT1uWzFdLG89clswXT1fbyh1LGkpOysr
dDxlOylyW3RdPShvKyhvPV9vKHU9aSxpPW5bdCsxXSkpKS8yO3JldHVybiByW3RdPW8scn1mdW5j
dGlvbiB3byhuKXtmb3IodmFyIHQsZSxyLHUsaT1bXSxvPWJvKG4pLGE9LTEsYz1uLmxlbmd0aC0x
OysrYTxjOyl0PV9vKG5bYV0sblthKzFdKSx1YSh0KTxrYT9vW2FdPW9bYSsxXT0wOihlPW9bYV0v
dCxyPW9bYSsxXS90LHU9ZSplK3Iqcix1PjkmJih1PTMqdC9NYXRoLnNxcnQodSksb1thXT11KmUs
b1thKzFdPXUqcikpO2ZvcihhPS0xOysrYTw9YzspdT0obltNYXRoLm1pbihjLGErMSldWzBdLW5b
TWF0aC5tYXgoMCxhLTEpXVswXSkvKDYqKDErb1thXSpvW2FdKSksaS5wdXNoKFt1fHwwLG9bYV0q
dXx8MF0pO3JldHVybiBpfWZ1bmN0aW9uIFNvKG4pe3JldHVybiBuLmxlbmd0aDwzP3VvKG4pOm5b
MF0raG8obix3byhuKSl9ZnVuY3Rpb24ga28obil7Zm9yKHZhciB0LGUscix1PS0xLGk9bi5sZW5n
dGg7Kyt1PGk7KXQ9blt1XSxlPXRbMF0scj10WzFdK21zLHRbMF09ZSpNYXRoLmNvcyhyKSx0WzFd
PWUqTWF0aC5zaW4ocik7cmV0dXJuIG59ZnVuY3Rpb24gRW8obil7ZnVuY3Rpb24gdCh0KXtmdW5j
dGlvbiBjKCl7di5wdXNoKCJNIixhKG4obSksZiksbCxzKG4oZC5yZXZlcnNlKCkpLGYpLCJaIil9
Zm9yKHZhciBoLGcscCx2PVtdLGQ9W10sbT1bXSx5PS0xLHg9dC5sZW5ndGgsTT1idChlKSxfPWJ0
KHUpLGI9ZT09PXI/ZnVuY3Rpb24oKXtyZXR1cm4gZ306YnQociksdz11PT09aT9mdW5jdGlvbigp
e3JldHVybiBwfTpidChpKTsrK3k8eDspby5jYWxsKHRoaXMsaD10W3ldLHkpPyhkLnB1c2goW2c9
K00uY2FsbCh0aGlzLGgseSkscD0rXy5jYWxsKHRoaXMsaCx5KV0pLG0ucHVzaChbK2IuY2FsbCh0
aGlzLGgseSksK3cuY2FsbCh0aGlzLGgseSldKSk6ZC5sZW5ndGgmJihjKCksZD1bXSxtPVtdKTty
ZXR1cm4gZC5sZW5ndGgmJmMoKSx2Lmxlbmd0aD92LmpvaW4oIiIpOm51bGx9dmFyIGU9d3Iscj13
cix1PTAsaT1TcixvPXdlLGE9dW8sYz1hLmtleSxzPWEsbD0iTCIsZj0uNztyZXR1cm4gdC54PWZ1
bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXI9bix0KTpyfSx0LngwPWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdCk6ZX0sdC54MT1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHQpOnJ9LHQueT1mdW5jdGlvbihuKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8odT1pPW4sdCk6aX0sdC55MD1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odT1uLHQpOnV9LHQueTE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGk9bix0KTppfSx0LmRlZmluZWQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KG89bix0KTpvfSx0LmludGVycG9sYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhjPSJmdW5jdGlvbiI9PXR5cGVvZiBuP2E9bjooYT14cy5nZXQobil8
fHVvKS5rZXkscz1hLnJldmVyc2V8fGEsbD1hLmNsb3NlZD8iTSI6IkwiLHQpOmN9LHQudGVuc2lv
bj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1uLHQpOmZ9LHR9ZnVuY3Rp
b24gQW8obil7cmV0dXJuIG4ucmFkaXVzfWZ1bmN0aW9uIENvKG4pe3JldHVybltuLngsbi55XX1m
dW5jdGlvbiBObyhuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1uLmFwcGx5KHRoaXMsYXJndW1l
bnRzKSxlPXRbMF0scj10WzFdK21zO3JldHVybltlKk1hdGguY29zKHIpLGUqTWF0aC5zaW4ocild
fX1mdW5jdGlvbiB6bygpe3JldHVybiA2NH1mdW5jdGlvbiBMbygpe3JldHVybiJjaXJjbGUifWZ1
bmN0aW9uIFRvKG4pe3ZhciB0PU1hdGguc3FydChuL2JhKTtyZXR1cm4iTTAsIit0KyJBIit0KyIs
Iit0KyIgMCAxLDEgMCwiKy10KyJBIit0KyIsIit0KyIgMCAxLDEgMCwiK3QrIloifWZ1bmN0aW9u
IHFvKG4sdCl7cmV0dXJuIHNhKG4sQ3MpLG4uaWQ9dCxufWZ1bmN0aW9uIFJvKG4sdCxlLHIpe3Zh
ciB1PW4uaWQ7cmV0dXJuIFAobiwiZnVuY3Rpb24iPT10eXBlb2YgZT9mdW5jdGlvbihuLGksbyl7
bi5fX3RyYW5zaXRpb25fX1t1XS50d2Vlbi5zZXQodCxyKGUuY2FsbChuLG4uX19kYXRhX18saSxv
KSkpfTooZT1yKGUpLGZ1bmN0aW9uKG4pe24uX190cmFuc2l0aW9uX19bdV0udHdlZW4uc2V0KHQs
ZSl9KSl9ZnVuY3Rpb24gRG8obil7cmV0dXJuIG51bGw9PW4mJihuPSIiKSxmdW5jdGlvbigpe3Ro
aXMudGV4dENvbnRlbnQ9bn19ZnVuY3Rpb24gUG8obix0LGUscil7dmFyIHU9bi5fX3RyYW5zaXRp
b25fX3x8KG4uX190cmFuc2l0aW9uX189e2FjdGl2ZTowLGNvdW50OjB9KSxpPXVbZV07aWYoIWkp
e3ZhciBhPXIudGltZTtpPXVbZV09e3R3ZWVuOm5ldyBvLHRpbWU6YSxlYXNlOnIuZWFzZSxkZWxh
eTpyLmRlbGF5LGR1cmF0aW9uOnIuZHVyYXRpb259LCsrdS5jb3VudCxaby50aW1lcihmdW5jdGlv
bihyKXtmdW5jdGlvbiBvKHIpe3JldHVybiB1LmFjdGl2ZT5lP3MoKToodS5hY3RpdmU9ZSxpLmV2
ZW50JiZpLmV2ZW50LnN0YXJ0LmNhbGwobixsLHQpLGkudHdlZW4uZm9yRWFjaChmdW5jdGlvbihl
LHIpeyhyPXIuY2FsbChuLGwsdCkpJiZ2LnB1c2gocil9KSxaby50aW1lcihmdW5jdGlvbigpe3Jl
dHVybiBwLmM9YyhyfHwxKT93ZTpjLDF9LDAsYSksdm9pZCAwKX1mdW5jdGlvbiBjKHIpe2lmKHUu
YWN0aXZlIT09ZSlyZXR1cm4gcygpO2Zvcih2YXIgbz1yL2csYT1mKG8pLGM9di5sZW5ndGg7Yz4w
Oyl2Wy0tY10uY2FsbChuLGEpOwotcmV0dXJuIG8+PTE/KGkuZXZlbnQmJmkuZXZlbnQuZW5kLmNh
bGwobixsLHQpLHMoKSk6dm9pZCAwfWZ1bmN0aW9uIHMoKXtyZXR1cm4tLXUuY291bnQ/ZGVsZXRl
IHVbZV06ZGVsZXRlIG4uX190cmFuc2l0aW9uX18sMX12YXIgbD1uLl9fZGF0YV9fLGY9aS5lYXNl
LGg9aS5kZWxheSxnPWkuZHVyYXRpb24scD1CYSx2PVtdO3JldHVybiBwLnQ9aCthLHI+PWg/byhy
LWgpOihwLmM9byx2b2lkIDApfSwwLGEpfX1mdW5jdGlvbiBVbyhuLHQpe24uYXR0cigidHJhbnNm
b3JtIixmdW5jdGlvbihuKXtyZXR1cm4idHJhbnNsYXRlKCIrdChuKSsiLDApIn0pfWZ1bmN0aW9u
IGpvKG4sdCl7bi5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKG4pe3JldHVybiJ0cmFuc2xhdGUo
MCwiK3QobikrIikifSl9ZnVuY3Rpb24gSG8obil7cmV0dXJuIG4udG9JU09TdHJpbmcoKX1mdW5j
dGlvbiBGbyhuLHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbih0KX1mdW5jdGlvbiB1KG4sZSl7
dmFyIHI9blsxXS1uWzBdLHU9ci9lLGk9Wm8uYmlzZWN0KFVzLHUpO3JldHVybiBpPT1Vcy5sZW5n
dGg/W3QueWVhcixGaShuLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi8zMTUzNmU2fSksZSlbMl1d
Omk/dFt1L1VzW2ktMV08VXNbaV0vdT9pLTE6aV06W0ZzLEZpKG4sZSlbMl1dfXJldHVybiByLmlu
dmVydD1mdW5jdGlvbih0KXtyZXR1cm4gT28obi5pbnZlcnQodCkpfSxyLmRvbWFpbj1mdW5jdGlv
bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obi5kb21haW4odCkscik6bi5kb21haW4oKS5t
YXAoT28pfSxyLm5pY2U9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKGUpe3JldHVybiFpc05hTihl
KSYmIW4ucmFuZ2UoZSxPbygrZSsxKSx0KS5sZW5ndGh9dmFyIGk9ci5kb21haW4oKSxvPUxpKGkp
LGE9bnVsbD09bj91KG8sMTApOiJudW1iZXIiPT10eXBlb2YgbiYmdShvLG4pO3JldHVybiBhJiYo
bj1hWzBdLHQ9YVsxXSksci5kb21haW4oUmkoaSx0PjE/e2Zsb29yOmZ1bmN0aW9uKHQpe2Zvcig7
ZSh0PW4uZmxvb3IodCkpOyl0PU9vKHQtMSk7cmV0dXJuIHR9LGNlaWw6ZnVuY3Rpb24odCl7Zm9y
KDtlKHQ9bi5jZWlsKHQpKTspdD1PbygrdCsxKTtyZXR1cm4gdH19Om4pKX0sci50aWNrcz1mdW5j
dGlvbihuLHQpe3ZhciBlPUxpKHIuZG9tYWluKCkpLGk9bnVsbD09bj91KGUsMTApOiJudW1iZXIi
PT10eXBlb2Ygbj91KGUsbik6IW4ucmFuZ2UmJlt7cmFuZ2U6bn0sdF07cmV0dXJuIGkmJihuPWlb
MF0sdD1pWzFdKSxuLnJhbmdlKGVbMF0sT28oK2VbMV0rMSksMT50PzE6dCl9LHIudGlja0Zvcm1h
dD1mdW5jdGlvbigpe3JldHVybiBlfSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gRm8obi5jb3B5
KCksdCxlKX0samkocixuKX1mdW5jdGlvbiBPbyhuKXtyZXR1cm4gbmV3IERhdGUobil9ZnVuY3Rp
b24gWW8obil7cmV0dXJuIEpTT04ucGFyc2Uobi5yZXNwb25zZVRleHQpfWZ1bmN0aW9uIElvKG4p
e3ZhciB0PSRvLmNyZWF0ZVJhbmdlKCk7cmV0dXJuIHQuc2VsZWN0Tm9kZSgkby5ib2R5KSx0LmNy
ZWF0ZUNvbnRleHR1YWxGcmFnbWVudChuLnJlc3BvbnNlVGV4dCl9dmFyIFpvPXt2ZXJzaW9uOiIz
LjQuMTEifTtEYXRlLm5vd3x8KERhdGUubm93PWZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSk7
dmFyIFZvPVtdLnNsaWNlLFhvPWZ1bmN0aW9uKG4pe3JldHVybiBWby5jYWxsKG4pfSwkbz1kb2N1
bWVudCxCbz0kby5kb2N1bWVudEVsZW1lbnQsV289d2luZG93O3RyeXtYbyhCby5jaGlsZE5vZGVz
KVswXS5ub2RlVHlwZX1jYXRjaChKbyl7WG89ZnVuY3Rpb24obil7Zm9yKHZhciB0PW4ubGVuZ3Ro
LGU9bmV3IEFycmF5KHQpO3QtLTspZVt0XT1uW3RdO3JldHVybiBlfX10cnl7JG8uY3JlYXRlRWxl
bWVudCgiZGl2Iikuc3R5bGUuc2V0UHJvcGVydHkoIm9wYWNpdHkiLDAsIiIpfWNhdGNoKEdvKXt2
YXIgS289V28uRWxlbWVudC5wcm90b3R5cGUsUW89S28uc2V0QXR0cmlidXRlLG5hPUtvLnNldEF0
dHJpYnV0ZU5TLHRhPVdvLkNTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlLGVhPXRhLnNldFBy
b3BlcnR5O0tvLnNldEF0dHJpYnV0ZT1mdW5jdGlvbihuLHQpe1FvLmNhbGwodGhpcyxuLHQrIiIp
fSxLby5zZXRBdHRyaWJ1dGVOUz1mdW5jdGlvbihuLHQsZSl7bmEuY2FsbCh0aGlzLG4sdCxlKyIi
KX0sdGEuc2V0UHJvcGVydHk9ZnVuY3Rpb24obix0LGUpe2VhLmNhbGwodGhpcyxuLHQrIiIsZSl9
fVpvLmFzY2VuZGluZz1uLFpvLmRlc2NlbmRpbmc9ZnVuY3Rpb24obix0KXtyZXR1cm4gbj50Py0x
OnQ+bj8xOnQ+PW4/MDowLzB9LFpvLm1pbj1mdW5jdGlvbihuLHQpe3ZhciBlLHIsdT0tMSxpPW4u
bGVuZ3RoO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtmb3IoOysrdTxpJiYhKG51bGwhPShlPW5b
dV0pJiZlPj1lKTspZT12b2lkIDA7Zm9yKDsrK3U8aTspbnVsbCE9KHI9blt1XSkmJmU+ciYmKGU9
cil9ZWxzZXtmb3IoOysrdTxpJiYhKG51bGwhPShlPXQuY2FsbChuLG5bdV0sdSkpJiZlPj1lKTsp
ZT12b2lkIDA7Zm9yKDsrK3U8aTspbnVsbCE9KHI9dC5jYWxsKG4sblt1XSx1KSkmJmU+ciYmKGU9
cil9cmV0dXJuIGV9LFpvLm1heD1mdW5jdGlvbihuLHQpe3ZhciBlLHIsdT0tMSxpPW4ubGVuZ3Ro
O2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtmb3IoOysrdTxpJiYhKG51bGwhPShlPW5bdV0pJiZl
Pj1lKTspZT12b2lkIDA7Zm9yKDsrK3U8aTspbnVsbCE9KHI9blt1XSkmJnI+ZSYmKGU9cil9ZWxz
ZXtmb3IoOysrdTxpJiYhKG51bGwhPShlPXQuY2FsbChuLG5bdV0sdSkpJiZlPj1lKTspZT12b2lk
IDA7Zm9yKDsrK3U8aTspbnVsbCE9KHI9dC5jYWxsKG4sblt1XSx1KSkmJnI+ZSYmKGU9cil9cmV0
dXJuIGV9LFpvLmV4dGVudD1mdW5jdGlvbihuLHQpe3ZhciBlLHIsdSxpPS0xLG89bi5sZW5ndGg7
aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcig7KytpPG8mJiEobnVsbCE9KGU9dT1uW2ldKSYm
ZT49ZSk7KWU9dT12b2lkIDA7Zm9yKDsrK2k8bzspbnVsbCE9KHI9bltpXSkmJihlPnImJihlPXIp
LHI+dSYmKHU9cikpfWVsc2V7Zm9yKDsrK2k8byYmIShudWxsIT0oZT11PXQuY2FsbChuLG5baV0s
aSkpJiZlPj1lKTspZT12b2lkIDA7Zm9yKDsrK2k8bzspbnVsbCE9KHI9dC5jYWxsKG4sbltpXSxp
KSkmJihlPnImJihlPXIpLHI+dSYmKHU9cikpfXJldHVybltlLHVdfSxaby5zdW09ZnVuY3Rpb24o
bix0KXt2YXIgZSxyPTAsdT1uLmxlbmd0aCxpPS0xO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZv
cig7KytpPHU7KWlzTmFOKGU9K25baV0pfHwocis9ZSk7ZWxzZSBmb3IoOysraTx1Oylpc05hTihl
PSt0LmNhbGwobixuW2ldLGkpKXx8KHIrPWUpO3JldHVybiByfSxaby5tZWFuPWZ1bmN0aW9uKG4s
ZSl7dmFyIHIsdT0wLGk9bi5sZW5ndGgsbz0tMSxhPWk7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgp
Zm9yKDsrK288aTspdChyPW5bb10pP3UrPXI6LS1hO2Vsc2UgZm9yKDsrK288aTspdChyPWUuY2Fs
bChuLG5bb10sbykpP3UrPXI6LS1hO3JldHVybiBhP3UvYTp2b2lkIDB9LFpvLnF1YW50aWxlPWZ1
bmN0aW9uKG4sdCl7dmFyIGU9KG4ubGVuZ3RoLTEpKnQrMSxyPU1hdGguZmxvb3IoZSksdT0rblty
LTFdLGk9ZS1yO3JldHVybiBpP3UraSoobltyXS11KTp1fSxaby5tZWRpYW49ZnVuY3Rpb24oZSxy
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xJiYoZT1lLm1hcChyKSksZT1lLmZpbHRlcih0KSxl
Lmxlbmd0aD9aby5xdWFudGlsZShlLnNvcnQobiksLjUpOnZvaWQgMH07dmFyIHJhPWUobik7Wm8u
YmlzZWN0TGVmdD1yYS5sZWZ0LFpvLmJpc2VjdD1aby5iaXNlY3RSaWdodD1yYS5yaWdodCxaby5i
aXNlY3Rvcj1mdW5jdGlvbih0KXtyZXR1cm4gZSgxPT09dC5sZW5ndGg/ZnVuY3Rpb24oZSxyKXty
ZXR1cm4gbih0KGUpLHIpfTp0KX0sWm8uc2h1ZmZsZT1mdW5jdGlvbihuKXtmb3IodmFyIHQsZSxy
PW4ubGVuZ3RoO3I7KWU9MHxNYXRoLnJhbmRvbSgpKnItLSx0PW5bcl0sbltyXT1uW2VdLG5bZV09
dDtyZXR1cm4gbn0sWm8ucGVybXV0ZT1mdW5jdGlvbihuLHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxy
PW5ldyBBcnJheShlKTtlLS07KXJbZV09blt0W2VdXTtyZXR1cm4gcn0sWm8ucGFpcnM9ZnVuY3Rp
b24obil7Zm9yKHZhciB0LGU9MCxyPW4ubGVuZ3RoLTEsdT1uWzBdLGk9bmV3IEFycmF5KDA+cj8w
OnIpO3I+ZTspaVtlXT1bdD11LHU9blsrK2VdXTtyZXR1cm4gaX0sWm8uemlwPWZ1bmN0aW9uKCl7
aWYoISh1PWFyZ3VtZW50cy5sZW5ndGgpKXJldHVybltdO2Zvcih2YXIgbj0tMSx0PVpvLm1pbihh
cmd1bWVudHMsciksZT1uZXcgQXJyYXkodCk7KytuPHQ7KWZvcih2YXIgdSxpPS0xLG89ZVtuXT1u
ZXcgQXJyYXkodSk7KytpPHU7KW9baV09YXJndW1lbnRzW2ldW25dO3JldHVybiBlfSxaby50cmFu
c3Bvc2U9ZnVuY3Rpb24obil7cmV0dXJuIFpvLnppcC5hcHBseShabyxuKX0sWm8ua2V5cz1mdW5j
dGlvbihuKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gbil0LnB1c2goZSk7cmV0dXJuIHR9LFpvLnZh
bHVlcz1mdW5jdGlvbihuKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gbil0LnB1c2gobltlXSk7cmV0
dXJuIHR9LFpvLmVudHJpZXM9ZnVuY3Rpb24obil7dmFyIHQ9W107Zm9yKHZhciBlIGluIG4pdC5w
dXNoKHtrZXk6ZSx2YWx1ZTpuW2VdfSk7cmV0dXJuIHR9LFpvLm1lcmdlPWZ1bmN0aW9uKG4pe2Zv
cih2YXIgdCxlLHIsdT1uLmxlbmd0aCxpPS0xLG89MDsrK2k8dTspbys9bltpXS5sZW5ndGg7Zm9y
KGU9bmV3IEFycmF5KG8pOy0tdT49MDspZm9yKHI9blt1XSx0PXIubGVuZ3RoOy0tdD49MDspZVst
LW9dPXJbdF07cmV0dXJuIGV9O3ZhciB1YT1NYXRoLmFicztaby5yYW5nZT1mdW5jdGlvbihuLHQs
ZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwzJiYoZT0xLGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9bixu
PTApKSwxLzA9PT0odC1uKS9lKXRocm93IG5ldyBFcnJvcigiaW5maW5pdGUgcmFuZ2UiKTt2YXIg
cixpPVtdLG89dSh1YShlKSksYT0tMTtpZihuKj1vLHQqPW8sZSo9bywwPmUpZm9yKDsocj1uK2Uq
KythKT50OylpLnB1c2goci9vKTtlbHNlIGZvcig7KHI9bitlKisrYSk8dDspaS5wdXNoKHIvbyk7
cmV0dXJuIGl9LFpvLm1hcD1mdW5jdGlvbihuKXt2YXIgdD1uZXcgbztpZihuIGluc3RhbmNlb2Yg
byluLmZvckVhY2goZnVuY3Rpb24obixlKXt0LnNldChuLGUpfSk7ZWxzZSBmb3IodmFyIGUgaW4g
bil0LnNldChlLG5bZV0pO3JldHVybiB0fSxpKG8se2hhczphLGdldDpmdW5jdGlvbihuKXtyZXR1
cm4gdGhpc1tpYStuXX0sc2V0OmZ1bmN0aW9uKG4sdCl7cmV0dXJuIHRoaXNbaWErbl09dH0scmVt
b3ZlOmMsa2V5czpzLHZhbHVlczpmdW5jdGlvbigpe3ZhciBuPVtdO3JldHVybiB0aGlzLmZvckVh
Y2goZnVuY3Rpb24odCxlKXtuLnB1c2goZSl9KSxufSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIG49
W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LGUpe24ucHVzaCh7a2V5OnQsdmFsdWU6
ZX0pfSksbn0sc2l6ZTpsLGVtcHR5OmYsZm9yRWFjaDpmdW5jdGlvbihuKXtmb3IodmFyIHQgaW4g
dGhpcyl0LmNoYXJDb2RlQXQoMCk9PT1vYSYmbi5jYWxsKHRoaXMsdC5zdWJzdHJpbmcoMSksdGhp
c1t0XSl9fSk7dmFyIGlhPSJceDAwIixvYT1pYS5jaGFyQ29kZUF0KDApO1pvLm5lc3Q9ZnVuY3Rp
b24oKXtmdW5jdGlvbiBuKHQsYSxjKXtpZihjPj1pLmxlbmd0aClyZXR1cm4gcj9yLmNhbGwodSxh
KTplP2Euc29ydChlKTphO2Zvcih2YXIgcyxsLGYsaCxnPS0xLHA9YS5sZW5ndGgsdj1pW2MrK10s
ZD1uZXcgbzsrK2c8cDspKGg9ZC5nZXQocz12KGw9YVtnXSkpKT9oLnB1c2gobCk6ZC5zZXQocyxb
bF0pO3JldHVybiB0PyhsPXQoKSxmPWZ1bmN0aW9uKGUscil7bC5zZXQoZSxuKHQscixjKSl9KToo
bD17fSxmPWZ1bmN0aW9uKGUscil7bFtlXT1uKHQscixjKX0pLGQuZm9yRWFjaChmKSxsfWZ1bmN0
aW9uIHQobixlKXtpZihlPj1pLmxlbmd0aClyZXR1cm4gbjt2YXIgcj1bXSx1PWFbZSsrXTtyZXR1
cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKG4sdSl7ci5wdXNoKHtrZXk6bix2YWx1ZXM6dCh1LGUpfSl9
KSx1P3Iuc29ydChmdW5jdGlvbihuLHQpe3JldHVybiB1KG4ua2V5LHQua2V5KX0pOnJ9dmFyIGUs
cix1PXt9LGk9W10sYT1bXTtyZXR1cm4gdS5tYXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbihlLHQs
MCl9LHUuZW50cmllcz1mdW5jdGlvbihlKXtyZXR1cm4gdChuKFpvLm1hcCxlLDApLDApfSx1Lmtl
eT1mdW5jdGlvbihuKXtyZXR1cm4gaS5wdXNoKG4pLHV9LHUuc29ydEtleXM9ZnVuY3Rpb24obil7
cmV0dXJuIGFbaS5sZW5ndGgtMV09bix1fSx1LnNvcnRWYWx1ZXM9ZnVuY3Rpb24obil7cmV0dXJu
IGU9bix1fSx1LnJvbGx1cD1mdW5jdGlvbihuKXtyZXR1cm4gcj1uLHV9LHV9LFpvLnNldD1mdW5j
dGlvbihuKXt2YXIgdD1uZXcgaDtpZihuKWZvcih2YXIgZT0wLHI9bi5sZW5ndGg7cj5lOysrZSl0
LmFkZChuW2VdKTtyZXR1cm4gdH0saShoLHtoYXM6YSxhZGQ6ZnVuY3Rpb24obil7cmV0dXJuIHRo
aXNbaWErbl09ITAsbn0scmVtb3ZlOmZ1bmN0aW9uKG4pe3JldHVybiBuPWlhK24sbiBpbiB0aGlz
JiZkZWxldGUgdGhpc1tuXX0sdmFsdWVzOnMsc2l6ZTpsLGVtcHR5OmYsZm9yRWFjaDpmdW5jdGlv
bihuKXtmb3IodmFyIHQgaW4gdGhpcyl0LmNoYXJDb2RlQXQoMCk9PT1vYSYmbi5jYWxsKHRoaXMs
dC5zdWJzdHJpbmcoMSkpfX0pLFpvLmJlaGF2aW9yPXt9LFpvLnJlYmluZD1mdW5jdGlvbihuLHQp
e2Zvcih2YXIgZSxyPTEsdT1hcmd1bWVudHMubGVuZ3RoOysrcjx1OyluW2U9YXJndW1lbnRzW3Jd
XT1nKG4sdCx0W2VdKTtyZXR1cm4gbn07dmFyIGFhPVsid2Via2l0IiwibXMiLCJtb3oiLCJNb3oi
LCJvIiwiTyJdO1pvLmRpc3BhdGNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPW5ldyBkLHQ9LTEsZT1h
cmd1bWVudHMubGVuZ3RoOysrdDxlOyluW2FyZ3VtZW50c1t0XV09bShuKTtyZXR1cm4gbn0sZC5w
cm90b3R5cGUub249ZnVuY3Rpb24obix0KXt2YXIgZT1uLmluZGV4T2YoIi4iKSxyPSIiO2lmKGU+
PTAmJihyPW4uc3Vic3RyaW5nKGUrMSksbj1uLnN1YnN0cmluZygwLGUpKSxuKXJldHVybiBhcmd1
bWVudHMubGVuZ3RoPDI/dGhpc1tuXS5vbihyKTp0aGlzW25dLm9uKHIsdCk7aWYoMj09PWFyZ3Vt
ZW50cy5sZW5ndGgpe2lmKG51bGw9PXQpZm9yKG4gaW4gdGhpcyl0aGlzLmhhc093blByb3BlcnR5
KG4pJiZ0aGlzW25dLm9uKHIsbnVsbCk7cmV0dXJuIHRoaXN9fSxaby5ldmVudD1udWxsLFpvLnJl
cXVvdGU9ZnVuY3Rpb24obil7cmV0dXJuIG4ucmVwbGFjZShjYSwiXFwkJiIpfTt2YXIgY2E9L1tc
XFxeXCRcKlwrXD9cfFxbXF1cKFwpXC5ce1x9XS9nLHNhPXt9Ll9fcHJvdG9fXz9mdW5jdGlvbihu
LHQpe24uX19wcm90b19fPXR9OmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlIGluIHQpbltlXT10W2Vd
fSxsYT1mdW5jdGlvbihuLHQpe3JldHVybiB0LnF1ZXJ5U2VsZWN0b3Iobil9LGZhPWZ1bmN0aW9u
KG4sdCl7cmV0dXJuIHQucXVlcnlTZWxlY3RvckFsbChuKX0saGE9Qm8ubWF0Y2hlc3x8Qm9bcChC
bywibWF0Y2hlc1NlbGVjdG9yIildLGdhPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGhhLmNhbGwobix0
KX07ImZ1bmN0aW9uIj09dHlwZW9mIFNpenpsZSYmKGxhPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIFNp
enpsZShuLHQpWzBdfHxudWxsfSxmYT1TaXp6bGUsZ2E9U2l6emxlLm1hdGNoZXNTZWxlY3Rvciks
Wm8uc2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIG1hfTt2YXIgcGE9Wm8uc2VsZWN0aW9uLnBy
b3RvdHlwZT1bXTtwYS5zZWxlY3Q9ZnVuY3Rpb24obil7dmFyIHQsZSxyLHUsaT1bXTtuPWIobik7
Zm9yKHZhciBvPS0xLGE9dGhpcy5sZW5ndGg7KytvPGE7KXtpLnB1c2godD1bXSksdC5wYXJlbnRO
b2RlPShyPXRoaXNbb10pLnBhcmVudE5vZGU7Zm9yKHZhciBjPS0xLHM9ci5sZW5ndGg7KytjPHM7
KSh1PXJbY10pPyh0LnB1c2goZT1uLmNhbGwodSx1Ll9fZGF0YV9fLGMsbykpLGUmJiJfX2RhdGFf
XyJpbiB1JiYoZS5fX2RhdGFfXz11Ll9fZGF0YV9fKSk6dC5wdXNoKG51bGwpfXJldHVybiBfKGkp
fSxwYS5zZWxlY3RBbGw9ZnVuY3Rpb24obil7dmFyIHQsZSxyPVtdO249dyhuKTtmb3IodmFyIHU9
LTEsaT10aGlzLmxlbmd0aDsrK3U8aTspZm9yKHZhciBvPXRoaXNbdV0sYT0tMSxjPW8ubGVuZ3Ro
OysrYTxjOykoZT1vW2FdKSYmKHIucHVzaCh0PVhvKG4uY2FsbChlLGUuX19kYXRhX18sYSx1KSkp
LHQucGFyZW50Tm9kZT1lKTtyZXR1cm4gXyhyKX07dmFyIHZhPXtzdmc6Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIix4aHRtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIseGxpbms6
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1M
LzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTta
by5ucz17cHJlZml4OnZhLHF1YWxpZnk6ZnVuY3Rpb24obil7dmFyIHQ9bi5pbmRleE9mKCI6Iiks
ZT1uO3JldHVybiB0Pj0wJiYoZT1uLnN1YnN0cmluZygwLHQpLG49bi5zdWJzdHJpbmcodCsxKSks
dmEuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOnZhW2VdLGxvY2FsOm59Om59fSxwYS5hdHRyPWZ1
bmN0aW9uKG4sdCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtpZigic3RyaW5nIj09dHlwZW9mIG4p
e3ZhciBlPXRoaXMubm9kZSgpO3JldHVybiBuPVpvLm5zLnF1YWxpZnkobiksbi5sb2NhbD9lLmdl
dEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6ZS5nZXRBdHRyaWJ1dGUobil9Zm9yKHQgaW4g
bil0aGlzLmVhY2goUyh0LG5bdF0pKTtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5lYWNoKFMobix0
KSl9LHBhLmNsYXNzZWQ9ZnVuY3Rpb24obix0KXtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2lmKCJz
dHJpbmciPT10eXBlb2Ygbil7dmFyIGU9dGhpcy5ub2RlKCkscj0obj1BKG4pKS5sZW5ndGgsdT0t
MTtpZih0PWUuY2xhc3NMaXN0KXtmb3IoOysrdTxyOylpZighdC5jb250YWlucyhuW3VdKSlyZXR1
cm4hMX1lbHNlIGZvcih0PWUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpOysrdTxyOylpZighRShuW3Vd
KS50ZXN0KHQpKXJldHVybiExO3JldHVybiEwfWZvcih0IGluIG4pdGhpcy5lYWNoKEModCxuW3Rd
KSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFjaChDKG4sdCkpfSxwYS5zdHlsZT1mdW5jdGlv
bihuLHQsZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDtpZigzPnIpe2lmKCJzdHJpbmciIT10eXBl
b2Ygbil7Mj5yJiYodD0iIik7Zm9yKGUgaW4gbil0aGlzLmVhY2goeihlLG5bZV0sdCkpO3JldHVy
biB0aGlzfWlmKDI+cilyZXR1cm4gV28uZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLm5vZGUoKSxudWxs
KS5nZXRQcm9wZXJ0eVZhbHVlKG4pO2U9IiJ9cmV0dXJuIHRoaXMuZWFjaCh6KG4sdCxlKSl9LHBh
LnByb3BlcnR5PWZ1bmN0aW9uKG4sdCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtpZigic3RyaW5n
Ij09dHlwZW9mIG4pcmV0dXJuIHRoaXMubm9kZSgpW25dO2Zvcih0IGluIG4pdGhpcy5lYWNoKEwo
dCxuW3RdKSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFjaChMKG4sdCkpfSxwYS50ZXh0PWZ1
bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgiZnVuY3Rpb24iPT10
eXBlb2Ygbj9mdW5jdGlvbigpe3ZhciB0PW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4
dENvbnRlbnQ9bnVsbD09dD8iIjp0fTpudWxsPT1uP2Z1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVu
dD0iIn06ZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PW59KTp0aGlzLm5vZGUoKS50ZXh0Q29u
dGVudH0scGEuaHRtbD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVh
Y2goImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVuY3Rpb24oKXt2YXIgdD1uLmFwcGx5KHRoaXMsYXJn
dW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT10PyIiOnR9Om51bGw9PW4/ZnVuY3Rpb24oKXt0
aGlzLmlubmVySFRNTD0iIn06ZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD1ufSk6dGhpcy5ub2Rl
KCkuaW5uZXJIVE1MfSxwYS5hcHBlbmQ9ZnVuY3Rpb24obil7cmV0dXJuIG49VChuKSx0aGlzLnNl
bGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKG4uYXBwbHkodGhpcyxhcmd1
bWVudHMpKX0pfSxwYS5pbnNlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gbj1UKG4pLHQ9Yih0KSx0
aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRo
aXMsYXJndW1lbnRzKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KX0scGEucmVtb3Zl
PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBuPXRoaXMucGFyZW50
Tm9kZTtuJiZuLnJlbW92ZUNoaWxkKHRoaXMpfSl9LHBhLmRhdGE9ZnVuY3Rpb24obix0KXtmdW5j
dGlvbiBlKG4sZSl7dmFyIHIsdSxpLGE9bi5sZW5ndGgsZj1lLmxlbmd0aCxoPU1hdGgubWluKGEs
ZiksZz1uZXcgQXJyYXkoZikscD1uZXcgQXJyYXkoZiksdj1uZXcgQXJyYXkoYSk7aWYodCl7dmFy
IGQsbT1uZXcgbyx5PW5ldyBvLHg9W107Zm9yKHI9LTE7KytyPGE7KWQ9dC5jYWxsKHU9bltyXSx1
Ll9fZGF0YV9fLHIpLG0uaGFzKGQpP3Zbcl09dTptLnNldChkLHUpLHgucHVzaChkKTtmb3Iocj0t
MTsrK3I8ZjspZD10LmNhbGwoZSxpPWVbcl0sciksKHU9bS5nZXQoZCkpPyhnW3JdPXUsdS5fX2Rh
dGFfXz1pKTp5LmhhcyhkKXx8KHBbcl09cShpKSkseS5zZXQoZCxpKSxtLnJlbW92ZShkKTtmb3Io
cj0tMTsrK3I8YTspbS5oYXMoeFtyXSkmJih2W3JdPW5bcl0pfWVsc2V7Zm9yKHI9LTE7KytyPGg7
KXU9bltyXSxpPWVbcl0sdT8odS5fX2RhdGFfXz1pLGdbcl09dSk6cFtyXT1xKGkpO2Zvcig7Zj5y
OysrcilwW3JdPXEoZVtyXSk7Zm9yKDthPnI7KytyKXZbcl09bltyXX1wLnVwZGF0ZT1nLHAucGFy
ZW50Tm9kZT1nLnBhcmVudE5vZGU9di5wYXJlbnROb2RlPW4ucGFyZW50Tm9kZSxjLnB1c2gocCks
cy5wdXNoKGcpLGwucHVzaCh2KX12YXIgcix1LGk9LTEsYT10aGlzLmxlbmd0aDtpZighYXJndW1l
bnRzLmxlbmd0aCl7Zm9yKG49bmV3IEFycmF5KGE9KHI9dGhpc1swXSkubGVuZ3RoKTsrK2k8YTsp
KHU9cltpXSkmJihuW2ldPXUuX19kYXRhX18pO3JldHVybiBufXZhciBjPVUoW10pLHM9XyhbXSks
bD1fKFtdKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbilmb3IoOysraTxhOyllKHI9dGhpc1tpXSxu
LmNhbGwocixyLnBhcmVudE5vZGUuX19kYXRhX18saSkpO2Vsc2UgZm9yKDsrK2k8YTspZShyPXRo
aXNbaV0sbik7cmV0dXJuIHMuZW50ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gY30scy5leGl0PWZ1bmN0
aW9uKCl7cmV0dXJuIGx9LHN9LHBhLmRhdHVtPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIixuKTp0aGlzLnByb3BlcnR5KCJfX2RhdGFf
XyIpfSxwYS5maWx0ZXI9ZnVuY3Rpb24obil7dmFyIHQsZSxyLHU9W107ImZ1bmN0aW9uIiE9dHlw
ZW9mIG4mJihuPVIobikpO2Zvcih2YXIgaT0wLG89dGhpcy5sZW5ndGg7bz5pO2krKyl7dS5wdXNo
KHQ9W10pLHQucGFyZW50Tm9kZT0oZT10aGlzW2ldKS5wYXJlbnROb2RlO2Zvcih2YXIgYT0wLGM9
ZS5sZW5ndGg7Yz5hO2ErKykocj1lW2FdKSYmbi5jYWxsKHIsci5fX2RhdGFfXyxhLGkpJiZ0LnB1
c2gocil9cmV0dXJuIF8odSl9LHBhLm9yZGVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xLHQ9dGhp
cy5sZW5ndGg7KytuPHQ7KWZvcih2YXIgZSxyPXRoaXNbbl0sdT1yLmxlbmd0aC0xLGk9clt1XTst
LXU+PTA7KShlPXJbdV0pJiYoaSYmaSE9PWUubmV4dFNpYmxpbmcmJmkucGFyZW50Tm9kZS5pbnNl
cnRCZWZvcmUoZSxpKSxpPWUpO3JldHVybiB0aGlzfSxwYS5zb3J0PWZ1bmN0aW9uKG4pe249RC5h
cHBseSh0aGlzLGFyZ3VtZW50cyk7Zm9yKHZhciB0PS0xLGU9dGhpcy5sZW5ndGg7Kyt0PGU7KXRo
aXNbdF0uc29ydChuKTtyZXR1cm4gdGhpcy5vcmRlcigpfSxwYS5lYWNoPWZ1bmN0aW9uKG4pe3Jl
dHVybiBQKHRoaXMsZnVuY3Rpb24odCxlLHIpe24uY2FsbCh0LHQuX19kYXRhX18sZSxyKX0pfSxw
YS5jYWxsPWZ1bmN0aW9uKG4pe3ZhciB0PVhvKGFyZ3VtZW50cyk7cmV0dXJuIG4uYXBwbHkodFsw
XT10aGlzLHQpLHRoaXN9LHBhLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubm9kZSgpfSxw
YS5ub2RlPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPTAsdD10aGlzLmxlbmd0aDt0Pm47bisrKWZvcih2
YXIgZT10aGlzW25dLHI9MCx1PWUubGVuZ3RoO3U+cjtyKyspe3ZhciBpPWVbcl07aWYoaSlyZXR1
cm4gaX1yZXR1cm4gbnVsbH0scGEuc2l6ZT1mdW5jdGlvbigpe3ZhciBuPTA7cmV0dXJuIHRoaXMu
ZWFjaChmdW5jdGlvbigpeysrbn0pLG59O3ZhciBkYT1bXTtaby5zZWxlY3Rpb24uZW50ZXI9VSxa
by5zZWxlY3Rpb24uZW50ZXIucHJvdG90eXBlPWRhLGRhLmFwcGVuZD1wYS5hcHBlbmQsZGEuZW1w
dHk9cGEuZW1wdHksZGEubm9kZT1wYS5ub2RlLGRhLmNhbGw9cGEuY2FsbCxkYS5zaXplPXBhLnNp
emUsZGEuc2VsZWN0PWZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxlLHIsdSxpLG89W10sYT0tMSxjPXRo
aXMubGVuZ3RoOysrYTxjOyl7cj0odT10aGlzW2FdKS51cGRhdGUsby5wdXNoKHQ9W10pLHQucGFy
ZW50Tm9kZT11LnBhcmVudE5vZGU7Zm9yKHZhciBzPS0xLGw9dS5sZW5ndGg7KytzPGw7KShpPXVb
c10pPyh0LnB1c2gocltzXT1lPW4uY2FsbCh1LnBhcmVudE5vZGUsaS5fX2RhdGFfXyxzLGEpKSxl
Ll9fZGF0YV9fPWkuX19kYXRhX18pOnQucHVzaChudWxsKX1yZXR1cm4gXyhvKX0sZGEuaW5zZXJ0
PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9aih0aGlzKSkscGEu
aW5zZXJ0LmNhbGwodGhpcyxuLHQpfSxwYS50cmFuc2l0aW9uPWZ1bmN0aW9uKCl7Zm9yKHZhciBu
LHQsZT1Tc3x8KytOcyxyPVtdLHU9a3N8fHt0aW1lOkRhdGUubm93KCksZWFzZTp4dSxkZWxheTow
LGR1cmF0aW9uOjI1MH0saT0tMSxvPXRoaXMubGVuZ3RoOysraTxvOyl7ci5wdXNoKG49W10pO2Zv
cih2YXIgYT10aGlzW2ldLGM9LTEscz1hLmxlbmd0aDsrK2M8czspKHQ9YVtjXSkmJlBvKHQsYyxl
LHUpLG4ucHVzaCh0KX1yZXR1cm4gcW8ocixlKX0scGEuaW50ZXJydXB0PWZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuZWFjaChIKX0sWm8uc2VsZWN0PWZ1bmN0aW9uKG4pe3ZhciB0PVsic3RyaW5nIj09
dHlwZW9mIG4/bGEobiwkbyk6bl07cmV0dXJuIHQucGFyZW50Tm9kZT1CbyxfKFt0XSl9LFpvLnNl
bGVjdEFsbD1mdW5jdGlvbihuKXt2YXIgdD1Ybygic3RyaW5nIj09dHlwZW9mIG4/ZmEobiwkbyk6
bik7cmV0dXJuIHQucGFyZW50Tm9kZT1CbyxfKFt0XSl9O3ZhciBtYT1aby5zZWxlY3QoQm8pO3Bh
Lm9uPWZ1bmN0aW9uKG4sdCxlKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoO2lmKDM+cil7aWYoInN0
cmluZyIhPXR5cGVvZiBuKXsyPnImJih0PSExKTtmb3IoZSBpbiBuKXRoaXMuZWFjaChGKGUsbltl
XSx0KSk7cmV0dXJuIHRoaXN9aWYoMj5yKXJldHVybihyPXRoaXMubm9kZSgpWyJfX29uIituXSkm
JnIuXztlPSExfXJldHVybiB0aGlzLmVhY2goRihuLHQsZSkpfTt2YXIgeWE9Wm8ubWFwKHttb3Vz
ZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pO3lhLmZvckVhY2goZnVu
Y3Rpb24obil7Im9uIituIGluICRvJiZ5YS5yZW1vdmUobil9KTt2YXIgeGE9Im9uc2VsZWN0c3Rh
cnQiaW4gJG8/bnVsbDpwKEJvLnN0eWxlLCJ1c2VyU2VsZWN0IiksTWE9MDtaby5tb3VzZT1mdW5j
dGlvbihuKXtyZXR1cm4gWihuLHgoKSl9O3ZhciBfYT0vV2ViS2l0Ly50ZXN0KFdvLm5hdmlnYXRv
ci51c2VyQWdlbnQpPy0xOjA7Wm8udG91Y2hlcz1mdW5jdGlvbihuLHQpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPDImJih0PXgoKS50b3VjaGVzKSx0P1hvKHQpLm1hcChmdW5jdGlvbih0KXt2YXIg
ZT1aKG4sdCk7cmV0dXJuIGUuaWRlbnRpZmllcj10LmlkZW50aWZpZXIsZX0pOltdfSxaby5iZWhh
dmlvci5kcmFnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3RoaXMub24oIm1vdXNlZG93bi5kcmFn
Iix1KS5vbigidG91Y2hzdGFydC5kcmFnIixpKX1mdW5jdGlvbiB0KG4sdCx1LGksbyl7cmV0dXJu
IGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3ZhciBuLGUscj10KGgsdik7ciYmKG49clswXS14WzBd
LGU9clsxXS14WzFdLHB8PW58ZSx4PXIsZyh7dHlwZToiZHJhZyIseDpyWzBdK3NbMF0seTpyWzFd
K3NbMV0sZHg6bixkeTplfSkpfWZ1bmN0aW9uIGMoKXt0KGgsdikmJihtLm9uKGkrZCxudWxsKS5v
bihvK2QsbnVsbCkseShwJiZaby5ldmVudC50YXJnZXQ9PT1mKSxnKHt0eXBlOiJkcmFnZW5kIn0p
KX12YXIgcyxsPXRoaXMsZj1aby5ldmVudC50YXJnZXQsaD1sLnBhcmVudE5vZGUsZz1lLm9mKGws
YXJndW1lbnRzKSxwPTAsdj1uKCksZD0iLmRyYWciKyhudWxsPT12PyIiOiItIit2KSxtPVpvLnNl
bGVjdCh1KCkpLm9uKGkrZCxhKS5vbihvK2QsYykseT1JKCkseD10KGgsdik7cj8ocz1yLmFwcGx5
KGwsYXJndW1lbnRzKSxzPVtzLngteFswXSxzLnkteFsxXV0pOnM9WzAsMF0sZyh7dHlwZToiZHJh
Z3N0YXJ0In0pfX12YXIgZT1NKG4sImRyYWciLCJkcmFnc3RhcnQiLCJkcmFnZW5kIikscj1udWxs
LHU9dCh2LFpvLm1vdXNlLCQsIm1vdXNlbW92ZSIsIm1vdXNldXAiKSxpPXQoVixaby50b3VjaCxY
LCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIpO3JldHVybiBuLm9yaWdpbj1mdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LFpvLnJlYmluZChuLGUsIm9uIil9O3ZhciBi
YT1NYXRoLlBJLHdhPTIqYmEsU2E9YmEvMixrYT0xZS02LEVhPWthKmthLEFhPWJhLzE4MCxDYT0x
ODAvYmEsTmE9TWF0aC5TUVJUMix6YT0yLExhPTQ7Wm8uaW50ZXJwb2xhdGVab29tPWZ1bmN0aW9u
KG4sdCl7ZnVuY3Rpb24gZShuKXt2YXIgdD1uKnk7aWYobSl7dmFyIGU9USh2KSxvPWkvKHphKmgp
KihlKm50KE5hKnQrdiktSyh2KSk7cmV0dXJuW3IrbypzLHUrbypsLGkqZS9RKE5hKnQrdildfXJl
dHVybltyK24qcyx1K24qbCxpKk1hdGguZXhwKE5hKnQpXX12YXIgcj1uWzBdLHU9blsxXSxpPW5b
Ml0sbz10WzBdLGE9dFsxXSxjPXRbMl0scz1vLXIsbD1hLXUsZj1zKnMrbCpsLGg9TWF0aC5zcXJ0
KGYpLGc9KGMqYy1pKmkrTGEqZikvKDIqaSp6YSpoKSxwPShjKmMtaSppLUxhKmYpLygyKmMqemEq
aCksdj1NYXRoLmxvZyhNYXRoLnNxcnQoZypnKzEpLWcpLGQ9TWF0aC5sb2coTWF0aC5zcXJ0KHAq
cCsxKS1wKSxtPWQtdix5PShtfHxNYXRoLmxvZyhjL2kpKS9OYTtyZXR1cm4gZS5kdXJhdGlvbj0x
ZTMqeSxlfSxaby5iZWhhdmlvci56b29tPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtuLm9uKEEs
cykub24oUmErIi56b29tIixmKS5vbigiZGJsY2xpY2suem9vbSIsaCkub24oeixsKX1mdW5jdGlv
biB0KG4pe3JldHVyblsoblswXS1TLngpL1MuaywoblsxXS1TLnkpL1Mua119ZnVuY3Rpb24gZShu
KXtyZXR1cm5bblswXSpTLmsrUy54LG5bMV0qUy5rK1MueV19ZnVuY3Rpb24gcihuKXtTLms9TWF0
aC5tYXgoRVswXSxNYXRoLm1pbihFWzFdLG4pKX1mdW5jdGlvbiB1KG4sdCl7dD1lKHQpLFMueCs9
blswXS10WzBdLFMueSs9blsxXS10WzFdfWZ1bmN0aW9uIGkoKXtfJiZfLmRvbWFpbih4LnJhbmdl
KCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybihuLVMueCkvUy5rfSkubWFwKHguaW52ZXJ0KSksdyYm
dy5kb21haW4oYi5yYW5nZSgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4obi1TLnkpL1Mua30pLm1h
cChiLmludmVydCkpfWZ1bmN0aW9uIG8obil7bih7dHlwZToiem9vbXN0YXJ0In0pfWZ1bmN0aW9u
IGEobil7aSgpLG4oe3R5cGU6Inpvb20iLHNjYWxlOlMuayx0cmFuc2xhdGU6W1MueCxTLnldfSl9
ZnVuY3Rpb24gYyhuKXtuKHt0eXBlOiJ6b29tZW5kIn0pfWZ1bmN0aW9uIHMoKXtmdW5jdGlvbiBu
KCl7bD0xLHUoWm8ubW91c2UociksaCksYShzKX1mdW5jdGlvbiBlKCl7Zi5vbihDLG51bGwpLm9u
KE4sbnVsbCksZyhsJiZaby5ldmVudC50YXJnZXQ9PT1pKSxjKHMpfXZhciByPXRoaXMsaT1aby5l
dmVudC50YXJnZXQscz1MLm9mKHIsYXJndW1lbnRzKSxsPTAsZj1aby5zZWxlY3QoV28pLm9uKEMs
bikub24oTixlKSxoPXQoWm8ubW91c2UocikpLGc9SSgpO0guY2FsbChyKSxvKHMpfWZ1bmN0aW9u
IGwoKXtmdW5jdGlvbiBuKCl7dmFyIG49Wm8udG91Y2hlcyhnKTtyZXR1cm4gaD1TLmssbi5mb3JF
YWNoKGZ1bmN0aW9uKG4pe24uaWRlbnRpZmllciBpbiB2JiYodltuLmlkZW50aWZpZXJdPXQobikp
fSksbn1mdW5jdGlvbiBlKCl7dmFyIHQ9Wm8uZXZlbnQudGFyZ2V0O1pvLnNlbGVjdCh0KS5vbihN
LGkpLm9uKF8sZiksYi5wdXNoKHQpO2Zvcih2YXIgZT1aby5ldmVudC5jaGFuZ2VkVG91Y2hlcyxv
PTAsYz1lLmxlbmd0aDtjPm87KytvKXZbZVtvXS5pZGVudGlmaWVyXT1udWxsO3ZhciBzPW4oKSxs
PURhdGUubm93KCk7aWYoMT09PXMubGVuZ3RoKXtpZig1MDA+bC1tKXt2YXIgaD1zWzBdLGc9dlto
LmlkZW50aWZpZXJdO3IoMipTLmspLHUoaCxnKSx5KCksYShwKX1tPWx9ZWxzZSBpZihzLmxlbmd0
aD4xKXt2YXIgaD1zWzBdLHg9c1sxXSx3PWhbMF0teFswXSxrPWhbMV0teFsxXTtkPXcqdytrKmt9
fWZ1bmN0aW9uIGkoKXtmb3IodmFyIG4sdCxlLGksbz1aby50b3VjaGVzKGcpLGM9MCxzPW8ubGVu
Z3RoO3M+YzsrK2MsaT1udWxsKWlmKGU9b1tjXSxpPXZbZS5pZGVudGlmaWVyXSl7aWYodClicmVh
aztuPWUsdD1pfWlmKGkpe3ZhciBsPShsPWVbMF0tblswXSkqbCsobD1lWzFdLW5bMV0pKmwsZj1k
JiZNYXRoLnNxcnQobC9kKTtuPVsoblswXStlWzBdKS8yLChuWzFdK2VbMV0pLzJdLHQ9Wyh0WzBd
K2lbMF0pLzIsKHRbMV0raVsxXSkvMl0scihmKmgpfW09bnVsbCx1KG4sdCksYShwKX1mdW5jdGlv
biBmKCl7aWYoWm8uZXZlbnQudG91Y2hlcy5sZW5ndGgpe2Zvcih2YXIgdD1aby5ldmVudC5jaGFu
Z2VkVG91Y2hlcyxlPTAscj10Lmxlbmd0aDtyPmU7KytlKWRlbGV0ZSB2W3RbZV0uaWRlbnRpZmll
cl07Zm9yKHZhciB1IGluIHYpcmV0dXJuIHZvaWQgbigpfVpvLnNlbGVjdEFsbChiKS5vbih4LG51
bGwpLHcub24oQSxzKS5vbih6LGwpLGsoKSxjKHApfXZhciBoLGc9dGhpcyxwPUwub2YoZyxhcmd1
bWVudHMpLHY9e30sZD0wLHg9Ii56b29tLSIrWm8uZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uaWRl
bnRpZmllcixNPSJ0b3VjaG1vdmUiK3gsXz0idG91Y2hlbmQiK3gsYj1bXSx3PVpvLnNlbGVjdChn
KS5vbihBLG51bGwpLm9uKHosZSksaz1JKCk7SC5jYWxsKGcpLGUoKSxvKHApfWZ1bmN0aW9uIGYo
KXt2YXIgbj1MLm9mKHRoaXMsYXJndW1lbnRzKTtkP2NsZWFyVGltZW91dChkKTooZz10KHA9dnx8
Wm8ubW91c2UodGhpcykpLEguY2FsbCh0aGlzKSxvKG4pKSxkPXNldFRpbWVvdXQoZnVuY3Rpb24o
KXtkPW51bGwsYyhuKX0sNTApLHkoKSxyKE1hdGgucG93KDIsLjAwMipUYSgpKSpTLmspLHUocCxn
KSxhKG4pfWZ1bmN0aW9uIGgoKXt2YXIgbj1MLm9mKHRoaXMsYXJndW1lbnRzKSxlPVpvLm1vdXNl
KHRoaXMpLGk9dChlKSxzPU1hdGgubG9nKFMuaykvTWF0aC5MTjI7byhuKSxyKE1hdGgucG93KDIs
Wm8uZXZlbnQuc2hpZnRLZXk/TWF0aC5jZWlsKHMpLTE6TWF0aC5mbG9vcihzKSsxKSksdShlLGkp
LGEobiksYyhuKX12YXIgZyxwLHYsZCxtLHgsXyxiLHcsUz17eDowLHk6MCxrOjF9LGs9Wzk2MCw1
MDBdLEU9cWEsQT0ibW91c2Vkb3duLnpvb20iLEM9Im1vdXNlbW92ZS56b29tIixOPSJtb3VzZXVw
Lnpvb20iLHo9InRvdWNoc3RhcnQuem9vbSIsTD1NKG4sInpvb21zdGFydCIsInpvb20iLCJ6b29t
ZW5kIik7cmV0dXJuIG4uZXZlbnQ9ZnVuY3Rpb24obil7bi5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49
TC5vZih0aGlzLGFyZ3VtZW50cyksdD1TO1NzP1pvLnNlbGVjdCh0aGlzKS50cmFuc2l0aW9uKCku
ZWFjaCgic3RhcnQuem9vbSIsZnVuY3Rpb24oKXtTPXRoaXMuX19jaGFydF9ffHx7eDowLHk6MCxr
OjF9LG8obil9KS50d2Vlbigiem9vbTp6b29tIixmdW5jdGlvbigpe3ZhciBlPWtbMF0scj1rWzFd
LHU9ZS8yLGk9ci8yLG89Wm8uaW50ZXJwb2xhdGVab29tKFsodS1TLngpL1MuaywoaS1TLnkpL1Mu
ayxlL1Mua10sWyh1LXQueCkvdC5rLChpLXQueSkvdC5rLGUvdC5rXSk7cmV0dXJuIGZ1bmN0aW9u
KHQpe3ZhciByPW8odCksYz1lL3JbMl07dGhpcy5fX2NoYXJ0X189Uz17eDp1LXJbMF0qYyx5Omkt
clsxXSpjLGs6Y30sYShuKX19KS5lYWNoKCJlbmQuem9vbSIsZnVuY3Rpb24oKXtjKG4pfSk6KHRo
aXMuX19jaGFydF9fPVMsbyhuKSxhKG4pLGMobikpfSl9LG4udHJhbnNsYXRlPWZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPXt4Oit0WzBdLHk6K3RbMV0sazpTLmt9LGkoKSxu
KTpbUy54LFMueV19LG4uc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KFM9e3g6Uy54LHk6Uy55LGs6K3R9LGkoKSxuKTpTLmt9LG4uc2NhbGVFeHRlbnQ9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9bnVsbD09dD9xYTpbK3RbMF0sK3RbMV1dLG4p
OkV9LG4uY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PXQmJlsr
dFswXSwrdFsxXV0sbik6dn0sbi5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhrPXQmJlsrdFswXSwrdFsxXV0sbik6a30sbi54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhfPXQseD10LmNvcHkoKSxTPXt4OjAseTowLGs6MX0sbik6X30sbi55PWZ1
bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PXQsYj10LmNvcHkoKSxTPXt4OjAs
eTowLGs6MX0sbik6d30sWm8ucmViaW5kKG4sTCwib24iKX07dmFyIFRhLHFhPVswLDEvMF0sUmE9
Im9ud2hlZWwiaW4gJG8/KFRhPWZ1bmN0aW9uKCl7cmV0dXJuLVpvLmV2ZW50LmRlbHRhWSooWm8u
ZXZlbnQuZGVsdGFNb2RlPzEyMDoxKX0sIndoZWVsIik6Im9ubW91c2V3aGVlbCJpbiAkbz8oVGE9
ZnVuY3Rpb24oKXtyZXR1cm4gWm8uZXZlbnQud2hlZWxEZWx0YX0sIm1vdXNld2hlZWwiKTooVGE9
ZnVuY3Rpb24oKXtyZXR1cm4tWm8uZXZlbnQuZGV0YWlsfSwiTW96TW91c2VQaXhlbFNjcm9sbCIp
O1pvLmNvbG9yPWV0LGV0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlz
LnJnYigpKyIifSxaby5oc2w9cnQ7dmFyIERhPXJ0LnByb3RvdHlwZT1uZXcgZXQ7RGEuYnJpZ2h0
ZXI9ZnVuY3Rpb24obil7cmV0dXJuIG49TWF0aC5wb3coLjcsYXJndW1lbnRzLmxlbmd0aD9uOjEp
LG5ldyBydCh0aGlzLmgsdGhpcy5zLHRoaXMubC9uKX0sRGEuZGFya2VyPWZ1bmN0aW9uKG4pe3Jl
dHVybiBuPU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/bjoxKSxuZXcgcnQodGhpcy5oLHRo
aXMucyxuKnRoaXMubCl9LERhLnJnYj1mdW5jdGlvbigpe3JldHVybiB1dCh0aGlzLmgsdGhpcy5z
LHRoaXMubCl9LFpvLmhjbD1pdDt2YXIgUGE9aXQucHJvdG90eXBlPW5ldyBldDtQYS5icmlnaHRl
cj1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IGl0KHRoaXMuaCx0aGlzLmMsTWF0aC5taW4oMTAwLHRo
aXMubCtVYSooYXJndW1lbnRzLmxlbmd0aD9uOjEpKSl9LFBhLmRhcmtlcj1mdW5jdGlvbihuKXty
ZXR1cm4gbmV3IGl0KHRoaXMuaCx0aGlzLmMsTWF0aC5tYXgoMCx0aGlzLmwtVWEqKGFyZ3VtZW50
cy5sZW5ndGg/bjoxKSkpfSxQYS5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gb3QodGhpcy5oLHRoaXMu
Yyx0aGlzLmwpLnJnYigpfSxaby5sYWI9YXQ7dmFyIFVhPTE4LGphPS45NTA0NyxIYT0xLEZhPTEu
MDg4ODMsT2E9YXQucHJvdG90eXBlPW5ldyBldDtPYS5icmlnaHRlcj1mdW5jdGlvbihuKXtyZXR1
cm4gbmV3IGF0KE1hdGgubWluKDEwMCx0aGlzLmwrVWEqKGFyZ3VtZW50cy5sZW5ndGg/bjoxKSks
dGhpcy5hLHRoaXMuYil9LE9hLmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IGF0KE1hdGgu
bWF4KDAsdGhpcy5sLVVhKihhcmd1bWVudHMubGVuZ3RoP246MSkpLHRoaXMuYSx0aGlzLmIpfSxP
YS5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gY3QodGhpcy5sLHRoaXMuYSx0aGlzLmIpfSxaby5yZ2I9
Z3Q7dmFyIFlhPWd0LnByb3RvdHlwZT1uZXcgZXQ7WWEuYnJpZ2h0ZXI9ZnVuY3Rpb24obil7bj1N
YXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3RoP246MSk7dmFyIHQ9dGhpcy5yLGU9dGhpcy5nLHI9
dGhpcy5iLHU9MzA7cmV0dXJuIHR8fGV8fHI/KHQmJnU+dCYmKHQ9dSksZSYmdT5lJiYoZT11KSxy
JiZ1PnImJihyPXUpLG5ldyBndChNYXRoLm1pbigyNTUsdC9uKSxNYXRoLm1pbigyNTUsZS9uKSxN
YXRoLm1pbigyNTUsci9uKSkpOm5ldyBndCh1LHUsdSl9LFlhLmRhcmtlcj1mdW5jdGlvbihuKXty
ZXR1cm4gbj1NYXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3RoP246MSksbmV3IGd0KG4qdGhpcy5y
LG4qdGhpcy5nLG4qdGhpcy5iKX0sWWEuaHNsPWZ1bmN0aW9uKCl7cmV0dXJuIHl0KHRoaXMucix0
aGlzLmcsdGhpcy5iKX0sWWEudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iIyIrZHQodGhpcy5y
KStkdCh0aGlzLmcpK2R0KHRoaXMuYil9O3ZhciBJYT1aby5tYXAoe2FsaWNlYmx1ZToxNTc5MjM4
MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1
cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNo
ZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0
MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgz
NTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5
ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVl
OjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5
MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTks
ZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3
NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMw
ODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRl
Z3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRh
cmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1n
cmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6
MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lh
OjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3
NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnll
bGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjcz
ODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hh
a2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXdu
Z3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxp
Z2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93
OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5
OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNl
YWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1
MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVs
bG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAs
bWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIs
bWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgz
LG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3By
aW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEz
MDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6
MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgs
b2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZTox
Njc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6
MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZp
b2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3Myxw
ZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkx
OTEwLHB1cnBsZTo4Mzg4NzM2LHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxi
bHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93
bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUw
Njc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNs
YXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3Jl
ZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3Rs
ZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMx
MDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVs
bG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fSk7SWEuZm9yRWFjaChmdW5jdGlvbihu
LHQpe0lhLnNldChuLHB0KHQpKX0pLFpvLmZ1bmN0b3I9YnQsWm8ueGhyPVN0KHd0KSxaby5kc3Y9
ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKG4sZSxpKXthcmd1bWVudHMubGVuZ3RoPDMmJihpPWUs
ZT1udWxsKTt2YXIgbz1rdChuLHQsbnVsbD09ZT9yOnUoZSksaSk7cmV0dXJuIG8ucm93PWZ1bmN0
aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP28ucmVzcG9uc2UobnVsbD09KGU9bik/cjp1
KG4pKTplfSxvfWZ1bmN0aW9uIHIobil7cmV0dXJuIGUucGFyc2Uobi5yZXNwb25zZVRleHQpfWZ1
bmN0aW9uIHUobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLnBhcnNlKHQucmVzcG9uc2VU
ZXh0LG4pfX1mdW5jdGlvbiBpKHQpe3JldHVybiB0Lm1hcChvKS5qb2luKG4pfWZ1bmN0aW9uIG8o
bil7cmV0dXJuIGEudGVzdChuKT8nIicrbi5yZXBsYWNlKC9cIi9nLCciIicpKyciJzpufXZhciBh
PW5ldyBSZWdFeHAoJ1siJytuKyJcbl0iKSxjPW4uY2hhckNvZGVBdCgwKTtyZXR1cm4gZS5wYXJz
ZT1mdW5jdGlvbihuLHQpe3ZhciByO3JldHVybiBlLnBhcnNlUm93cyhuLGZ1bmN0aW9uKG4sZSl7
aWYocilyZXR1cm4gcihuLGUtMSk7dmFyIHU9bmV3IEZ1bmN0aW9uKCJkIiwicmV0dXJuIHsiK24u
bWFwKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KG4pKyI6IGRbIit0KyJdIn0p
LmpvaW4oIiwiKSsifSIpO3I9dD9mdW5jdGlvbihuLGUpe3JldHVybiB0KHUobiksZSl9OnV9KX0s
ZS5wYXJzZVJvd3M9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKCl7aWYobD49cylyZXR1cm4gbztp
Zih1KXJldHVybiB1PSExLGk7dmFyIHQ9bDtpZigzND09PW4uY2hhckNvZGVBdCh0KSl7Zm9yKHZh
ciBlPXQ7ZSsrPHM7KWlmKDM0PT09bi5jaGFyQ29kZUF0KGUpKXtpZigzNCE9PW4uY2hhckNvZGVB
dChlKzEpKWJyZWFrOysrZX1sPWUrMjt2YXIgcj1uLmNoYXJDb2RlQXQoZSsxKTtyZXR1cm4gMTM9
PT1yPyh1PSEwLDEwPT09bi5jaGFyQ29kZUF0KGUrMikmJisrbCk6MTA9PT1yJiYodT0hMCksbi5z
dWJzdHJpbmcodCsxLGUpLnJlcGxhY2UoLyIiL2csJyInKX1mb3IoO3M+bDspe3ZhciByPW4uY2hh
ckNvZGVBdChsKyspLGE9MTtpZigxMD09PXIpdT0hMDtlbHNlIGlmKDEzPT09cil1PSEwLDEwPT09
bi5jaGFyQ29kZUF0KGwpJiYoKytsLCsrYSk7ZWxzZSBpZihyIT09Yyljb250aW51ZTtyZXR1cm4g
bi5zdWJzdHJpbmcodCxsLWEpfXJldHVybiBuLnN1YnN0cmluZyh0KX1mb3IodmFyIHIsdSxpPXt9
LG89e30sYT1bXSxzPW4ubGVuZ3RoLGw9MCxmPTA7KHI9ZSgpKSE9PW87KXtmb3IodmFyIGg9W107
ciE9PWkmJnIhPT1vOyloLnB1c2gocikscj1lKCk7KCF0fHwoaD10KGgsZisrKSkpJiZhLnB1c2go
aCl9cmV0dXJuIGF9LGUuZm9ybWF0PWZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodFswXSkp
cmV0dXJuIGUuZm9ybWF0Um93cyh0KTt2YXIgcj1uZXcgaCx1PVtdO3JldHVybiB0LmZvckVhY2go
ZnVuY3Rpb24obil7Zm9yKHZhciB0IGluIG4pci5oYXModCl8fHUucHVzaChyLmFkZCh0KSl9KSxb
dS5tYXAobykuam9pbihuKV0uY29uY2F0KHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB1Lm1hcChm
dW5jdGlvbihuKXtyZXR1cm4gbyh0W25dKX0pLmpvaW4obil9KSkuam9pbigiXG4iKX0sZS5mb3Jt
YXRSb3dzPWZ1bmN0aW9uKG4pe3JldHVybiBuLm1hcChpKS5qb2luKCJcbiIpfSxlfSxaby5jc3Y9
Wm8uZHN2KCIsIiwidGV4dC9jc3YiKSxaby50c3Y9Wm8uZHN2KCIgICAgIiwidGV4dC90YWItc2Vw
YXJhdGVkLXZhbHVlcyIpLFpvLnRvdWNoPWZ1bmN0aW9uKG4sdCxlKXtpZihhcmd1bWVudHMubGVu
Z3RoPDMmJihlPXQsdD14KCkuY2hhbmdlZFRvdWNoZXMpLHQpZm9yKHZhciByLHU9MCxpPXQubGVu
Z3RoO2k+dTsrK3UpaWYoKHI9dFt1XSkuaWRlbnRpZmllcj09PWUpcmV0dXJuIFoobixyKX07dmFy
IFphLFZhLFhhLCRhLEJhLFdhPVdvW3AoV28sInJlcXVlc3RBbmltYXRpb25GcmFtZSIpXXx8ZnVu
Y3Rpb24obil7c2V0VGltZW91dChuLDE3KX07Wm8udGltZXI9ZnVuY3Rpb24obix0LGUpe3ZhciBy
PWFyZ3VtZW50cy5sZW5ndGg7Mj5yJiYodD0wKSwzPnImJihlPURhdGUubm93KCkpO3ZhciB1PWUr
dCxpPXtjOm4sdDp1LGY6ITEsbjpudWxsfTtWYT9WYS5uPWk6WmE9aSxWYT1pLFhhfHwoJGE9Y2xl
YXJUaW1lb3V0KCRhKSxYYT0xLFdhKEF0KSl9LFpvLnRpbWVyLmZsdXNoPWZ1bmN0aW9uKCl7Q3Qo
KSxOdCgpfSxaby5yb3VuZD1mdW5jdGlvbihuLHQpe3JldHVybiB0P01hdGgucm91bmQobioodD1N
YXRoLnBvdygxMCx0KSkpL3Q6TWF0aC5yb3VuZChuKX07dmFyIEphPVsieSIsInoiLCJhIiwiZiIs
InAiLCJuIiwiXHhiNSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdLm1h
cChMdCk7Wm8uZm9ybWF0UHJlZml4PWZ1bmN0aW9uKG4sdCl7dmFyIGU9MDtyZXR1cm4gbiYmKDA+
biYmKG4qPS0xKSx0JiYobj1aby5yb3VuZChuLHp0KG4sdCkpKSxlPTErTWF0aC5mbG9vcigxZS0x
MitNYXRoLmxvZyhuKS9NYXRoLkxOMTApLGU9TWF0aC5tYXgoLTI0LE1hdGgubWluKDI0LDMqTWF0
aC5mbG9vcigoZS0xKS8zKSkpKSxKYVs4K2UvM119O3ZhciBHYT0vKD86KFtee10pPyhbPD49Xl0p
KT8oWytcLSBdKT8oWyQjXSk/KDApPyhcZCspPygsKT8oXC4tP1xkKyk/KFthLXolXSk/L2ksS2E9
Wm8ubWFwKHtiOmZ1bmN0aW9uKG4pe3JldHVybiBuLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKG4p
e3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG4pfSxvOmZ1bmN0aW9uKG4pe3JldHVybiBuLnRv
U3RyaW5nKDgpfSx4OmZ1bmN0aW9uKG4pe3JldHVybiBuLnRvU3RyaW5nKDE2KX0sWDpmdW5jdGlv
bihuKXtyZXR1cm4gbi50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0sZzpmdW5jdGlvbihuLHQp
e3JldHVybiBuLnRvUHJlY2lzaW9uKHQpfSxlOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4udG9FeHBv
bmVudGlhbCh0KX0sZjpmdW5jdGlvbihuLHQpe3JldHVybiBuLnRvRml4ZWQodCl9LHI6ZnVuY3Rp
b24obix0KXtyZXR1cm4obj1aby5yb3VuZChuLHp0KG4sdCkpKS50b0ZpeGVkKE1hdGgubWF4KDAs
TWF0aC5taW4oMjAsenQobiooMSsxZS0xNSksdCkpKSl9fSksUWE9Wm8udGltZT17fSxuYz1EYXRl
O1J0LnByb3RvdHlwZT17Z2V0RGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDRGF0
ZSgpfSxnZXREYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ0RheSgpfSxnZXRGdWxs
WWVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDRnVsbFllYXIoKX0sZ2V0SG91cnM6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ0hvdXJzKCl9LGdldE1pbGxpc2Vjb25kczpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDTWlsbGlzZWNvbmRzKCl9LGdldE1pbnV0ZXM6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ01pbnV0ZXMoKX0sZ2V0TW9udGg6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ01vbnRoKCl9LGdldFNlY29uZHM6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fLmdldFVUQ1NlY29uZHMoKX0sZ2V0VGltZTpmdW5jdGlvbigpe3JldHVybiB0
aGlzLl8uZ2V0VGltZSgpfSxnZXRUaW1lem9uZU9mZnNldDpmdW5jdGlvbigpe3JldHVybiAwfSx2
YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy52YWx1ZU9mKCl9LHNldERhdGU6ZnVuY3Rp
b24oKXt0Yy5zZXRVVENEYXRlLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXREYXk6ZnVuY3Rp
b24oKXt0Yy5zZXRVVENEYXkuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldEZ1bGxZZWFyOmZ1
bmN0aW9uKCl7dGMuc2V0VVRDRnVsbFllYXIuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldEhv
dXJzOmZ1bmN0aW9uKCl7dGMuc2V0VVRDSG91cnMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNl
dE1pbGxpc2Vjb25kczpmdW5jdGlvbigpe3RjLnNldFVUQ01pbGxpc2Vjb25kcy5hcHBseSh0aGlz
Ll8sYXJndW1lbnRzKX0sc2V0TWludXRlczpmdW5jdGlvbigpe3RjLnNldFVUQ01pbnV0ZXMuYXBw
bHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldE1vbnRoOmZ1bmN0aW9uKCl7dGMuc2V0VVRDTW9udGgu
YXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldFNlY29uZHM6ZnVuY3Rpb24oKXt0Yy5zZXRVVENT
ZWNvbmRzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRUaW1lOmZ1bmN0aW9uKCl7dGMuc2V0
VGltZS5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX19O3ZhciB0Yz1EYXRlLnByb3RvdHlwZTtRYS55
ZWFyPUR0KGZ1bmN0aW9uKG4pe3JldHVybiBuPVFhLmRheShuKSxuLnNldE1vbnRoKDAsMSksbn0s
ZnVuY3Rpb24obix0KXtuLnNldEZ1bGxZZWFyKG4uZ2V0RnVsbFllYXIoKSt0KX0sZnVuY3Rpb24o
bil7cmV0dXJuIG4uZ2V0RnVsbFllYXIoKX0pLFFhLnllYXJzPVFhLnllYXIucmFuZ2UsUWEueWVh
cnMudXRjPVFhLnllYXIudXRjLnJhbmdlLFFhLmRheT1EdChmdW5jdGlvbihuKXt2YXIgdD1uZXcg
bmMoMmUzLDApO3JldHVybiB0LnNldEZ1bGxZZWFyKG4uZ2V0RnVsbFllYXIoKSxuLmdldE1vbnRo
KCksbi5nZXREYXRlKCkpLHR9LGZ1bmN0aW9uKG4sdCl7bi5zZXREYXRlKG4uZ2V0RGF0ZSgpK3Qp
fSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXREYXRlKCktMX0pLFFhLmRheXM9UWEuZGF5LnJhbmdl
LFFhLmRheXMudXRjPVFhLmRheS51dGMucmFuZ2UsUWEuZGF5T2ZZZWFyPWZ1bmN0aW9uKG4pe3Zh
ciB0PVFhLnllYXIobik7cmV0dXJuIE1hdGguZmxvb3IoKG4tdC02ZTQqKG4uZ2V0VGltZXpvbmVP
ZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKS84NjRlNSl9LFsic3VuZGF5IiwibW9uZGF5
IiwidHVlc2RheSIsIndlZG5lc2RheSIsInRodXJzZGF5IiwiZnJpZGF5Iiwic2F0dXJkYXkiXS5m
b3JFYWNoKGZ1bmN0aW9uKG4sdCl7dD03LXQ7dmFyIGU9UWFbbl09RHQoZnVuY3Rpb24obil7cmV0
dXJuKG49UWEuZGF5KG4pKS5zZXREYXRlKG4uZ2V0RGF0ZSgpLShuLmdldERheSgpK3QpJTcpLG59
LGZ1bmN0aW9uKG4sdCl7bi5zZXREYXRlKG4uZ2V0RGF0ZSgpKzcqTWF0aC5mbG9vcih0KSl9LGZ1
bmN0aW9uKG4pe3ZhciBlPVFhLnllYXIobikuZ2V0RGF5KCk7cmV0dXJuIE1hdGguZmxvb3IoKFFh
LmRheU9mWWVhcihuKSsoZSt0KSU3KS83KS0oZSE9PXQpfSk7UWFbbisicyJdPWUucmFuZ2UsUWFb
bisicyJdLnV0Yz1lLnV0Yy5yYW5nZSxRYVtuKyJPZlllYXIiXT1mdW5jdGlvbihuKXt2YXIgZT1R
YS55ZWFyKG4pLmdldERheSgpO3JldHVybiBNYXRoLmZsb29yKChRYS5kYXlPZlllYXIobikrKGUr
dCklNykvNyl9fSksUWEud2Vlaz1RYS5zdW5kYXksUWEud2Vla3M9UWEuc3VuZGF5LnJhbmdlLFFh
LndlZWtzLnV0Yz1RYS5zdW5kYXkudXRjLnJhbmdlLFFhLndlZWtPZlllYXI9UWEuc3VuZGF5T2ZZ
ZWFyO3ZhciBlYz17Ii0iOiIiLF86IiAiLDA6IjAifSxyYz0vXlxzKlxkKy8sdWM9L14lLztaby5s
b2NhbGU9ZnVuY3Rpb24obil7cmV0dXJue251bWJlckZvcm1hdDpUdChuKSx0aW1lRm9ybWF0OlV0
KG4pfX07dmFyIGljPVpvLmxvY2FsZSh7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGlu
ZzpbM10sY3VycmVuY3k6WyIkIiwiIl0sZGF0ZVRpbWU6IiVhICViICVlICVYICVZIixkYXRlOiIl
bS8lZC8lWSIsdGltZToiJUg6JU06JVMiLHBlcmlvZHM6WyJBTSIsIlBNIl0sZGF5czpbIlN1bmRh
eSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNh
dHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwi
U2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIs
Ikp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwi
RGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1
biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdfSk7Wm8uZm9ybWF0PWljLm51
bWJlckZvcm1hdCxaby5nZW89e30sdWUucHJvdG90eXBlPXtzOjAsdDowLGFkZDpmdW5jdGlvbihu
KXtpZShuLHRoaXMudCxvYyksaWUob2Mucyx0aGlzLnMsdGhpcyksdGhpcy5zP3RoaXMudCs9b2Mu
dDp0aGlzLnM9b2MudH0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnM9dGhpcy50PTB9LHZhbHVlT2Y6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zfX07dmFyIG9jPW5ldyB1ZTtaby5nZW8uc3RyZWFtPWZ1
bmN0aW9uKG4sdCl7biYmYWMuaGFzT3duUHJvcGVydHkobi50eXBlKT9hY1tuLnR5cGVdKG4sdCk6
b2Uobix0KX07dmFyIGFjPXtGZWF0dXJlOmZ1bmN0aW9uKG4sdCl7b2Uobi5nZW9tZXRyeSx0KX0s
RmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9bi5mZWF0dXJlcyxyPS0x
LHU9ZS5sZW5ndGg7KytyPHU7KW9lKGVbcl0uZ2VvbWV0cnksdCl9fSxjYz17U3BoZXJlOmZ1bmN0
aW9uKG4sdCl7dC5zcGhlcmUoKX0sUG9pbnQ6ZnVuY3Rpb24obix0KXtuPW4uY29vcmRpbmF0ZXMs
dC5wb2ludChuWzBdLG5bMV0sblsyXSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24obix0KXtmb3IodmFy
IGU9bi5jb29yZGluYXRlcyxyPS0xLHU9ZS5sZW5ndGg7KytyPHU7KW49ZVtyXSx0LnBvaW50KG5b
MF0sblsxXSxuWzJdKX0sTGluZVN0cmluZzpmdW5jdGlvbihuLHQpe2FlKG4uY29vcmRpbmF0ZXMs
dCwwKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uY29vcmRpbmF0
ZXMscj0tMSx1PWUubGVuZ3RoOysrcjx1OylhZShlW3JdLHQsMCl9LFBvbHlnb246ZnVuY3Rpb24o
bix0KXtjZShuLmNvb3JkaW5hdGVzLHQpfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24obix0KXtmb3Io
dmFyIGU9bi5jb29yZGluYXRlcyxyPS0xLHU9ZS5sZW5ndGg7KytyPHU7KWNlKGVbcl0sdCl9LEdl
b21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1uLmdlb21ldHJpZXMscj0t
MSx1PWUubGVuZ3RoOysrcjx1OylvZShlW3JdLHQpfX07Wm8uZ2VvLmFyZWE9ZnVuY3Rpb24obil7
cmV0dXJuIHNjPTAsWm8uZ2VvLnN0cmVhbShuLGZjKSxzY307dmFyIHNjLGxjPW5ldyB1ZSxmYz17
c3BoZXJlOmZ1bmN0aW9uKCl7c2MrPTQqYmF9LHBvaW50OnYsbGluZVN0YXJ0OnYsbGluZUVuZDp2
LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2xjLnJlc2V0KCksZmMubGluZVN0YXJ0PXNlfSxwb2x5
Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIG49MipsYztzYys9MD5uPzQqYmErbjpuLGZjLmxpbmVTdGFy
dD1mYy5saW5lRW5kPWZjLnBvaW50PXZ9fTtaby5nZW8uYm91bmRzPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gbihuLHQpe3gucHVzaChNPVtsPW4saD1uXSksZj50JiYoZj10KSx0PmcmJihnPXQpfWZ1bmN0
aW9uIHQodCxlKXt2YXIgcj1sZShbdCpBYSxlKkFhXSk7aWYobSl7dmFyIHU9aGUobSxyKSxpPVt1
WzFdLC11WzBdLDBdLG89aGUoaSx1KTt2ZShvKSxvPWRlKG8pO3ZhciBjPXQtcCxzPWM+MD8xOi0x
LHY9b1swXSpDYSpzLGQ9dWEoYyk+MTgwO2lmKGReKHY+cypwJiZzKnQ+dikpe3ZhciB5PW9bMV0q
Q2E7eT5nJiYoZz15KX1lbHNlIGlmKHY9KHYrMzYwKSUzNjAtMTgwLGReKHY+cypwJiZzKnQ+dikp
e3ZhciB5PS1vWzFdKkNhO2Y+eSYmKGY9eSl9ZWxzZSBmPmUmJihmPWUpLGU+ZyYmKGc9ZSk7ZD9w
PnQ/YShsLHQpPmEobCxoKSYmKGg9dCk6YSh0LGgpPmEobCxoKSYmKGw9dCk6aD49bD8obD50JiYo
bD10KSx0PmgmJihoPXQpKTp0PnA/YShsLHQpPmEobCxoKSYmKGg9dCk6YSh0LGgpPmEobCxoKSYm
KGw9dCl9ZWxzZSBuKHQsZSk7bT1yLHA9dH1mdW5jdGlvbiBlKCl7Xy5wb2ludD10fWZ1bmN0aW9u
IHIoKXtNWzBdPWwsTVsxXT1oLF8ucG9pbnQ9bixtPW51bGx9ZnVuY3Rpb24gdShuLGUpe2lmKG0p
e3ZhciByPW4tcDt5Kz11YShyKT4xODA/cisocj4wPzM2MDotMzYwKTpyfWVsc2Ugdj1uLGQ9ZTtm
Yy5wb2ludChuLGUpLHQobixlKX1mdW5jdGlvbiBpKCl7ZmMubGluZVN0YXJ0KCl9ZnVuY3Rpb24g
bygpe3UodixkKSxmYy5saW5lRW5kKCksdWEoeSk+a2EmJihsPS0oaD0xODApKSxNWzBdPWwsTVsx
XT1oLG09bnVsbH1mdW5jdGlvbiBhKG4sdCl7cmV0dXJuKHQtPW4pPDA/dCszNjA6dH1mdW5jdGlv
biBjKG4sdCl7cmV0dXJuIG5bMF0tdFswXX1mdW5jdGlvbiBzKG4sdCl7cmV0dXJuIHRbMF08PXRb
MV0/dFswXTw9biYmbjw9dFsxXTpuPHRbMF18fHRbMV08bn12YXIgbCxmLGgsZyxwLHYsZCxtLHks
eCxNLF89e3BvaW50Om4sbGluZVN0YXJ0OmUsbGluZUVuZDpyLHBvbHlnb25TdGFydDpmdW5jdGlv
bigpe18ucG9pbnQ9dSxfLmxpbmVTdGFydD1pLF8ubGluZUVuZD1vLHk9MCxmYy5wb2x5Z29uU3Rh
cnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2ZjLnBvbHlnb25FbmQoKSxfLnBvaW50PW4sXy5s
aW5lU3RhcnQ9ZSxfLmxpbmVFbmQ9ciwwPmxjPyhsPS0oaD0xODApLGY9LShnPTkwKSk6eT5rYT9n
PTkwOi1rYT55JiYoZj0tOTApLE1bMF09bCxNWzFdPWh9fTtyZXR1cm4gZnVuY3Rpb24obil7Zz1o
PS0obD1mPTEvMCkseD1bXSxaby5nZW8uc3RyZWFtKG4sXyk7dmFyIHQ9eC5sZW5ndGg7aWYodCl7
eC5zb3J0KGMpO2Zvcih2YXIgZSxyPTEsdT14WzBdLGk9W3VdO3Q+cjsrK3IpZT14W3JdLHMoZVsw
XSx1KXx8cyhlWzFdLHUpPyhhKHVbMF0sZVsxXSk+YSh1WzBdLHVbMV0pJiYodVsxXT1lWzFdKSxh
KGVbMF0sdVsxXSk+YSh1WzBdLHVbMV0pJiYodVswXT1lWzBdKSk6aS5wdXNoKHU9ZSk7Ci1mb3Io
dmFyIG8sZSxwPS0xLzAsdD1pLmxlbmd0aC0xLHI9MCx1PWlbdF07dD49cjt1PWUsKytyKWU9aVty
XSwobz1hKHVbMV0sZVswXSkpPnAmJihwPW8sbD1lWzBdLGg9dVsxXSl9cmV0dXJuIHg9TT1udWxs
LDEvMD09PWx8fDEvMD09PWY/W1swLzAsMC8wXSxbMC8wLDAvMF1dOltbbCxmXSxbaCxnXV19fSgp
LFpvLmdlby5jZW50cm9pZD1mdW5jdGlvbihuKXtoYz1nYz1wYz12Yz1kYz1tYz15Yz14Yz1NYz1f
Yz1iYz0wLFpvLmdlby5zdHJlYW0obix3Yyk7dmFyIHQ9TWMsZT1fYyxyPWJjLHU9dCp0K2UqZSty
KnI7cmV0dXJuIEVhPnUmJih0PW1jLGU9eWMscj14YyxrYT5nYyYmKHQ9cGMsZT12YyxyPWRjKSx1
PXQqdCtlKmUrcipyLEVhPnUpP1swLzAsMC8wXTpbTWF0aC5hdGFuMihlLHQpKkNhLEcoci9NYXRo
LnNxcnQodSkpKkNhXX07dmFyIGhjLGdjLHBjLHZjLGRjLG1jLHljLHhjLE1jLF9jLGJjLHdjPXtz
cGhlcmU6dixwb2ludDp5ZSxsaW5lU3RhcnQ6TWUsbGluZUVuZDpfZSxwb2x5Z29uU3RhcnQ6ZnVu
Y3Rpb24oKXt3Yy5saW5lU3RhcnQ9YmV9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt3Yy5saW5lU3Rh
cnQ9TWV9fSxTYz1BZSh3ZSxUZSxSZSxbLWJhLC1iYS8yXSksa2M9MWU5O1pvLmdlby5jbGlwRXh0
ZW50PWZ1bmN0aW9uKCl7dmFyIG4sdCxlLHIsdSxpLG89e3N0cmVhbTpmdW5jdGlvbihuKXtyZXR1
cm4gdSYmKHUudmFsaWQ9ITEpLHU9aShuKSx1LnZhbGlkPSEwLHV9LGV4dGVudDpmdW5jdGlvbihh
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1VZShuPSthWzBdWzBdLHQ9K2FbMF1bMV0sZT0r
YVsxXVswXSxyPSthWzFdWzFdKSx1JiYodS52YWxpZD0hMSx1PW51bGwpLG8pOltbbix0XSxbZSxy
XV19fTtyZXR1cm4gby5leHRlbnQoW1swLDBdLFs5NjAsNTAwXV0pfSwoWm8uZ2VvLmNvbmljRXF1
YWxBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIEhlKEZlKX0pLnJhdz1GZSxaby5nZW8uYWxiZXJzPWZ1
bmN0aW9uKCl7cmV0dXJuIFpvLmdlby5jb25pY0VxdWFsQXJlYSgpLnJvdGF0ZShbOTYsMF0pLmNl
bnRlcihbLS42LDM4LjddKS5wYXJhbGxlbHMoWzI5LjUsNDUuNV0pLnNjYWxlKDEwNzApfSxaby5n
ZW8uYWxiZXJzVXNhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXt2YXIgaT1uWzBdLG89blsxXTty
ZXR1cm4gdD1udWxsLGUoaSxvKSx0fHwocihpLG8pLHQpfHx1KGksbyksdH12YXIgdCxlLHIsdSxp
PVpvLmdlby5hbGJlcnMoKSxvPVpvLmdlby5jb25pY0VxdWFsQXJlYSgpLnJvdGF0ZShbMTU0LDBd
KS5jZW50ZXIoWy0yLDU4LjVdKS5wYXJhbGxlbHMoWzU1LDY1XSksYT1aby5nZW8uY29uaWNFcXVh
bEFyZWEoKS5yb3RhdGUoWzE1NywwXSkuY2VudGVyKFstMywxOS45XSkucGFyYWxsZWxzKFs4LDE4
XSksYz17cG9pbnQ6ZnVuY3Rpb24obixlKXt0PVtuLGVdfX07cmV0dXJuIG4uaW52ZXJ0PWZ1bmN0
aW9uKG4pe3ZhciB0PWkuc2NhbGUoKSxlPWkudHJhbnNsYXRlKCkscj0oblswXS1lWzBdKS90LHU9
KG5bMV0tZVsxXSkvdDtyZXR1cm4odT49LjEyJiYuMjM0PnUmJnI+PS0uNDI1JiYtLjIxND5yP286
dT49LjE2NiYmLjIzND51JiZyPj0tLjIxNCYmLS4xMTU+cj9hOmkpLmludmVydChuKX0sbi5zdHJl
YW09ZnVuY3Rpb24obil7dmFyIHQ9aS5zdHJlYW0obiksZT1vLnN0cmVhbShuKSxyPWEuc3RyZWFt
KG4pO3JldHVybntwb2ludDpmdW5jdGlvbihuLHUpe3QucG9pbnQobix1KSxlLnBvaW50KG4sdSks
ci5wb2ludChuLHUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0LnNwaGVyZSgpLGUuc3BoZXJlKCksci5z
cGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5saW5lU3RhcnQoKSxlLmxpbmVTdGFydCgp
LHIubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0LmxpbmVFbmQoKSxlLmxpbmVFbmQo
KSxyLmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dC5wb2x5Z29uU3RhcnQoKSxl
LnBvbHlnb25TdGFydCgpLHIucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0
LnBvbHlnb25FbmQoKSxlLnBvbHlnb25FbmQoKSxyLnBvbHlnb25FbmQoKX19fSxuLnByZWNpc2lv
bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaS5wcmVjaXNpb24odCksby5w
cmVjaXNpb24odCksYS5wcmVjaXNpb24odCksbik6aS5wcmVjaXNpb24oKX0sbi5zY2FsZT1mdW5j
dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaS5zY2FsZSh0KSxvLnNjYWxlKC4zNSp0
KSxhLnNjYWxlKHQpLG4udHJhbnNsYXRlKGkudHJhbnNsYXRlKCkpKTppLnNjYWxlKCl9LG4udHJh
bnNsYXRlPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBpLnRyYW5zbGF0
ZSgpO3ZhciBzPWkuc2NhbGUoKSxsPSt0WzBdLGY9K3RbMV07cmV0dXJuIGU9aS50cmFuc2xhdGUo
dCkuY2xpcEV4dGVudChbW2wtLjQ1NSpzLGYtLjIzOCpzXSxbbCsuNDU1KnMsZisuMjM4KnNdXSku
c3RyZWFtKGMpLnBvaW50LHI9by50cmFuc2xhdGUoW2wtLjMwNypzLGYrLjIwMSpzXSkuY2xpcEV4
dGVudChbW2wtLjQyNSpzK2thLGYrLjEyKnMra2FdLFtsLS4yMTQqcy1rYSxmKy4yMzQqcy1rYV1d
KS5zdHJlYW0oYykucG9pbnQsdT1hLnRyYW5zbGF0ZShbbC0uMjA1KnMsZisuMjEyKnNdKS5jbGlw
RXh0ZW50KFtbbC0uMjE0KnMra2EsZisuMTY2KnMra2FdLFtsLS4xMTUqcy1rYSxmKy4yMzQqcy1r
YV1dKS5zdHJlYW0oYykucG9pbnQsbn0sbi5zY2FsZSgxMDcwKX07dmFyIEVjLEFjLENjLE5jLHpj
LExjLFRjPXtwb2ludDp2LGxpbmVTdGFydDp2LGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6ZnVuY3Rp
b24oKXtBYz0wLFRjLmxpbmVTdGFydD1PZX0scG9seWdvbkVuZDpmdW5jdGlvbigpe1RjLmxpbmVT
dGFydD1UYy5saW5lRW5kPVRjLnBvaW50PXYsRWMrPXVhKEFjLzIpfX0scWM9e3BvaW50OlllLGxp
bmVTdGFydDp2LGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6dixwb2x5Z29uRW5kOnZ9LFJjPXtwb2lu
dDpWZSxsaW5lU3RhcnQ6WGUsbGluZUVuZDokZSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtSYy5s
aW5lU3RhcnQ9QmV9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtSYy5wb2ludD1WZSxSYy5saW5lU3Rh
cnQ9WGUsUmMubGluZUVuZD0kZX19O1pvLmdlby5wYXRoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihu
KXtyZXR1cm4gbiYmKCJmdW5jdGlvbiI9PXR5cGVvZiBhJiZpLnBvaW50UmFkaXVzKCthLmFwcGx5
KHRoaXMsYXJndW1lbnRzKSksbyYmby52YWxpZHx8KG89dShpKSksWm8uZ2VvLnN0cmVhbShuLG8p
KSxpLnJlc3VsdCgpfWZ1bmN0aW9uIHQoKXtyZXR1cm4gbz1udWxsLG59dmFyIGUscix1LGksbyxh
PTQuNTtyZXR1cm4gbi5hcmVhPWZ1bmN0aW9uKG4pe3JldHVybiBFYz0wLFpvLmdlby5zdHJlYW0o
bix1KFRjKSksRWN9LG4uY2VudHJvaWQ9ZnVuY3Rpb24obil7cmV0dXJuIHBjPXZjPWRjPW1jPXlj
PXhjPU1jPV9jPWJjPTAsWm8uZ2VvLnN0cmVhbShuLHUoUmMpKSxiYz9bTWMvYmMsX2MvYmNdOnhj
P1ttYy94Yyx5Yy94Y106ZGM/W3BjL2RjLHZjL2RjXTpbMC8wLDAvMF19LG4uYm91bmRzPWZ1bmN0
aW9uKG4pe3JldHVybiB6Yz1MYz0tKENjPU5jPTEvMCksWm8uZ2VvLnN0cmVhbShuLHUocWMpKSxb
W0NjLE5jXSxbemMsTGNdXX0sbi5wcm9qZWN0aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh1PShlPW4pP24uc3RyZWFtfHxHZShuKTp3dCx0KCkpOmV9LG4uY29udGV4dD1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT0ocj1uKT9uZXcgSWU6
bmV3IFdlKG4pLCJmdW5jdGlvbiIhPXR5cGVvZiBhJiZpLnBvaW50UmFkaXVzKGEpLHQoKSk6cn0s
bi5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVu
Y3Rpb24iPT10eXBlb2YgdD90OihpLnBvaW50UmFkaXVzKCt0KSwrdCksbik6YX0sbi5wcm9qZWN0
aW9uKFpvLmdlby5hbGJlcnNVc2EoKSkuY29udGV4dChudWxsKX0sWm8uZ2VvLnRyYW5zZm9ybT1m
dW5jdGlvbihuKXtyZXR1cm57c3RyZWFtOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBLZSh0KTtmb3Io
dmFyIHIgaW4gbillW3JdPW5bcl07cmV0dXJuIGV9fX0sS2UucHJvdG90eXBlPXtwb2ludDpmdW5j
dGlvbihuLHQpe3RoaXMuc3RyZWFtLnBvaW50KG4sdCl9LHNwaGVyZTpmdW5jdGlvbigpe3RoaXMu
c3RyZWFtLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lU3Rh
cnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLmxpbmVFbmQoKX0scG9seWdvblN0
YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVu
Y3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29uRW5kKCl9fSxaby5nZW8ucHJvamVjdGlvbj1ucixa
by5nZW8ucHJvamVjdGlvbk11dGF0b3I9dHIsKFpvLmdlby5lcXVpcmVjdGFuZ3VsYXI9ZnVuY3Rp
b24oKXtyZXR1cm4gbnIocnIpfSkucmF3PXJyLmludmVydD1ycixaby5nZW8ucm90YXRpb249ZnVu
Y3Rpb24obil7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gdD1uKHRbMF0qQWEsdFsxXSpBYSksdFswXSo9
Q2EsdFsxXSo9Q2EsdH1yZXR1cm4gbj1pcihuWzBdJTM2MCpBYSxuWzFdKkFhLG4ubGVuZ3RoPjI/
blsyXSpBYTowKSx0LmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gdD1uLmludmVydCh0WzBdKkFh
LHRbMV0qQWEpLHRbMF0qPUNhLHRbMV0qPUNhLHR9LHR9LHVyLmludmVydD1ycixaby5nZW8uY2ly
Y2xlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiByP3Iu
YXBwbHkodGhpcyxhcmd1bWVudHMpOnIsdD1pcigtblswXSpBYSwtblsxXSpBYSwwKS5pbnZlcnQs
dT1bXTtyZXR1cm4gZShudWxsLG51bGwsMSx7cG9pbnQ6ZnVuY3Rpb24obixlKXt1LnB1c2gobj10
KG4sZSkpLG5bMF0qPUNhLG5bMV0qPUNhfX0pLHt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpb
dV19fXZhciB0LGUscj1bMCwwXSx1PTY7cmV0dXJuIG4ub3JpZ2luPWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbik6cn0sbi5hbmdsZT1mdW5jdGlvbihyKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oZT1zcigodD0rcikqQWEsdSpBYSksbik6dH0sbi5wcmVjaXNpb249
ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9c3IodCpBYSwodT0rcikqQWEp
LG4pOnV9LG4uYW5nbGUoOTApfSxaby5nZW8uZGlzdGFuY2U9ZnVuY3Rpb24obix0KXt2YXIgZSxy
PSh0WzBdLW5bMF0pKkFhLHU9blsxXSpBYSxpPXRbMV0qQWEsbz1NYXRoLnNpbihyKSxhPU1hdGgu
Y29zKHIpLGM9TWF0aC5zaW4odSkscz1NYXRoLmNvcyh1KSxsPU1hdGguc2luKGkpLGY9TWF0aC5j
b3MoaSk7cmV0dXJuIE1hdGguYXRhbjIoTWF0aC5zcXJ0KChlPWYqbykqZSsoZT1zKmwtYypmKmEp
KmUpLGMqbCtzKmYqYSl9LFpvLmdlby5ncmF0aWN1bGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7
cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6dCgpfX1mdW5jdGlvbiB0
KCl7cmV0dXJuIFpvLnJhbmdlKE1hdGguY2VpbChpL2QpKmQsdSxkKS5tYXAoaCkuY29uY2F0KFpv
LnJhbmdlKE1hdGguY2VpbChzL20pKm0sYyxtKS5tYXAoZykpLmNvbmNhdChaby5yYW5nZShNYXRo
LmNlaWwoci9wKSpwLGUscCkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiB1YShuJWQpPmthfSku
bWFwKGwpKS5jb25jYXQoWm8ucmFuZ2UoTWF0aC5jZWlsKGEvdikqdixvLHYpLmZpbHRlcihmdW5j
dGlvbihuKXtyZXR1cm4gdWEobiVtKT5rYX0pLm1hcChmKSl9dmFyIGUscix1LGksbyxhLGMscyxs
LGYsaCxnLHA9MTAsdj1wLGQ9OTAsbT0zNjAseT0yLjU7cmV0dXJuIG4ubGluZXM9ZnVuY3Rpb24o
KXtyZXR1cm4gdCgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29v
cmRpbmF0ZXM6bn19KX0sbi5vdXRsaW5lPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IlBvbHlnb24i
LGNvb3JkaW5hdGVzOltoKGkpLmNvbmNhdChnKGMpLnNsaWNlKDEpLGgodSkucmV2ZXJzZSgpLnNs
aWNlKDEpLGcocykucmV2ZXJzZSgpLnNsaWNlKDEpKV19fSxuLmV4dGVudD1mdW5jdGlvbih0KXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uLm1ham9yRXh0ZW50KHQpLm1pbm9yRXh0ZW50KHQpOm4u
bWlub3JFeHRlbnQoKX0sbi5tYWpvckV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oaT0rdFswXVswXSx1PSt0WzFdWzBdLHM9K3RbMF1bMV0sYz0rdFsxXVsxXSxpPnUm
Jih0PWksaT11LHU9dCkscz5jJiYodD1zLHM9YyxjPXQpLG4ucHJlY2lzaW9uKHkpKTpbW2ksc10s
W3UsY11dfSxuLm1pbm9yRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhyPSt0WzBdWzBdLGU9K3RbMV1bMF0sYT0rdFswXVsxXSxvPSt0WzFdWzFdLHI+ZSYmKHQ9cixy
PWUsZT10KSxhPm8mJih0PWEsYT1vLG89dCksbi5wcmVjaXNpb24oeSkpOltbcixhXSxbZSxvXV19
LG4uc3RlcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uLm1ham9yU3RlcCh0
KS5taW5vclN0ZXAodCk6bi5taW5vclN0ZXAoKX0sbi5tYWpvclN0ZXA9ZnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3RbMF0sbT0rdFsxXSxuKTpbZCxtXX0sbi5taW5vclN0
ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9K3RbMF0sdj0rdFsxXSxu
KTpbcCx2XX0sbi5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHk9K3QsbD1mcihhLG8sOTApLGY9aHIocixlLHkpLGg9ZnIocyxjLDkwKSxnPWhyKGksdSx5KSxu
KTp5fSxuLm1ham9yRXh0ZW50KFtbLTE4MCwtOTAra2FdLFsxODAsOTAta2FdXSkubWlub3JFeHRl
bnQoW1stMTgwLC04MC1rYV0sWzE4MCw4MCtrYV1dKX0sWm8uZ2VvLmdyZWF0QXJjPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gbigpe3JldHVybnt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczpbdHx8
ci5hcHBseSh0aGlzLGFyZ3VtZW50cyksZXx8dS5hcHBseSh0aGlzLGFyZ3VtZW50cyldfX12YXIg
dCxlLHI9Z3IsdT1wcjtyZXR1cm4gbi5kaXN0YW5jZT1mdW5jdGlvbigpe3JldHVybiBaby5nZW8u
ZGlzdGFuY2UodHx8ci5hcHBseSh0aGlzLGFyZ3VtZW50cyksZXx8dS5hcHBseSh0aGlzLGFyZ3Vt
ZW50cykpfSxuLnNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1l
LHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/bnVsbDplLG4pOnJ9LG4udGFyZ2V0PWZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsZT0iZnVuY3Rpb24iPT10eXBlb2YgdD9udWxs
OnQsbik6dX0sbi5wcmVjaXNpb249ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9u
OjB9LG59LFpvLmdlby5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuLHQpe3JldHVybiB2cihuWzBdKkFh
LG5bMV0qQWEsdFswXSpBYSx0WzFdKkFhKX0sWm8uZ2VvLmxlbmd0aD1mdW5jdGlvbihuKXtyZXR1
cm4gRGM9MCxaby5nZW8uc3RyZWFtKG4sUGMpLERjfTt2YXIgRGMsUGM9e3NwaGVyZTp2LHBvaW50
OnYsbGluZVN0YXJ0OmRyLGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6dixwb2x5Z29uRW5kOnZ9LFVj
PW1yKGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnNxcnQoMi8oMStuKSl9LGZ1bmN0aW9uKG4pe3Jl
dHVybiAyKk1hdGguYXNpbihuLzIpfSk7KFpvLmdlby5hemltdXRoYWxFcXVhbEFyZWE9ZnVuY3Rp
b24oKXtyZXR1cm4gbnIoVWMpfSkucmF3PVVjO3ZhciBqYz1tcihmdW5jdGlvbihuKXt2YXIgdD1N
YXRoLmFjb3Mobik7cmV0dXJuIHQmJnQvTWF0aC5zaW4odCl9LHd0KTsoWm8uZ2VvLmF6aW11dGhh
bEVxdWlkaXN0YW50PWZ1bmN0aW9uKCl7cmV0dXJuIG5yKGpjKX0pLnJhdz1qYywoWm8uZ2VvLmNv
bmljQ29uZm9ybWFsPWZ1bmN0aW9uKCl7cmV0dXJuIEhlKHlyKX0pLnJhdz15ciwoWm8uZ2VvLmNv
bmljRXF1aWRpc3RhbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gSGUoeHIpfSkucmF3PXhyO3ZhciBIYz1t
cihmdW5jdGlvbihuKXtyZXR1cm4gMS9ufSxNYXRoLmF0YW4pOyhaby5nZW8uZ25vbW9uaWM9ZnVu
Y3Rpb24oKXtyZXR1cm4gbnIoSGMpfSkucmF3PUhjLE1yLmludmVydD1mdW5jdGlvbihuLHQpe3Jl
dHVybltuLDIqTWF0aC5hdGFuKE1hdGguZXhwKHQpKS1TYV19LChaby5nZW8ubWVyY2F0b3I9ZnVu
Y3Rpb24oKXtyZXR1cm4gX3IoTXIpfSkucmF3PU1yO3ZhciBGYz1tcihmdW5jdGlvbigpe3JldHVy
biAxfSxNYXRoLmFzaW4pOyhaby5nZW8ub3J0aG9ncmFwaGljPWZ1bmN0aW9uKCl7cmV0dXJuIG5y
KEZjKX0pLnJhdz1GYzt2YXIgT2M9bXIoZnVuY3Rpb24obil7cmV0dXJuIDEvKDErbil9LGZ1bmN0
aW9uKG4pe3JldHVybiAyKk1hdGguYXRhbihuKX0pOyhaby5nZW8uc3RlcmVvZ3JhcGhpYz1mdW5j
dGlvbigpe3JldHVybiBucihPYyl9KS5yYXc9T2MsYnIuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0
dXJuWy10LDIqTWF0aC5hdGFuKE1hdGguZXhwKG4pKS1TYV19LChaby5nZW8udHJhbnN2ZXJzZU1l
cmNhdG9yPWZ1bmN0aW9uKCl7dmFyIG49X3IoYnIpLHQ9bi5jZW50ZXIsZT1uLnJvdGF0ZTtyZXR1
cm4gbi5jZW50ZXI9ZnVuY3Rpb24obil7cmV0dXJuIG4/dChbLW5bMV0sblswXV0pOihuPXQoKSxb
blsxXSwtblswXV0pfSxuLnJvdGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gbj9lKFtuWzBdLG5bMV0s
bi5sZW5ndGg+Mj9uWzJdKzkwOjkwXSk6KG49ZSgpLFtuWzBdLG5bMV0sblsyXS05MF0pfSxlKFsw
LDAsOTBdKX0pLnJhdz1icixaby5nZW9tPXt9LFpvLmdlb20uaHVsbD1mdW5jdGlvbihuKXtmdW5j
dGlvbiB0KG4pe2lmKG4ubGVuZ3RoPDMpcmV0dXJuW107dmFyIHQsdT1idChlKSxpPWJ0KHIpLG89
bi5sZW5ndGgsYT1bXSxjPVtdO2Zvcih0PTA7bz50O3QrKylhLnB1c2goWyt1LmNhbGwodGhpcyxu
W3RdLHQpLCtpLmNhbGwodGhpcyxuW3RdLHQpLHRdKTtmb3IoYS5zb3J0KEVyKSx0PTA7bz50O3Qr
KyljLnB1c2goW2FbdF1bMF0sLWFbdF1bMV1dKTt2YXIgcz1rcihhKSxsPWtyKGMpLGY9bFswXT09
PXNbMF0saD1sW2wubGVuZ3RoLTFdPT09c1tzLmxlbmd0aC0xXSxnPVtdO2Zvcih0PXMubGVuZ3Ro
LTE7dD49MDstLXQpZy5wdXNoKG5bYVtzW3RdXVsyXV0pO2Zvcih0PStmO3Q8bC5sZW5ndGgtaDsr
K3QpZy5wdXNoKG5bYVtsW3RdXVsyXV0pO3JldHVybiBnfXZhciBlPXdyLHI9U3I7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/dChuKToodC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhlPW4sdCk6ZX0sdC55PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhy
PW4sdCk6cn0sdCl9LFpvLmdlb20ucG9seWdvbj1mdW5jdGlvbihuKXtyZXR1cm4gc2EobixZYyks
bn07dmFyIFljPVpvLmdlb20ucG9seWdvbi5wcm90b3R5cGU9W107WWMuYXJlYT1mdW5jdGlvbigp
e2Zvcih2YXIgbix0PS0xLGU9dGhpcy5sZW5ndGgscj10aGlzW2UtMV0sdT0wOysrdDxlOyluPXIs
cj10aGlzW3RdLHUrPW5bMV0qclswXS1uWzBdKnJbMV07cmV0dXJuLjUqdX0sWWMuY2VudHJvaWQ9
ZnVuY3Rpb24obil7dmFyIHQsZSxyPS0xLHU9dGhpcy5sZW5ndGgsaT0wLG89MCxhPXRoaXNbdS0x
XTtmb3IoYXJndW1lbnRzLmxlbmd0aHx8KG49LTEvKDYqdGhpcy5hcmVhKCkpKTsrK3I8dTspdD1h
LGE9dGhpc1tyXSxlPXRbMF0qYVsxXS1hWzBdKnRbMV0saSs9KHRbMF0rYVswXSkqZSxvKz0odFsx
XSthWzFdKSplO3JldHVybltpKm4sbypuXX0sWWMuY2xpcD1mdW5jdGlvbihuKXtmb3IodmFyIHQs
ZSxyLHUsaSxvLGE9TnIobiksYz0tMSxzPXRoaXMubGVuZ3RoLU5yKHRoaXMpLGw9dGhpc1tzLTFd
OysrYzxzOyl7Zm9yKHQ9bi5zbGljZSgpLG4ubGVuZ3RoPTAsdT10aGlzW2NdLGk9dFsocj10Lmxl
bmd0aC1hKS0xXSxlPS0xOysrZTxyOylvPXRbZV0sQXIobyxsLHUpPyhBcihpLGwsdSl8fG4ucHVz
aChDcihpLG8sbCx1KSksbi5wdXNoKG8pKTpBcihpLGwsdSkmJm4ucHVzaChDcihpLG8sbCx1KSks
aT1vO2EmJm4ucHVzaChuWzBdKSxsPXV9cmV0dXJuIG59O3ZhciBJYyxaYyxWYyxYYywkYyxCYz1b
XSxXYz1bXTtVci5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbigpe2Zvcih2YXIgbix0PXRoaXMu
ZWRnZXMsZT10Lmxlbmd0aDtlLS07KW49dFtlXS5lZGdlLG4uYiYmbi5hfHx0LnNwbGljZShlLDEp
O3JldHVybiB0LnNvcnQoSHIpLHQubGVuZ3RofSxXci5wcm90b3R5cGU9e3N0YXJ0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuZWRnZS5sPT09dGhpcy5zaXRlP3RoaXMuZWRnZS5hOnRoaXMuZWRnZS5i
fSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlLmw9PT10aGlzLnNpdGU/dGhpcy5lZGdl
LmI6dGhpcy5lZGdlLmF9fSxKci5wcm90b3R5cGU9e2luc2VydDpmdW5jdGlvbihuLHQpe3ZhciBl
LHIsdTtpZihuKXtpZih0LlA9bix0Lk49bi5OLG4uTiYmKG4uTi5QPXQpLG4uTj10LG4uUil7Zm9y
KG49bi5SO24uTDspbj1uLkw7bi5MPXR9ZWxzZSBuLlI9dDtlPW59ZWxzZSB0aGlzLl8/KG49bnUo
dGhpcy5fKSx0LlA9bnVsbCx0Lk49bixuLlA9bi5MPXQsZT1uKToodC5QPXQuTj1udWxsLHRoaXMu
Xz10LGU9bnVsbCk7Zm9yKHQuTD10LlI9bnVsbCx0LlU9ZSx0LkM9ITAsbj10O2UmJmUuQzspcj1l
LlUsZT09PXIuTD8odT1yLlIsdSYmdS5DPyhlLkM9dS5DPSExLHIuQz0hMCxuPXIpOihuPT09ZS5S
JiYoS3IodGhpcyxlKSxuPWUsZT1uLlUpLGUuQz0hMSxyLkM9ITAsUXIodGhpcyxyKSkpOih1PXIu
TCx1JiZ1LkM/KGUuQz11LkM9ITEsci5DPSEwLG49cik6KG49PT1lLkwmJihRcih0aGlzLGUpLG49
ZSxlPW4uVSksZS5DPSExLHIuQz0hMCxLcih0aGlzLHIpKSksZT1uLlU7dGhpcy5fLkM9ITF9LHJl
bW92ZTpmdW5jdGlvbihuKXtuLk4mJihuLk4uUD1uLlApLG4uUCYmKG4uUC5OPW4uTiksbi5OPW4u
UD1udWxsO3ZhciB0LGUscix1PW4uVSxpPW4uTCxvPW4uUjtpZihlPWk/bz9udShvKTppOm8sdT91
Lkw9PT1uP3UuTD1lOnUuUj1lOnRoaXMuXz1lLGkmJm8/KHI9ZS5DLGUuQz1uLkMsZS5MPWksaS5V
PWUsZSE9PW8/KHU9ZS5VLGUuVT1uLlUsbj1lLlIsdS5MPW4sZS5SPW8sby5VPWUpOihlLlU9dSx1
PWUsbj1lLlIpKToocj1uLkMsbj1lKSxuJiYobi5VPXUpLCFyKXtpZihuJiZuLkMpcmV0dXJuIG4u
Qz0hMSx2b2lkIDA7ZG97aWYobj09PXRoaXMuXylicmVhaztpZihuPT09dS5MKXtpZih0PXUuUix0
LkMmJih0LkM9ITEsdS5DPSEwLEtyKHRoaXMsdSksdD11LlIpLHQuTCYmdC5MLkN8fHQuUiYmdC5S
LkMpe3QuUiYmdC5SLkN8fCh0LkwuQz0hMSx0LkM9ITAsUXIodGhpcyx0KSx0PXUuUiksdC5DPXUu
Qyx1LkM9dC5SLkM9ITEsS3IodGhpcyx1KSxuPXRoaXMuXzticmVha319ZWxzZSBpZih0PXUuTCx0
LkMmJih0LkM9ITEsdS5DPSEwLFFyKHRoaXMsdSksdD11LkwpLHQuTCYmdC5MLkN8fHQuUiYmdC5S
LkMpe3QuTCYmdC5MLkN8fCh0LlIuQz0hMSx0LkM9ITAsS3IodGhpcyx0KSx0PXUuTCksdC5DPXUu
Qyx1LkM9dC5MLkM9ITEsUXIodGhpcyx1KSxuPXRoaXMuXzticmVha310LkM9ITAsbj11LHU9dS5V
fXdoaWxlKCFuLkMpO24mJihuLkM9ITEpfX19LFpvLmdlb20udm9yb25vaT1mdW5jdGlvbihuKXtm
dW5jdGlvbiB0KG4pe3ZhciB0PW5ldyBBcnJheShuLmxlbmd0aCkscj1hWzBdWzBdLHU9YVswXVsx
XSxpPWFbMV1bMF0sbz1hWzFdWzFdO3JldHVybiB0dShlKG4pLGEpLmNlbGxzLmZvckVhY2goZnVu
Y3Rpb24oZSxhKXt2YXIgYz1lLmVkZ2VzLHM9ZS5zaXRlLGw9dFthXT1jLmxlbmd0aD9jLm1hcChm
dW5jdGlvbihuKXt2YXIgdD1uLnN0YXJ0KCk7cmV0dXJuW3QueCx0LnldfSk6cy54Pj1yJiZzLng8
PWkmJnMueT49dSYmcy55PD1vP1tbcixvXSxbaSxvXSxbaSx1XSxbcix1XV06W107bC5wb2ludD1u
W2FdfSksdH1mdW5jdGlvbiBlKG4pe3JldHVybiBuLm1hcChmdW5jdGlvbihuLHQpe3JldHVybnt4
Ok1hdGgucm91bmQoaShuLHQpL2thKSprYSx5Ok1hdGgucm91bmQobyhuLHQpL2thKSprYSxpOnR9
fSl9dmFyIHI9d3IsdT1TcixpPXIsbz11LGE9SmM7cmV0dXJuIG4/dChuKToodC5saW5rcz1mdW5j
dGlvbihuKXtyZXR1cm4gdHUoZShuKSkuZWRnZXMuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBu
LmwmJm4ucn0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm57c291cmNlOm5bdC5sLmldLHRhcmdldDpu
W3Quci5pXX19KX0sdC50cmlhbmdsZXM9ZnVuY3Rpb24obil7dmFyIHQ9W107cmV0dXJuIHR1KGUo
bikpLmNlbGxzLmZvckVhY2goZnVuY3Rpb24oZSxyKXtmb3IodmFyIHUsaSxvPWUuc2l0ZSxhPWUu
ZWRnZXMuc29ydChIciksYz0tMSxzPWEubGVuZ3RoLGw9YVtzLTFdLmVkZ2UsZj1sLmw9PT1vP2wu
cjpsLmw7KytjPHM7KXU9bCxpPWYsbD1hW2NdLmVkZ2UsZj1sLmw9PT1vP2wucjpsLmwscjxpLmkm
JnI8Zi5pJiZydShvLGksZik8MCYmdC5wdXNoKFtuW3JdLG5baS5pXSxuW2YuaV1dKX0pLHR9LHQu
eD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1idChyPW4pLHQpOnJ9LHQu
eT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1idCh1PW4pLHQpOnV9LHQu
Y2xpcEV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1udWxsPT1u
P0pjOm4sdCk6YT09PUpjP251bGw6YX0sdC5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoP3QuY2xpcEV4dGVudChuJiZbWzAsMF0sbl0pOmE9PT1KYz9udWxsOmEmJmFbMV19
LHQpfTt2YXIgSmM9W1stMWU2LC0xZTZdLFsxZTYsMWU2XV07Wm8uZ2VvbS5kZWxhdW5heT1mdW5j
dGlvbihuKXtyZXR1cm4gWm8uZ2VvbS52b3Jvbm9pKCkudHJpYW5nbGVzKG4pfSxaby5nZW9tLnF1
YWR0cmVlPWZ1bmN0aW9uKG4sdCxlLHIsdSl7ZnVuY3Rpb24gaShuKXtmdW5jdGlvbiBpKG4sdCxl
LHIsdSxpLG8sYSl7aWYoIWlzTmFOKGUpJiYhaXNOYU4ocikpaWYobi5sZWFmKXt2YXIgYz1uLngs
bD1uLnk7aWYobnVsbCE9YylpZih1YShjLWUpK3VhKGwtcik8LjAxKXMobix0LGUscix1LGksbyxh
KTtlbHNle3ZhciBmPW4ucG9pbnQ7bi54PW4ueT1uLnBvaW50PW51bGwscyhuLGYsYyxsLHUsaSxv
LGEpLHMobix0LGUscix1LGksbyxhKX1lbHNlIG4ueD1lLG4ueT1yLG4ucG9pbnQ9dH1lbHNlIHMo
bix0LGUscix1LGksbyxhKX1mdW5jdGlvbiBzKG4sdCxlLHIsdSxvLGEsYyl7dmFyIHM9LjUqKHUr
YSksbD0uNSoobytjKSxmPWU+PXMsaD1yPj1sLGc9KGg8PDEpK2Y7bi5sZWFmPSExLG49bi5ub2Rl
c1tnXXx8KG4ubm9kZXNbZ109b3UoKSksZj91PXM6YT1zLGg/bz1sOmM9bCxpKG4sdCxlLHIsdSxv
LGEsYyl9dmFyIGwsZixoLGcscCx2LGQsbSx5LHg9YnQoYSksTT1idChjKTtpZihudWxsIT10KXY9
dCxkPWUsbT1yLHk9dTtlbHNlIGlmKG09eT0tKHY9ZD0xLzApLGY9W10saD1bXSxwPW4ubGVuZ3Ro
LG8pZm9yKGc9MDtwPmc7KytnKWw9bltnXSxsLng8diYmKHY9bC54KSxsLnk8ZCYmKGQ9bC55KSxs
Lng+bSYmKG09bC54KSxsLnk+eSYmKHk9bC55KSxmLnB1c2gobC54KSxoLnB1c2gobC55KTtlbHNl
IGZvcihnPTA7cD5nOysrZyl7dmFyIF89K3gobD1uW2ddLGcpLGI9K00obCxnKTt2Pl8mJih2PV8p
LGQ+YiYmKGQ9YiksXz5tJiYobT1fKSxiPnkmJih5PWIpLGYucHVzaChfKSxoLnB1c2goYil9dmFy
IHc9bS12LFM9eS1kO3c+Uz95PWQrdzptPXYrUzt2YXIgaz1vdSgpO2lmKGsuYWRkPWZ1bmN0aW9u
KG4pe2koayxuLCt4KG4sKytnKSwrTShuLGcpLHYsZCxtLHkpfSxrLnZpc2l0PWZ1bmN0aW9uKG4p
e2F1KG4sayx2LGQsbSx5KX0sZz0tMSxudWxsPT10KXtmb3IoOysrZzxwOylpKGssbltnXSxmW2dd
LGhbZ10sdixkLG0seSk7LS1nfWVsc2Ugbi5mb3JFYWNoKGsuYWRkKTtyZXR1cm4gZj1oPW49bD1u
dWxsLGt9dmFyIG8sYT13cixjPVNyO3JldHVybihvPWFyZ3VtZW50cy5sZW5ndGgpPyhhPXV1LGM9
aXUsMz09PW8mJih1PWUscj10LGU9dD0wKSxpKG4pKTooaS54PWZ1bmN0aW9uKG4pe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhhPW4saSk6YX0saS55PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhjPW4saSk6Y30saS5leHRlbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG51bGw9PW4/dD1lPXI9dT1udWxsOih0PStuWzBdWzBdLGU9K25bMF1bMV0scj0r
blsxXVswXSx1PStuWzFdWzFdKSxpKTpudWxsPT10P251bGw6W1t0LGVdLFtyLHVdXX0saS5zaXpl
PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT1uP3Q9ZT1yPXU9bnVs
bDoodD1lPTAscj0rblswXSx1PStuWzFdKSxpKTpudWxsPT10P251bGw6W3ItdCx1LWVdfSxpKX0s
Wm8uaW50ZXJwb2xhdGVSZ2I9Y3UsWm8uaW50ZXJwb2xhdGVPYmplY3Q9c3UsWm8uaW50ZXJwb2xh
dGVOdW1iZXI9bHUsWm8uaW50ZXJwb2xhdGVTdHJpbmc9ZnU7dmFyIEdjPS9bLStdPyg/OlxkK1wu
P1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxLYz1uZXcgUmVnRXhwKEdjLnNvdXJjZSwi
ZyIpO1pvLmludGVycG9sYXRlPWh1LFpvLmludGVycG9sYXRvcnM9W2Z1bmN0aW9uKG4sdCl7dmFy
IGU9dHlwZW9mIHQ7cmV0dXJuKCJzdHJpbmciPT09ZT9JYS5oYXModCl8fC9eKCN8cmdiXCh8aHNs
XCgpLy50ZXN0KHQpP2N1OmZ1OnQgaW5zdGFuY2VvZiBldD9jdTpBcnJheS5pc0FycmF5KHQpP2d1
OiJvYmplY3QiPT09ZSYmaXNOYU4odCk/c3U6bHUpKG4sdCl9XSxaby5pbnRlcnBvbGF0ZUFycmF5
PWd1O3ZhciBRYz1mdW5jdGlvbigpe3JldHVybiB3dH0sbnM9Wm8ubWFwKHtsaW5lYXI6UWMscG9s
eTpNdSxxdWFkOmZ1bmN0aW9uKCl7cmV0dXJuIG11fSxjdWJpYzpmdW5jdGlvbigpe3JldHVybiB5
dX0sc2luOmZ1bmN0aW9uKCl7cmV0dXJuIF91fSxleHA6ZnVuY3Rpb24oKXtyZXR1cm4gYnV9LGNp
cmNsZTpmdW5jdGlvbigpe3JldHVybiB3dX0sZWxhc3RpYzpTdSxiYWNrOmt1LGJvdW5jZTpmdW5j
dGlvbigpe3JldHVybiBFdX19KSx0cz1aby5tYXAoeyJpbiI6d3Qsb3V0OnZ1LCJpbi1vdXQiOmR1
LCJvdXQtaW4iOmZ1bmN0aW9uKG4pe3JldHVybiBkdSh2dShuKSl9fSk7Wm8uZWFzZT1mdW5jdGlv
bihuKXt2YXIgdD1uLmluZGV4T2YoIi0iKSxlPXQ+PTA/bi5zdWJzdHJpbmcoMCx0KTpuLHI9dD49
MD9uLnN1YnN0cmluZyh0KzEpOiJpbiI7cmV0dXJuIGU9bnMuZ2V0KGUpfHxRYyxyPXRzLmdldChy
KXx8d3QscHUocihlLmFwcGx5KG51bGwsVm8uY2FsbChhcmd1bWVudHMsMSkpKSl9LFpvLmludGVy
cG9sYXRlSGNsPUF1LFpvLmludGVycG9sYXRlSHNsPUN1LFpvLmludGVycG9sYXRlTGFiPU51LFpv
LmludGVycG9sYXRlUm91bmQ9enUsWm8udHJhbnNmb3JtPWZ1bmN0aW9uKG4pe3ZhciB0PSRvLmNy
ZWF0ZUVsZW1lbnROUyhaby5ucy5wcmVmaXguc3ZnLCJnIik7cmV0dXJuKFpvLnRyYW5zZm9ybT1m
dW5jdGlvbihuKXtpZihudWxsIT1uKXt0LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixuKTt2YXIg
ZT10LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCl9cmV0dXJuIG5ldyBMdShlP2UubWF0
cml4OmVzKX0pKG4pfSxMdS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4idHJh
bnNsYXRlKCIrdGhpcy50cmFuc2xhdGUrIilyb3RhdGUoIit0aGlzLnJvdGF0ZSsiKXNrZXdYKCIr
dGhpcy5za2V3KyIpc2NhbGUoIit0aGlzLnNjYWxlKyIpIn07dmFyIGVzPXthOjEsYjowLGM6MCxk
OjEsZTowLGY6MH07Wm8uaW50ZXJwb2xhdGVUcmFuc2Zvcm09RHUsWm8ubGF5b3V0PXt9LFpvLmxh
eW91dC5idW5kbGU9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obil7Zm9yKHZhciB0PVtdLGU9
LTEscj1uLmxlbmd0aDsrK2U8cjspdC5wdXNoKGp1KG5bZV0pKTtyZXR1cm4gdH19LFpvLmxheW91
dC5jaG9yZD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt2YXIgbixzLGYsaCxnLHA9e30sdj1bXSxk
PVpvLnJhbmdlKGkpLG09W107Zm9yKGU9W10scj1bXSxuPTAsaD0tMTsrK2g8aTspe2ZvcihzPTAs
Zz0tMTsrK2c8aTspcys9dVtoXVtnXTt2LnB1c2gocyksbS5wdXNoKFpvLnJhbmdlKGkpKSxuKz1z
fWZvcihvJiZkLnNvcnQoZnVuY3Rpb24obix0KXtyZXR1cm4gbyh2W25dLHZbdF0pfSksYSYmbS5m
b3JFYWNoKGZ1bmN0aW9uKG4sdCl7bi5zb3J0KGZ1bmN0aW9uKG4sZSl7cmV0dXJuIGEodVt0XVtu
XSx1W3RdW2VdKX0pfSksbj0od2EtbCppKS9uLHM9MCxoPS0xOysraDxpOyl7Zm9yKGY9cyxnPS0x
OysrZzxpOyl7dmFyIHk9ZFtoXSx4PW1beV1bZ10sTT11W3ldW3hdLF89cyxiPXMrPU0qbjtwW3kr
Ii0iK3hdPXtpbmRleDp5LHN1YmluZGV4Ongsc3RhcnRBbmdsZTpfLGVuZEFuZ2xlOmIsdmFsdWU6
TX19clt5XT17aW5kZXg6eSxzdGFydEFuZ2xlOmYsZW5kQW5nbGU6cyx2YWx1ZToocy1mKS9ufSxz
Kz1sfWZvcihoPS0xOysraDxpOylmb3IoZz1oLTE7KytnPGk7KXt2YXIgdz1wW2grIi0iK2ddLFM9
cFtnKyItIitoXTsody52YWx1ZXx8Uy52YWx1ZSkmJmUucHVzaCh3LnZhbHVlPFMudmFsdWU/e3Nv
dXJjZTpTLHRhcmdldDp3fTp7c291cmNlOncsdGFyZ2V0OlN9KX1jJiZ0KCl9ZnVuY3Rpb24gdCgp
e2Uuc29ydChmdW5jdGlvbihuLHQpe3JldHVybiBjKChuLnNvdXJjZS52YWx1ZStuLnRhcmdldC52
YWx1ZSkvMiwodC5zb3VyY2UudmFsdWUrdC50YXJnZXQudmFsdWUpLzIpfSl9dmFyIGUscix1LGks
byxhLGMscz17fSxsPTA7cmV0dXJuIHMubWF0cml4PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhpPSh1PW4pJiZ1Lmxlbmd0aCxlPXI9bnVsbCxzKTp1fSxzLnBhZGRpbmc9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9bixlPXI9bnVsbCxzKTpsfSxzLnNv
cnRHcm91cHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bixlPXI9bnVs
bCxzKTpvfSxzLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGE9bixlPW51bGwscyk6YX0scy5zb3J0Q2hvcmRzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhjPW4sZSYmdCgpLHMpOmN9LHMuY2hvcmRzPWZ1bmN0aW9uKCl7cmV0dXJu
IGV8fG4oKSxlfSxzLmdyb3Vwcz1mdW5jdGlvbigpe3JldHVybiByfHxuKCkscn0sc30sWm8ubGF5
b3V0LmZvcmNlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIs
dSl7aWYodC5wb2ludCE9PW4pe3ZhciBpPXQuY3gtbi54LG89dC5jeS1uLnksYT11LWUsYz1pKmkr
bypvO2lmKGM+YSphL2Qpe2lmKHA+Yyl7dmFyIHM9dC5jaGFyZ2UvYztuLnB4LT1pKnMsbi5weS09
bypzfXJldHVybiEwfWlmKHQucG9pbnQmJmMmJnA+Yyl7dmFyIHM9dC5wb2ludENoYXJnZS9jO24u
cHgtPWkqcyxuLnB5LT1vKnN9fXJldHVybiF0LmNoYXJnZX19ZnVuY3Rpb24gdChuKXtuLnB4PVpv
LmV2ZW50Lngsbi5weT1aby5ldmVudC55LGEucmVzdW1lKCl9dmFyIGUscix1LGksbyxhPXt9LGM9
Wm8uZGlzcGF0Y2goInN0YXJ0IiwidGljayIsImVuZCIpLHM9WzEsMV0sbD0uOSxmPXJzLGg9dXMs
Zz0tMzAscD1pcyx2PS4xLGQ9LjY0LG09W10seT1bXTtyZXR1cm4gYS50aWNrPWZ1bmN0aW9uKCl7
aWYoKHIqPS45OSk8LjAwNSlyZXR1cm4gYy5lbmQoe3R5cGU6ImVuZCIsYWxwaGE6cj0wfSksITA7
dmFyIHQsZSxhLGYsaCxwLGQseCxNLF89bS5sZW5ndGgsYj15Lmxlbmd0aDtmb3IoZT0wO2I+ZTsr
K2UpYT15W2VdLGY9YS5zb3VyY2UsaD1hLnRhcmdldCx4PWgueC1mLngsTT1oLnktZi55LChwPXgq
eCtNKk0pJiYocD1yKmlbZV0qKChwPU1hdGguc3FydChwKSktdVtlXSkvcCx4Kj1wLE0qPXAsaC54
LT14KihkPWYud2VpZ2h0LyhoLndlaWdodCtmLndlaWdodCkpLGgueS09TSpkLGYueCs9eCooZD0x
LWQpLGYueSs9TSpkKTtpZigoZD1yKnYpJiYoeD1zWzBdLzIsTT1zWzFdLzIsZT0tMSxkKSlmb3Io
OysrZTxfOylhPW1bZV0sYS54Kz0oeC1hLngpKmQsYS55Kz0oTS1hLnkpKmQ7aWYoZylmb3IoVnUo
dD1aby5nZW9tLnF1YWR0cmVlKG0pLHIsbyksZT0tMTsrK2U8XzspKGE9bVtlXSkuZml4ZWR8fHQu
dmlzaXQobihhKSk7Zm9yKGU9LTE7KytlPF87KWE9bVtlXSxhLmZpeGVkPyhhLng9YS5weCxhLnk9
YS5weSk6KGEueC09KGEucHgtKGEucHg9YS54KSkqbCxhLnktPShhLnB5LShhLnB5PWEueSkpKmwp
O2MudGljayh7dHlwZToidGljayIsYWxwaGE6cn0pfSxhLm5vZGVzPWZ1bmN0aW9uKG4pe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhtPW4sYSk6bX0sYS5saW5rcz1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oeT1uLGEpOnl9LGEuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocz1uLGEpOnN9LGEubGlua0Rpc3RhbmNlPWZ1bmN0aW9uKG4pe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhmPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246K24sYSk6Zn0sYS5k
aXN0YW5jZT1hLmxpbmtEaXN0YW5jZSxhLmxpbmtTdHJlbmd0aD1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oaD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOituLGEpOmh9LGEuZnJp
Y3Rpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9K24sYSk6bH0sYS5j
aGFyZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9ImZ1bmN0aW9uIj09
dHlwZW9mIG4/bjorbixhKTpnfSxhLmNoYXJnZURpc3RhbmNlPWZ1bmN0aW9uKG4pe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhwPW4qbixhKTpNYXRoLnNxcnQocCl9LGEuZ3Jhdml0eT1mdW5jdGlv
bihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0rbixhKTp2fSxhLnRoZXRhPWZ1bmN0aW9u
KG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPW4qbixhKTpNYXRoLnNxcnQoZCl9LGEuYWxw
aGE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K24scj9yPW4+MD9uOjA6
bj4wJiYoYy5zdGFydCh7dHlwZToic3RhcnQiLGFscGhhOnI9bn0pLFpvLnRpbWVyKGEudGljaykp
LGEpOnJ9LGEuc3RhcnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4scil7aWYoIWUpe2ZvcihlPW5l
dyBBcnJheShjKSxhPTA7Yz5hOysrYSllW2FdPVtdO2ZvcihhPTA7cz5hOysrYSl7dmFyIHU9eVth
XTtlW3Uuc291cmNlLmluZGV4XS5wdXNoKHUudGFyZ2V0KSxlW3UudGFyZ2V0LmluZGV4XS5wdXNo
KHUuc291cmNlKX19Zm9yKHZhciBpLG89ZVt0XSxhPS0xLHM9by5sZW5ndGg7KythPHM7KWlmKCFp
c05hTihpPW9bYV1bbl0pKXJldHVybiBpO3JldHVybiBNYXRoLnJhbmRvbSgpKnJ9dmFyIHQsZSxy
LGM9bS5sZW5ndGgsbD15Lmxlbmd0aCxwPXNbMF0sdj1zWzFdO2Zvcih0PTA7Yz50OysrdCkocj1t
W3RdKS5pbmRleD10LHIud2VpZ2h0PTA7Zm9yKHQ9MDtsPnQ7Kyt0KXI9eVt0XSwibnVtYmVyIj09
dHlwZW9mIHIuc291cmNlJiYoci5zb3VyY2U9bVtyLnNvdXJjZV0pLCJudW1iZXIiPT10eXBlb2Yg
ci50YXJnZXQmJihyLnRhcmdldD1tW3IudGFyZ2V0XSksKytyLnNvdXJjZS53ZWlnaHQsKytyLnRh
cmdldC53ZWlnaHQ7Zm9yKHQ9MDtjPnQ7Kyt0KXI9bVt0XSxpc05hTihyLngpJiYoci54PW4oIngi
LHApKSxpc05hTihyLnkpJiYoci55PW4oInkiLHYpKSxpc05hTihyLnB4KSYmKHIucHg9ci54KSxp
c05hTihyLnB5KSYmKHIucHk9ci55KTtpZih1PVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBmKWZvcih0
PTA7bD50OysrdCl1W3RdPStmLmNhbGwodGhpcyx5W3RdLHQpO2Vsc2UgZm9yKHQ9MDtsPnQ7Kyt0
KXVbdF09ZjtpZihpPVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBoKWZvcih0PTA7bD50OysrdClpW3Rd
PStoLmNhbGwodGhpcyx5W3RdLHQpO2Vsc2UgZm9yKHQ9MDtsPnQ7Kyt0KWlbdF09aDtpZihvPVtd
LCJmdW5jdGlvbiI9PXR5cGVvZiBnKWZvcih0PTA7Yz50OysrdClvW3RdPStnLmNhbGwodGhpcyxt
W3RdLHQpO2Vsc2UgZm9yKHQ9MDtjPnQ7Kyt0KW9bdF09ZztyZXR1cm4gYS5yZXN1bWUoKX0sYS5y
ZXN1bWU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hbHBoYSguMSl9LGEuc3RvcD1mdW5jdGlvbigpe3Jl
dHVybiBhLmFscGhhKDApfSxhLmRyYWc9ZnVuY3Rpb24oKXtyZXR1cm4gZXx8KGU9Wm8uYmVoYXZp
b3IuZHJhZygpLm9yaWdpbih3dCkub24oImRyYWdzdGFydC5mb3JjZSIsT3UpLm9uKCJkcmFnLmZv
cmNlIix0KS5vbigiZHJhZ2VuZC5mb3JjZSIsWXUpKSxhcmd1bWVudHMubGVuZ3RoPyh0aGlzLm9u
KCJtb3VzZW92ZXIuZm9yY2UiLEl1KS5vbigibW91c2VvdXQuZm9yY2UiLFp1KS5jYWxsKGUpLHZv
aWQgMCk6ZX0sWm8ucmViaW5kKGEsYywib24iKX07dmFyIHJzPTIwLHVzPTEsaXM9MS8wO1pvLmxh
eW91dC5oaWVyYXJjaHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKHUpe3ZhciBpLG89W3VdLGE9W107
Zm9yKHUuZGVwdGg9MDtudWxsIT0oaT1vLnBvcCgpKTspaWYoYS5wdXNoKGkpLChzPWUuY2FsbChu
LGksaS5kZXB0aCkpJiYoYz1zLmxlbmd0aCkpe2Zvcih2YXIgYyxzLGw7LS1jPj0wOylvLnB1c2go
bD1zW2NdKSxsLnBhcmVudD1pLGwuZGVwdGg9aS5kZXB0aCsxO3ImJihpLnZhbHVlPTApLGkuY2hp
bGRyZW49c31lbHNlIHImJihpLnZhbHVlPStyLmNhbGwobixpLGkuZGVwdGgpfHwwKSxkZWxldGUg
aS5jaGlsZHJlbjtyZXR1cm4gQnUodSxmdW5jdGlvbihuKXt2YXIgZSx1O3QmJihlPW4uY2hpbGRy
ZW4pJiZlLnNvcnQodCksciYmKHU9bi5wYXJlbnQpJiYodS52YWx1ZSs9bi52YWx1ZSl9KSxhfXZh
ciB0PUd1LGU9V3Uscj1KdTtyZXR1cm4gbi5zb3J0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh0PWUsbik6dH0sbi5jaGlsZHJlbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oZT10LG4pOmV9LG4udmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHI9dCxuKTpyfSxuLnJldmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIHImJigkdSh0
LGZ1bmN0aW9uKG4pe24uY2hpbGRyZW4mJihuLnZhbHVlPTApfSksQnUodCxmdW5jdGlvbih0KXt2
YXIgZTt0LmNoaWxkcmVufHwodC52YWx1ZT0rci5jYWxsKG4sdCx0LmRlcHRoKXx8MCksKGU9dC5w
YXJlbnQpJiYoZS52YWx1ZSs9dC52YWx1ZSl9KSksdH0sbn0sWm8ubGF5b3V0LnBhcnRpdGlvbj1m
dW5jdGlvbigpe2Z1bmN0aW9uIG4odCxlLHIsdSl7dmFyIGk9dC5jaGlsZHJlbjtpZih0Lng9ZSx0
Lnk9dC5kZXB0aCp1LHQuZHg9cix0LmR5PXUsaSYmKG89aS5sZW5ndGgpKXt2YXIgbyxhLGMscz0t
MTtmb3Iocj10LnZhbHVlP3IvdC52YWx1ZTowOysrczxvOyluKGE9aVtzXSxlLGM9YS52YWx1ZSpy
LHUpLGUrPWN9fWZ1bmN0aW9uIHQobil7dmFyIGU9bi5jaGlsZHJlbixyPTA7aWYoZSYmKHU9ZS5s
ZW5ndGgpKWZvcih2YXIgdSxpPS0xOysraTx1OylyPU1hdGgubWF4KHIsdChlW2ldKSk7cmV0dXJu
IDErcn1mdW5jdGlvbiBlKGUsaSl7dmFyIG89ci5jYWxsKHRoaXMsZSxpKTtyZXR1cm4gbihvWzBd
LDAsdVswXSx1WzFdL3Qob1swXSkpLG99dmFyIHI9Wm8ubGF5b3V0LmhpZXJhcmNoeSgpLHU9WzEs
MV07cmV0dXJuIGUuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1u
LGUpOnV9LFh1KGUscil9LFpvLmxheW91dC5waWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGkpe3Zh
ciBvPWkubWFwKGZ1bmN0aW9uKGUscil7cmV0dXJuK3QuY2FsbChuLGUscil9KSxhPSsoImZ1bmN0
aW9uIj09dHlwZW9mIHI/ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ciksYz0oKCJmdW5jdGlvbiI9
PXR5cGVvZiB1P3UuYXBwbHkodGhpcyxhcmd1bWVudHMpOnUpLWEpL1pvLnN1bShvKSxzPVpvLnJh
bmdlKGkubGVuZ3RoKTtudWxsIT1lJiZzLnNvcnQoZT09PW9zP2Z1bmN0aW9uKG4sdCl7cmV0dXJu
IG9bdF0tb1tuXX06ZnVuY3Rpb24obix0KXtyZXR1cm4gZShpW25dLGlbdF0pfSk7dmFyIGw9W107
cmV0dXJuIHMuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgdDtsW25dPXtkYXRhOmlbbl0sdmFsdWU6
dD1vW25dLHN0YXJ0QW5nbGU6YSxlbmRBbmdsZTphKz10KmN9fSksbH12YXIgdD1OdW1iZXIsZT1v
cyxyPTAsdT13YTtyZXR1cm4gbi52YWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odD1lLG4pOnR9LG4uc29ydD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZT10LG4pOmV9LG4uc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocj10LG4pOnJ9LG4uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHU9dCxuKTp1fSxufTt2YXIgb3M9e307Wm8ubGF5b3V0LnN0YWNrPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gbihhLGMpe3ZhciBzPWEubWFwKGZ1bmN0aW9uKGUscil7cmV0dXJuIHQuY2FsbChu
LGUscil9KSxsPXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChmdW5jdGlvbih0LGUpe3Jl
dHVybltpLmNhbGwobix0LGUpLG8uY2FsbChuLHQsZSldfSl9KSxmPWUuY2FsbChuLGwsYyk7cz1a
by5wZXJtdXRlKHMsZiksbD1aby5wZXJtdXRlKGwsZik7dmFyIGgsZyxwLHY9ci5jYWxsKG4sbCxj
KSxkPXMubGVuZ3RoLG09c1swXS5sZW5ndGg7Zm9yKGc9MDttPmc7KytnKWZvcih1LmNhbGwobixz
WzBdW2ddLHA9dltnXSxsWzBdW2ddWzFdKSxoPTE7ZD5oOysraCl1LmNhbGwobixzW2hdW2ddLHAr
PWxbaC0xXVtnXVsxXSxsW2hdW2ddWzFdKTtyZXR1cm4gYX12YXIgdD13dCxlPWVpLHI9cmksdT10
aSxpPVF1LG89bmk7cmV0dXJuIG4udmFsdWVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh0PWUsbik6dH0sbi5vcmRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmFzLmdldCh0KXx8ZWksbik6ZX0sbi5vZmZz
ZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlw
ZW9mIHQ/dDpjcy5nZXQodCl8fHJpLG4pOnJ9LG4ueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oaT10LG4pOml9LG4ueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8obz10LG4pOm99LG4ub3V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh1PXQsbik6dX0sbn07dmFyIGFzPVpvLm1hcCh7Imluc2lkZS1vdXQiOmZ1bmN0aW9uKG4pe3Zh
ciB0LGUscj1uLmxlbmd0aCx1PW4ubWFwKHVpKSxpPW4ubWFwKGlpKSxvPVpvLnJhbmdlKHIpLnNv
cnQoZnVuY3Rpb24obix0KXtyZXR1cm4gdVtuXS11W3RdfSksYT0wLGM9MCxzPVtdLGw9W107Zm9y
KHQ9MDtyPnQ7Kyt0KWU9b1t0XSxjPmE/KGErPWlbZV0scy5wdXNoKGUpKTooYys9aVtlXSxsLnB1
c2goZSkpO3JldHVybiBsLnJldmVyc2UoKS5jb25jYXQocyl9LHJldmVyc2U6ZnVuY3Rpb24obil7
cmV0dXJuIFpvLnJhbmdlKG4ubGVuZ3RoKS5yZXZlcnNlKCl9LCJkZWZhdWx0IjplaX0pLGNzPVpv
Lm1hcCh7c2lsaG91ZXR0ZTpmdW5jdGlvbihuKXt2YXIgdCxlLHIsdT1uLmxlbmd0aCxpPW5bMF0u
bGVuZ3RoLG89W10sYT0wLGM9W107Zm9yKGU9MDtpPmU7KytlKXtmb3IodD0wLHI9MDt1PnQ7dCsr
KXIrPW5bdF1bZV1bMV07cj5hJiYoYT1yKSxvLnB1c2gocil9Zm9yKGU9MDtpPmU7KytlKWNbZV09
KGEtb1tlXSkvMjtyZXR1cm4gY30sd2lnZ2xlOmZ1bmN0aW9uKG4pe3ZhciB0LGUscix1LGksbyxh
LGMscyxsPW4ubGVuZ3RoLGY9blswXSxoPWYubGVuZ3RoLGc9W107Zm9yKGdbMF09Yz1zPTAsZT0x
O2g+ZTsrK2Upe2Zvcih0PTAsdT0wO2w+dDsrK3QpdSs9blt0XVtlXVsxXTtmb3IodD0wLGk9MCxh
PWZbZV1bMF0tZltlLTFdWzBdO2w+dDsrK3Qpe2ZvcihyPTAsbz0oblt0XVtlXVsxXS1uW3RdW2Ut
MV1bMV0pLygyKmEpO3Q+cjsrK3Ipbys9KG5bcl1bZV1bMV0tbltyXVtlLTFdWzFdKS9hO2krPW8q
blt0XVtlXVsxXX1nW2VdPWMtPXU/aS91KmE6MCxzPmMmJihzPWMpfWZvcihlPTA7aD5lOysrZSln
W2VdLT1zO3JldHVybiBnfSxleHBhbmQ6ZnVuY3Rpb24obil7dmFyIHQsZSxyLHU9bi5sZW5ndGgs
aT1uWzBdLmxlbmd0aCxvPTEvdSxhPVtdO2ZvcihlPTA7aT5lOysrZSl7Zm9yKHQ9MCxyPTA7dT50
O3QrKylyKz1uW3RdW2VdWzFdO2lmKHIpZm9yKHQ9MDt1PnQ7dCsrKW5bdF1bZV1bMV0vPXI7ZWxz
ZSBmb3IodD0wO3U+dDt0Kyspblt0XVtlXVsxXT1vfWZvcihlPTA7aT5lOysrZSlhW2VdPTA7cmV0
dXJuIGF9LHplcm86cml9KTtaby5sYXlvdXQuaGlzdG9ncmFtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
bihuLGkpe2Zvcih2YXIgbyxhLGM9W10scz1uLm1hcChlLHRoaXMpLGw9ci5jYWxsKHRoaXMscyxp
KSxmPXUuY2FsbCh0aGlzLGwscyxpKSxpPS0xLGg9cy5sZW5ndGgsZz1mLmxlbmd0aC0xLHA9dD8x
OjEvaDsrK2k8Zzspbz1jW2ldPVtdLG8uZHg9ZltpKzFdLShvLng9ZltpXSksby55PTA7aWYoZz4w
KWZvcihpPS0xOysraTxoOylhPXNbaV0sYT49bFswXSYmYTw9bFsxXSYmKG89Y1taby5iaXNlY3Qo
ZixhLDEsZyktMV0sby55Kz1wLG8ucHVzaChuW2ldKSk7cmV0dXJuIGN9dmFyIHQ9ITAsZT1OdW1i
ZXIscj1zaSx1PWFpO3JldHVybiBuLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhlPXQsbik6ZX0sbi5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocj1idCh0KSxuKTpyfSxuLmJpbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHU9Im51bWJlciI9PXR5cGVvZiB0P2Z1bmN0aW9uKG4pe3JldHVybiBjaShuLHQpfTpi
dCh0KSxuKTp1fSxuLmZyZXF1ZW5jeT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odD0hIWUsbik6dH0sbn0sWm8ubGF5b3V0LnBhY2s9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4s
aSl7dmFyIG89ZS5jYWxsKHRoaXMsbixpKSxhPW9bMF0sYz11WzBdLHM9dVsxXSxsPW51bGw9PXQ/
TWF0aC5zcXJ0OiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdH07aWYo
YS54PWEueT0wLEJ1KGEsZnVuY3Rpb24obil7bi5yPStsKG4udmFsdWUpfSksQnUoYSxwaSkscil7
dmFyIGY9cioodD8xOk1hdGgubWF4KDIqYS5yL2MsMiphLnIvcykpLzI7QnUoYSxmdW5jdGlvbihu
KXtuLnIrPWZ9KSxCdShhLHBpKSxCdShhLGZ1bmN0aW9uKG4pe24uci09Zn0pfXJldHVybiBtaShh
LGMvMixzLzIsdD8xOjEvTWF0aC5tYXgoMiphLnIvYywyKmEuci9zKSksb312YXIgdCxlPVpvLmxh
eW91dC5oaWVyYXJjaHkoKS5zb3J0KGxpKSxyPTAsdT1bMSwxXTtyZXR1cm4gbi5zaXplPWZ1bmN0
aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsbik6dX0sbi5yYWRpdXM9ZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bnVsbD09ZXx8ImZ1bmN0aW9uIj09dHlw
ZW9mIGU/ZTorZSxuKTp0fSxuLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHI9K3Qsbik6cn0sWHUobixlKX0sWm8ubGF5b3V0LnRyZWU9ZnVuY3Rpb24oKXtmdW5j
dGlvbiBuKG4sdSl7dmFyIGw9by5jYWxsKHRoaXMsbix1KSxmPWxbMF0saD10KGYpO2lmKEJ1KGgs
ZSksaC5wYXJlbnQubT0taC56LCR1KGgscikscykkdShmLGkpO2Vsc2V7dmFyIGc9ZixwPWYsdj1m
OyR1KGYsZnVuY3Rpb24obil7bi54PGcueCYmKGc9biksbi54PnAueCYmKHA9biksbi5kZXB0aD52
LmRlcHRoJiYodj1uKX0pO3ZhciBkPWEoZyxwKS8yLWcueCxtPWNbMF0vKHAueCthKHAsZykvMitk
KSx5PWNbMV0vKHYuZGVwdGh8fDEpOyR1KGYsZnVuY3Rpb24obil7bi54PShuLngrZCkqbSxuLnk9
bi5kZXB0aCp5fSl9cmV0dXJuIGx9ZnVuY3Rpb24gdChuKXtmb3IodmFyIHQsZT17QTpudWxsLGNo
aWxkcmVuOltuXX0scj1bZV07bnVsbCE9KHQ9ci5wb3AoKSk7KWZvcih2YXIgdSxpPXQuY2hpbGRy
ZW4sbz0wLGE9aS5sZW5ndGg7YT5vOysrbylyLnB1c2goKGlbb109dT17XzppW29dLHBhcmVudDp0
LGNoaWxkcmVuOih1PWlbb10uY2hpbGRyZW4pJiZ1LnNsaWNlKCl8fFtdLEE6bnVsbCxhOm51bGws
ejowLG06MCxjOjAsczowLHQ6bnVsbCxpOm99KS5hPXUpO3JldHVybiBlLmNoaWxkcmVuWzBdfWZ1
bmN0aW9uIGUobil7dmFyIHQ9bi5jaGlsZHJlbixlPW4ucGFyZW50LmNoaWxkcmVuLHI9bi5pP2Vb
bi5pLTFdOm51bGw7aWYodC5sZW5ndGgpe3dpKG4pO3ZhciBpPSh0WzBdLnordFt0Lmxlbmd0aC0x
XS56KS8yO3I/KG4uej1yLnorYShuLl8sci5fKSxuLm09bi56LWkpOm4uej1pfWVsc2UgciYmKG4u
ej1yLnorYShuLl8sci5fKSk7bi5wYXJlbnQuQT11KG4scixuLnBhcmVudC5BfHxlWzBdKX1mdW5j
dGlvbiByKG4pe24uXy54PW4ueituLnBhcmVudC5tLG4ubSs9bi5wYXJlbnQubX1mdW5jdGlvbiB1
KG4sdCxlKXtpZih0KXtmb3IodmFyIHIsdT1uLGk9bixvPXQsYz11LnBhcmVudC5jaGlsZHJlblsw
XSxzPXUubSxsPWkubSxmPW8ubSxoPWMubTtvPV9pKG8pLHU9TWkodSksbyYmdTspYz1NaShjKSxp
PV9pKGkpLGkuYT1uLHI9by56K2YtdS56LXMrYShvLl8sdS5fKSxyPjAmJihiaShTaShvLG4sZSks
bixyKSxzKz1yLGwrPXIpLGYrPW8ubSxzKz11Lm0saCs9Yy5tLGwrPWkubTtvJiYhX2koaSkmJihp
LnQ9byxpLm0rPWYtbCksdSYmIU1pKGMpJiYoYy50PXUsYy5tKz1zLWgsZT1uKX1yZXR1cm4gZX1m
dW5jdGlvbiBpKG4pe24ueCo9Y1swXSxuLnk9bi5kZXB0aCpjWzFdfXZhciBvPVpvLmxheW91dC5o
aWVyYXJjaHkoKS5zb3J0KG51bGwpLnZhbHVlKG51bGwpLGE9eGksYz1bMSwxXSxzPW51bGw7cmV0
dXJuIG4uc2VwYXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10
LG4pOmF9LG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxs
PT0oYz10KT9pOm51bGwsbik6cz9udWxsOmN9LG4ubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHM9bnVsbD09KGM9dCk/bnVsbDppLG4pOnM/YzpudWxsfSxYdShu
LG8pfSxaby5sYXlvdXQuY2x1c3Rlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixpKXt2YXIgbyxh
PXQuY2FsbCh0aGlzLG4saSksYz1hWzBdLHM9MDtCdShjLGZ1bmN0aW9uKG4pe3ZhciB0PW4uY2hp
bGRyZW47dCYmdC5sZW5ndGg/KG4ueD1FaSh0KSxuLnk9a2kodCkpOihuLng9bz9zKz1lKG4sbyk6
MCxuLnk9MCxvPW4pfSk7dmFyIGw9QWkoYyksZj1DaShjKSxoPWwueC1lKGwsZikvMixnPWYueCtl
KGYsbCkvMjtyZXR1cm4gQnUoYyx1P2Z1bmN0aW9uKG4pe24ueD0obi54LWMueCkqclswXSxuLnk9
KGMueS1uLnkpKnJbMV19OmZ1bmN0aW9uKG4pe24ueD0obi54LWgpLyhnLWgpKnJbMF0sbi55PSgx
LShjLnk/bi55L2MueToxKSkqclsxXX0pLGF9dmFyIHQ9Wm8ubGF5b3V0LmhpZXJhcmNoeSgpLnNv
cnQobnVsbCkudmFsdWUobnVsbCksZT14aSxyPVsxLDFdLHU9ITE7cmV0dXJuIG4uc2VwYXJhdGlv
bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4uc2l6ZT1m
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1udWxsPT0ocj10KSxuKTp1P251
bGw6cn0sbi5ub2RlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1u
dWxsIT0ocj10KSxuKTp1P3I6bnVsbH0sWHUobix0KX0sWm8ubGF5b3V0LnRyZWVtYXA9ZnVuY3Rp
b24oKXtmdW5jdGlvbiBuKG4sdCl7Zm9yKHZhciBlLHIsdT0tMSxpPW4ubGVuZ3RoOysrdTxpOyly
PShlPW5bdV0pLnZhbHVlKigwPnQ/MDp0KSxlLmFyZWE9aXNOYU4ocil8fDA+PXI/MDpyfWZ1bmN0
aW9uIHQoZSl7dmFyIGk9ZS5jaGlsZHJlbjtpZihpJiZpLmxlbmd0aCl7dmFyIG8sYSxjLHM9Zihl
KSxsPVtdLGg9aS5zbGljZSgpLHA9MS8wLHY9InNsaWNlIj09PWc/cy5keDoiZGljZSI9PT1nP3Mu
ZHk6InNsaWNlLWRpY2UiPT09Zz8xJmUuZGVwdGg/cy5keTpzLmR4Ok1hdGgubWluKHMuZHgscy5k
eSk7Zm9yKG4oaCxzLmR4KnMuZHkvZS52YWx1ZSksbC5hcmVhPTA7KGM9aC5sZW5ndGgpPjA7KWwu
cHVzaChvPWhbYy0xXSksbC5hcmVhKz1vLmFyZWEsInNxdWFyaWZ5IiE9PWd8fChhPXIobCx2KSk8
PXA/KGgucG9wKCkscD1hKToobC5hcmVhLT1sLnBvcCgpLmFyZWEsdShsLHYscywhMSksdj1NYXRo
Lm1pbihzLmR4LHMuZHkpLGwubGVuZ3RoPWwuYXJlYT0wLHA9MS8wKTtsLmxlbmd0aCYmKHUobCx2
LHMsITApLGwubGVuZ3RoPWwuYXJlYT0wKSxpLmZvckVhY2godCl9fWZ1bmN0aW9uIGUodCl7dmFy
IHI9dC5jaGlsZHJlbjtpZihyJiZyLmxlbmd0aCl7dmFyIGksbz1mKHQpLGE9ci5zbGljZSgpLGM9
W107Zm9yKG4oYSxvLmR4Km8uZHkvdC52YWx1ZSksYy5hcmVhPTA7aT1hLnBvcCgpOyljLnB1c2go
aSksYy5hcmVhKz1pLmFyZWEsbnVsbCE9aS56JiYodShjLGkuej9vLmR4Om8uZHksbywhYS5sZW5n
dGgpLGMubGVuZ3RoPWMuYXJlYT0wKTtyLmZvckVhY2goZSl9fWZ1bmN0aW9uIHIobix0KXtmb3Io
dmFyIGUscj1uLmFyZWEsdT0wLGk9MS8wLG89LTEsYT1uLmxlbmd0aDsrK288YTspKGU9bltvXS5h
cmVhKSYmKGk+ZSYmKGk9ZSksZT51JiYodT1lKSk7cmV0dXJuIHIqPXIsdCo9dCxyP01hdGgubWF4
KHQqdSpwL3Isci8odCppKnApKToxLzB9ZnVuY3Rpb24gdShuLHQsZSxyKXt2YXIgdSxpPS0xLG89
bi5sZW5ndGgsYT1lLngscz1lLnksbD10P2Mobi5hcmVhL3QpOjA7aWYodD09ZS5keCl7Zm9yKChy
fHxsPmUuZHkpJiYobD1lLmR5KTsrK2k8bzspdT1uW2ldLHUueD1hLHUueT1zLHUuZHk9bCxhKz11
LmR4PU1hdGgubWluKGUueCtlLmR4LWEsbD9jKHUuYXJlYS9sKTowKTt1Lno9ITAsdS5keCs9ZS54
K2UuZHgtYSxlLnkrPWwsZS5keS09bH1lbHNle2Zvcigocnx8bD5lLmR4KSYmKGw9ZS5keCk7Kytp
PG87KXU9bltpXSx1Lng9YSx1Lnk9cyx1LmR4PWwscys9dS5keT1NYXRoLm1pbihlLnkrZS5keS1z
LGw/Yyh1LmFyZWEvbCk6MCk7dS56PSExLHUuZHkrPWUueStlLmR5LXMsZS54Kz1sLGUuZHgtPWx9
fWZ1bmN0aW9uIGkocil7dmFyIHU9b3x8YShyKSxpPXVbMF07cmV0dXJuIGkueD0wLGkueT0wLGku
ZHg9c1swXSxpLmR5PXNbMV0sbyYmYS5yZXZhbHVlKGkpLG4oW2ldLGkuZHgqaS5keS9pLnZhbHVl
KSwobz9lOnQpKGkpLGgmJihvPXUpLHV9dmFyIG8sYT1aby5sYXlvdXQuaGllcmFyY2h5KCksYz1N
YXRoLnJvdW5kLHM9WzEsMV0sbD1udWxsLGY9TmksaD0hMSxnPSJzcXVhcmlmeSIscD0uNSooMStN
YXRoLnNxcnQoNSkpO3JldHVybiBpLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHM9bixpKTpzfSxpLnBhZGRpbmc9ZnVuY3Rpb24obil7ZnVuY3Rpb24gdCh0KXt2YXIg
ZT1uLmNhbGwoaSx0LHQuZGVwdGgpO3JldHVybiBudWxsPT1lP05pKHQpOnppKHQsIm51bWJlciI9
PXR5cGVvZiBlP1tlLGUsZSxlXTplKX1mdW5jdGlvbiBlKHQpe3JldHVybiB6aSh0LG4pfWlmKCFh
cmd1bWVudHMubGVuZ3RoKXJldHVybiBsO3ZhciByO3JldHVybiBmPW51bGw9PShsPW4pP05pOiJm
dW5jdGlvbiI9PShyPXR5cGVvZiBuKT90OiJudW1iZXIiPT09cj8obj1bbixuLG4sbl0sZSk6ZSxp
fSxpLnJvdW5kPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPW4/TWF0aC5y
b3VuZDpOdW1iZXIsaSk6YyE9TnVtYmVyfSxpLnN0aWNreT1mdW5jdGlvbihuKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oaD1uLG89bnVsbCxpKTpofSxpLnJhdGlvPWZ1bmN0aW9uKG4pe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhwPW4saSk6cH0saS5tb2RlPWZ1bmN0aW9uKG4pe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhnPW4rIiIsaSk6Z30sWHUoaSxhKX0sWm8ucmFuZG9tPXtub3JtYWw6
ZnVuY3Rpb24obix0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoO3JldHVybiAyPmUmJih0PTEpLDE+
ZSYmKG49MCksZnVuY3Rpb24oKXt2YXIgZSxyLHU7ZG8gZT0yKk1hdGgucmFuZG9tKCktMSxyPTIq
TWF0aC5yYW5kb20oKS0xLHU9ZSplK3Iqcjt3aGlsZSghdXx8dT4xKTtyZXR1cm4gbit0KmUqTWF0
aC5zcXJ0KC0yKk1hdGgubG9nKHUpL3UpfX0sbG9nTm9ybWFsOmZ1bmN0aW9uKCl7dmFyIG49Wm8u
cmFuZG9tLm5vcm1hbC5hcHBseShabyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbigpe3JldHVy
biBNYXRoLmV4cChuKCkpfX0sYmF0ZXM6ZnVuY3Rpb24obil7dmFyIHQ9Wm8ucmFuZG9tLmlyd2lu
SGFsbChuKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCgpL259fSxpcndpbkhhbGw6ZnVuY3Rp
b24obil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT0wO24+ZTtlKyspdCs9TWF0aC5y
YW5kb20oKTtyZXR1cm4gdH19fSxaby5zY2FsZT17fTt2YXIgc3M9e2Zsb29yOnd0LGNlaWw6d3R9
O1pvLnNjYWxlLmxpbmVhcj1mdW5jdGlvbigpe3JldHVybiBVaShbMCwxXSxbMCwxXSxodSwhMSl9
O3ZhciBscz17czoxLGc6MSxwOjEscjoxLGU6MX07Wm8uc2NhbGUubG9nPWZ1bmN0aW9uKCl7cmV0
dXJuIFZpKFpvLnNjYWxlLmxpbmVhcigpLmRvbWFpbihbMCwxXSksMTAsITAsWzEsMTBdKX07dmFy
IGZzPVpvLmZvcm1hdCgiLjBlIiksaHM9e2Zsb29yOmZ1bmN0aW9uKG4pe3JldHVybi1NYXRoLmNl
aWwoLW4pfSxjZWlsOmZ1bmN0aW9uKG4pe3JldHVybi1NYXRoLmZsb29yKC1uKX19O1pvLnNjYWxl
LnBvdz1mdW5jdGlvbigpe3JldHVybiBYaShaby5zY2FsZS5saW5lYXIoKSwxLFswLDFdKX0sWm8u
c2NhbGUuc3FydD1mdW5jdGlvbigpe3JldHVybiBaby5zY2FsZS5wb3coKS5leHBvbmVudCguNSl9
LFpvLnNjYWxlLm9yZGluYWw9ZnVuY3Rpb24oKXtyZXR1cm4gQmkoW10se3Q6InJhbmdlIixhOltb
XV19KX0sWm8uc2NhbGUuY2F0ZWdvcnkxMD1mdW5jdGlvbigpe3JldHVybiBaby5zY2FsZS5vcmRp
bmFsKCkucmFuZ2UoZ3MpfSxaby5zY2FsZS5jYXRlZ29yeTIwPWZ1bmN0aW9uKCl7cmV0dXJuIFpv
LnNjYWxlLm9yZGluYWwoKS5yYW5nZShwcyl9LFpvLnNjYWxlLmNhdGVnb3J5MjBiPWZ1bmN0aW9u
KCl7cmV0dXJuIFpvLnNjYWxlLm9yZGluYWwoKS5yYW5nZSh2cyl9LFpvLnNjYWxlLmNhdGVnb3J5
MjBjPWZ1bmN0aW9uKCl7cmV0dXJuIFpvLnNjYWxlLm9yZGluYWwoKS5yYW5nZShkcyl9O3ZhciBn
cz1bMjA2MjI2MCwxNjc0NDIwNiwyOTI0NTg4LDE0MDM0NzI4LDk3MjU4ODUsOTE5NzEzMSwxNDkw
NzMzMCw4MzU1NzExLDEyMzY5MTg2LDE1NTYxNzVdLm1hcCh2dCkscHM9WzIwNjIyNjAsMTE0NTQ0
NDAsMTY3NDQyMDYsMTY3NTk2NzIsMjkyNDU4OCwxMDAxODY5OCwxNDAzNDcyOCwxNjc1MDc0Miw5
NzI1ODg1LDEyOTU1ODYxLDkxOTcxMzEsMTI4ODUxNDAsMTQ5MDczMzAsMTYyMzQxOTQsODM1NTcx
MSwxMzA5MjgwNywxMjM2OTE4NiwxNDQwODU4OSwxNTU2MTc1LDEwNDEwNzI1XS5tYXAodnQpLHZz
PVszNzUwNzc3LDUzOTU2MTksNzA0MDcxOSwxMDI2NDI4Niw2NTE5MDk3LDkyMTY1OTQsMTE5MTUx
MTUsMTM1NTY2MzYsOTIwMjk5MywxMjQyNjgwOSwxNTE4NjUxNCwxNTE5MDkzMiw4NjY2MTY5LDEx
MzU2NDkwLDE0MDQ5NjQzLDE1MTc3MzcyLDgwNzc2ODMsMTA4MzQzMjQsMTM1Mjg1MDksMTQ1ODk2
NTRdLm1hcCh2dCksZHM9WzMyNDQ3MzMsNzA1NzExMCwxMDQwNjYyNSwxMzAzMjQzMSwxNTA5NTA1
MywxNjYxNjc2NCwxNjYyNTI1OSwxNjYzNDAxOCwzMjUzMDc2LDc2NTI0NzAsMTA2MDcwMDMsMTMx
MDE1MDQsNzY5NTI4MSwxMDM5NDMxMiwxMjM2OTM3MiwxNDM0Mjg5MSw2NTEzNTA3LDk4Njg5NTAs
MTI0MzQ4NzcsMTQyNzcwODFdLm1hcCh2dCk7Wm8uc2NhbGUucXVhbnRpbGU9ZnVuY3Rpb24oKXty
ZXR1cm4gV2koW10sW10pfSxaby5zY2FsZS5xdWFudGl6ZT1mdW5jdGlvbigpe3JldHVybiBKaSgw
LDEsWzAsMV0pfSxaby5zY2FsZS50aHJlc2hvbGQ9ZnVuY3Rpb24oKXtyZXR1cm4gR2koWy41XSxb
MCwxXSl9LFpvLnNjYWxlLmlkZW50aXR5PWZ1bmN0aW9uKCl7cmV0dXJuIEtpKFswLDFdKX0sWm8u
c3ZnPXt9LFpvLnN2Zy5hcmM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7dmFyIG49dC5hcHBseSh0
aGlzLGFyZ3VtZW50cyksaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvPXIuYXBwbHkodGhpcyxh
cmd1bWVudHMpK21zLGE9dS5hcHBseSh0aGlzLGFyZ3VtZW50cykrbXMsYz0obz5hJiYoYz1vLG89
YSxhPWMpLGEtbykscz1iYT5jPyIwIjoiMSIsbD1NYXRoLmNvcyhvKSxmPU1hdGguc2luKG8pLGg9
TWF0aC5jb3MoYSksZz1NYXRoLnNpbihhKTsKLXJldHVybiBjPj15cz9uPyJNMCwiK2krIkEiK2kr
IiwiK2krIiAwIDEsMSAwLCIrLWkrIkEiK2krIiwiK2krIiAwIDEsMSAwLCIraSsiTTAsIituKyJB
IituKyIsIituKyIgMCAxLDAgMCwiKy1uKyJBIituKyIsIituKyIgMCAxLDAgMCwiK24rIloiOiJN
MCwiK2krIkEiK2krIiwiK2krIiAwIDEsMSAwLCIrLWkrIkEiK2krIiwiK2krIiAwIDEsMSAwLCIr
aSsiWiI6bj8iTSIraSpsKyIsIitpKmYrIkEiK2krIiwiK2krIiAwICIrcysiLDEgIitpKmgrIiwi
K2kqZysiTCIrbipoKyIsIituKmcrIkEiK24rIiwiK24rIiAwICIrcysiLDAgIituKmwrIiwiK24q
ZisiWiI6Ik0iK2kqbCsiLCIraSpmKyJBIitpKyIsIitpKyIgMCAiK3MrIiwxICIraSpoKyIsIitp
KmcrIkwwLDAiKyJaIn12YXIgdD1RaSxlPW5vLHI9dG8sdT1lbztyZXR1cm4gbi5pbm5lclJhZGl1
cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1idChlKSxuKTp0fSxuLm91
dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWJ0KHQpLG4p
OmV9LG4uc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1i
dCh0KSxuKTpyfSxuLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh1PWJ0KHQpLG4pOnV9LG4uY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgbj0odC5hcHBseSh0aGlz
LGFyZ3VtZW50cykrZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsaT0oci5hcHBseSh0aGlzLGFy
Z3VtZW50cykrdS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIrbXM7cmV0dXJuW01hdGguY29zKGkp
Km4sTWF0aC5zaW4oaSkqbl19LG59O3ZhciBtcz0tU2EseXM9d2Eta2E7Wm8uc3ZnLmxpbmU9ZnVu
Y3Rpb24oKXtyZXR1cm4gcm8od3QpfTt2YXIgeHM9Wm8ubWFwKHtsaW5lYXI6dW8sImxpbmVhci1j
bG9zZWQiOmlvLHN0ZXA6b28sInN0ZXAtYmVmb3JlIjphbywic3RlcC1hZnRlciI6Y28sYmFzaXM6
cG8sImJhc2lzLW9wZW4iOnZvLCJiYXNpcy1jbG9zZWQiOm1vLGJ1bmRsZTp5byxjYXJkaW5hbDpm
bywiY2FyZGluYWwtb3BlbiI6c28sImNhcmRpbmFsLWNsb3NlZCI6bG8sbW9ub3RvbmU6U299KTt4
cy5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7dC5rZXk9bix0LmNsb3NlZD0vLWNsb3NlZCQvLnRlc3Qo
bil9KTt2YXIgTXM9WzAsMi8zLDEvMywwXSxfcz1bMCwxLzMsMi8zLDBdLGJzPVswLDEvNiwyLzMs
MS82XTtaby5zdmcubGluZS5yYWRpYWw9ZnVuY3Rpb24oKXt2YXIgbj1ybyhrbyk7cmV0dXJuIG4u
cmFkaXVzPW4ueCxkZWxldGUgbi54LG4uYW5nbGU9bi55LGRlbGV0ZSBuLnksbn0sYW8ucmV2ZXJz
ZT1jbyxjby5yZXZlcnNlPWFvLFpvLnN2Zy5hcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIEVvKHd0KX0s
Wm8uc3ZnLmFyZWEucmFkaWFsPWZ1bmN0aW9uKCl7dmFyIG49RW8oa28pO3JldHVybiBuLnJhZGl1
cz1uLngsZGVsZXRlIG4ueCxuLmlubmVyUmFkaXVzPW4ueDAsZGVsZXRlIG4ueDAsbi5vdXRlclJh
ZGl1cz1uLngxLGRlbGV0ZSBuLngxLG4uYW5nbGU9bi55LGRlbGV0ZSBuLnksbi5zdGFydEFuZ2xl
PW4ueTAsZGVsZXRlIG4ueTAsbi5lbmRBbmdsZT1uLnkxLGRlbGV0ZSBuLnkxLG59LFpvLnN2Zy5j
aG9yZD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixhKXt2YXIgYz10KHRoaXMsaSxuLGEpLHM9dCh0
aGlzLG8sbixhKTtyZXR1cm4iTSIrYy5wMCtyKGMucixjLnAxLGMuYTEtYy5hMCkrKGUoYyxzKT91
KGMucixjLnAxLGMucixjLnAwKTp1KGMucixjLnAxLHMucixzLnAwKStyKHMucixzLnAxLHMuYTEt
cy5hMCkrdShzLnIscy5wMSxjLnIsYy5wMCkpKyJaIn1mdW5jdGlvbiB0KG4sdCxlLHIpe3ZhciB1
PXQuY2FsbChuLGUsciksaT1hLmNhbGwobix1LHIpLG89Yy5jYWxsKG4sdSxyKSttcyxsPXMuY2Fs
bChuLHUscikrbXM7cmV0dXJue3I6aSxhMDpvLGExOmwscDA6W2kqTWF0aC5jb3MobyksaSpNYXRo
LnNpbihvKV0scDE6W2kqTWF0aC5jb3MobCksaSpNYXRoLnNpbihsKV19fWZ1bmN0aW9uIGUobix0
KXtyZXR1cm4gbi5hMD09dC5hMCYmbi5hMT09dC5hMX1mdW5jdGlvbiByKG4sdCxlKXtyZXR1cm4i
QSIrbisiLCIrbisiIDAgIisgKyhlPmJhKSsiLDEgIit0fWZ1bmN0aW9uIHUobix0LGUscil7cmV0
dXJuIlEgMCwwICIrcn12YXIgaT1ncixvPXByLGE9QW8sYz10byxzPWVvO3JldHVybiBuLnJhZGl1
cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1idCh0KSxuKTphfSxuLnNv
dXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1idCh0KSxuKTppfSxu
LnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1idCh0KSxuKTpv
fSxuLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9YnQo
dCksbik6Y30sbi5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cz1idCh0KSxuKTpzfSxufSxaby5zdmcuZGlhZ29uYWw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4s
dSl7dmFyIGk9dC5jYWxsKHRoaXMsbix1KSxvPWUuY2FsbCh0aGlzLG4sdSksYT0oaS55K28ueSkv
MixjPVtpLHt4OmkueCx5OmF9LHt4Om8ueCx5OmF9LG9dO3JldHVybiBjPWMubWFwKHIpLCJNIitj
WzBdKyJDIitjWzFdKyIgIitjWzJdKyIgIitjWzNdfXZhciB0PWdyLGU9cHIscj1DbztyZXR1cm4g
bi5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YnQoZSksbik6
dH0sbi50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9YnQodCks
bik6ZX0sbi5wcm9qZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhy
PXQsbik6cn0sbn0sWm8uc3ZnLmRpYWdvbmFsLnJhZGlhbD1mdW5jdGlvbigpe3ZhciBuPVpvLnN2
Zy5kaWFnb25hbCgpLHQ9Q28sZT1uLnByb2plY3Rpb247cmV0dXJuIG4ucHJvamVjdGlvbj1mdW5j
dGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKE5vKHQ9bikpOnR9LG59LFpvLnN2Zy5z
eW1ib2w9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4scil7cmV0dXJuKHdzLmdldCh0LmNhbGwodGhp
cyxuLHIpKXx8VG8pKGUuY2FsbCh0aGlzLG4scikpfXZhciB0PUxvLGU9em87cmV0dXJuIG4udHlw
ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1idChlKSxuKTp0fSxuLnNp
emU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9YnQodCksbik6ZX0sbn07
dmFyIHdzPVpvLm1hcCh7Y2lyY2xlOlRvLGNyb3NzOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguc3Fy
dChuLzUpLzI7cmV0dXJuIk0iKy0zKnQrIiwiKy10KyJIIistdCsiViIrLTMqdCsiSCIrdCsiViIr
LXQrIkgiKzMqdCsiViIrdCsiSCIrdCsiViIrMyp0KyJIIistdCsiViIrdCsiSCIrLTMqdCsiWiJ9
LGRpYW1vbmQ6ZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5zcXJ0KG4vKDIqQXMpKSxlPXQqQXM7cmV0
dXJuIk0wLCIrLXQrIkwiK2UrIiwwIisiIDAsIit0KyIgIistZSsiLDAiKyJaIn0sc3F1YXJlOmZ1
bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChuKS8yO3JldHVybiJNIistdCsiLCIrLXQrIkwiK3Qr
IiwiKy10KyIgIit0KyIsIit0KyIgIistdCsiLCIrdCsiWiJ9LCJ0cmlhbmdsZS1kb3duIjpmdW5j
dGlvbihuKXt2YXIgdD1NYXRoLnNxcnQobi9FcyksZT10KkVzLzI7cmV0dXJuIk0wLCIrZSsiTCIr
dCsiLCIrLWUrIiAiKy10KyIsIistZSsiWiJ9LCJ0cmlhbmdsZS11cCI6ZnVuY3Rpb24obil7dmFy
IHQ9TWF0aC5zcXJ0KG4vRXMpLGU9dCpFcy8yO3JldHVybiJNMCwiKy1lKyJMIit0KyIsIitlKyIg
IistdCsiLCIrZSsiWiJ9fSk7Wm8uc3ZnLnN5bWJvbFR5cGVzPXdzLmtleXMoKTt2YXIgU3Msa3Ms
RXM9TWF0aC5zcXJ0KDMpLEFzPU1hdGgudGFuKDMwKkFhKSxDcz1bXSxOcz0wO0NzLmNhbGw9cGEu
Y2FsbCxDcy5lbXB0eT1wYS5lbXB0eSxDcy5ub2RlPXBhLm5vZGUsQ3Muc2l6ZT1wYS5zaXplLFpv
LnRyYW5zaXRpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/U3M/bi50cmFu
c2l0aW9uKCk6bjptYS50cmFuc2l0aW9uKCl9LFpvLnRyYW5zaXRpb24ucHJvdG90eXBlPUNzLENz
LnNlbGVjdD1mdW5jdGlvbihuKXt2YXIgdCxlLHIsdT10aGlzLmlkLGk9W107bj1iKG4pO2Zvcih2
YXIgbz0tMSxhPXRoaXMubGVuZ3RoOysrbzxhOyl7aS5wdXNoKHQ9W10pO2Zvcih2YXIgYz10aGlz
W29dLHM9LTEsbD1jLmxlbmd0aDsrK3M8bDspKHI9Y1tzXSkmJihlPW4uY2FsbChyLHIuX19kYXRh
X18scyxvKSk/KCJfX2RhdGFfXyJpbiByJiYoZS5fX2RhdGFfXz1yLl9fZGF0YV9fKSxQbyhlLHMs
dSxyLl9fdHJhbnNpdGlvbl9fW3VdKSx0LnB1c2goZSkpOnQucHVzaChudWxsKX1yZXR1cm4gcW8o
aSx1KX0sQ3Muc2VsZWN0QWxsPWZ1bmN0aW9uKG4pe3ZhciB0LGUscix1LGksbz10aGlzLmlkLGE9
W107bj13KG4pO2Zvcih2YXIgYz0tMSxzPXRoaXMubGVuZ3RoOysrYzxzOylmb3IodmFyIGw9dGhp
c1tjXSxmPS0xLGg9bC5sZW5ndGg7KytmPGg7KWlmKHI9bFtmXSl7aT1yLl9fdHJhbnNpdGlvbl9f
W29dLGU9bi5jYWxsKHIsci5fX2RhdGFfXyxmLGMpLGEucHVzaCh0PVtdKTtmb3IodmFyIGc9LTEs
cD1lLmxlbmd0aDsrK2c8cDspKHU9ZVtnXSkmJlBvKHUsZyxvLGkpLHQucHVzaCh1KX1yZXR1cm4g
cW8oYSxvKX0sQ3MuZmlsdGVyPWZ1bmN0aW9uKG4pe3ZhciB0LGUscix1PVtdOyJmdW5jdGlvbiIh
PXR5cGVvZiBuJiYobj1SKG4pKTtmb3IodmFyIGk9MCxvPXRoaXMubGVuZ3RoO28+aTtpKyspe3Uu
cHVzaCh0PVtdKTtmb3IodmFyIGU9dGhpc1tpXSxhPTAsYz1lLmxlbmd0aDtjPmE7YSsrKShyPWVb
YV0pJiZuLmNhbGwocixyLl9fZGF0YV9fLGEsaSkmJnQucHVzaChyKX1yZXR1cm4gcW8odSx0aGlz
LmlkKX0sQ3MudHdlZW49ZnVuY3Rpb24obix0KXt2YXIgZT10aGlzLmlkO3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPDI/dGhpcy5ub2RlKCkuX190cmFuc2l0aW9uX19bZV0udHdlZW4uZ2V0KG4pOlAo
dGhpcyxudWxsPT10P2Z1bmN0aW9uKHQpe3QuX190cmFuc2l0aW9uX19bZV0udHdlZW4ucmVtb3Zl
KG4pfTpmdW5jdGlvbihyKXtyLl9fdHJhbnNpdGlvbl9fW2VdLnR3ZWVuLnNldChuLHQpfSl9LENz
LmF0dHI9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoYSl9
ZnVuY3Rpb24gcigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMoYS5zcGFjZSxhLmxvY2FsKX1mdW5j
dGlvbiB1KG4pe3JldHVybiBudWxsPT1uP2U6KG4rPSIiLGZ1bmN0aW9uKCl7dmFyIHQsZT10aGlz
LmdldEF0dHJpYnV0ZShhKTtyZXR1cm4gZSE9PW4mJih0PW8oZSxuKSxmdW5jdGlvbihuKXt0aGlz
LnNldEF0dHJpYnV0ZShhLHQobikpfSl9KX1mdW5jdGlvbiBpKG4pe3JldHVybiBudWxsPT1uP3I6
KG4rPSIiLGZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLmdldEF0dHJpYnV0ZU5TKGEuc3BhY2UsYS5s
b2NhbCk7cmV0dXJuIGUhPT1uJiYodD1vKGUsbiksZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1
dGVOUyhhLnNwYWNlLGEubG9jYWwsdChuKSl9KX0pfWlmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9y
KHQgaW4gbil0aGlzLmF0dHIodCxuW3RdKTtyZXR1cm4gdGhpc312YXIgbz0idHJhbnNmb3JtIj09
bj9EdTpodSxhPVpvLm5zLnF1YWxpZnkobik7cmV0dXJuIFJvKHRoaXMsImF0dHIuIituLHQsYS5s
b2NhbD9pOnUpfSxDcy5hdHRyVHdlZW49ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKG4sZSl7dmFy
IHI9dC5jYWxsKHRoaXMsbixlLHRoaXMuZ2V0QXR0cmlidXRlKHUpKTtyZXR1cm4gciYmZnVuY3Rp
b24obil7dGhpcy5zZXRBdHRyaWJ1dGUodSxyKG4pKX19ZnVuY3Rpb24gcihuLGUpe3ZhciByPXQu
Y2FsbCh0aGlzLG4sZSx0aGlzLmdldEF0dHJpYnV0ZU5TKHUuc3BhY2UsdS5sb2NhbCkpO3JldHVy
biByJiZmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHUuc3BhY2UsdS5sb2NhbCxyKG4p
KX19dmFyIHU9Wm8ubnMucXVhbGlmeShuKTtyZXR1cm4gdGhpcy50d2VlbigiYXR0ci4iK24sdS5s
b2NhbD9yOmUpfSxDcy5zdHlsZT1mdW5jdGlvbihuLHQsZSl7ZnVuY3Rpb24gcigpe3RoaXMuc3R5
bGUucmVtb3ZlUHJvcGVydHkobil9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gbnVsbD09dD9yOih0Kz0i
IixmdW5jdGlvbigpe3ZhciByLHU9V28uZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLG51bGwpLmdldFBy
b3BlcnR5VmFsdWUobik7cmV0dXJuIHUhPT10JiYocj1odSh1LHQpLGZ1bmN0aW9uKHQpe3RoaXMu
c3R5bGUuc2V0UHJvcGVydHkobixyKHQpLGUpfSl9KX12YXIgaT1hcmd1bWVudHMubGVuZ3RoO2lm
KDM+aSl7aWYoInN0cmluZyIhPXR5cGVvZiBuKXsyPmkmJih0PSIiKTtmb3IoZSBpbiBuKXRoaXMu
c3R5bGUoZSxuW2VdLHQpO3JldHVybiB0aGlzfWU9IiJ9cmV0dXJuIFJvKHRoaXMsInN0eWxlLiIr
bix0LHUpfSxDcy5zdHlsZVR3ZWVuPWZ1bmN0aW9uKG4sdCxlKXtmdW5jdGlvbiByKHIsdSl7dmFy
IGk9dC5jYWxsKHRoaXMscix1LFdvLmdldENvbXB1dGVkU3R5bGUodGhpcyxudWxsKS5nZXRQcm9w
ZXJ0eVZhbHVlKG4pKTtyZXR1cm4gaSYmZnVuY3Rpb24odCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0
eShuLGkodCksZSl9fXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDMmJihlPSIiKSx0aGlzLnR3ZWVu
KCJzdHlsZS4iK24scil9LENzLnRleHQ9ZnVuY3Rpb24obil7cmV0dXJuIFJvKHRoaXMsInRleHQi
LG4sRG8pfSxDcy5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKCJlbmQudHJhbnNp
dGlvbiIsZnVuY3Rpb24oKXt2YXIgbjt0aGlzLl9fdHJhbnNpdGlvbl9fLmNvdW50PDImJihuPXRo
aXMucGFyZW50Tm9kZSkmJm4ucmVtb3ZlQ2hpbGQodGhpcyl9KX0sQ3MuZWFzZT1mdW5jdGlvbihu
KXt2YXIgdD10aGlzLmlkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/dGhpcy5ub2RlKCkuX190
cmFuc2l0aW9uX19bdF0uZWFzZTooImZ1bmN0aW9uIiE9dHlwZW9mIG4mJihuPVpvLmVhc2UuYXBw
bHkoWm8sYXJndW1lbnRzKSksUCh0aGlzLGZ1bmN0aW9uKGUpe2UuX190cmFuc2l0aW9uX19bdF0u
ZWFzZT1ufSkpfSxDcy5kZWxheT1mdW5jdGlvbihuKXt2YXIgdD10aGlzLmlkO3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPDE/dGhpcy5ub2RlKCkuX190cmFuc2l0aW9uX19bdF0uZGVsYXk6UCh0aGlz
LCJmdW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0aW9uKGUscix1KXtlLl9fdHJhbnNpdGlvbl9fW3Rd
LmRlbGF5PStuLmNhbGwoZSxlLl9fZGF0YV9fLHIsdSl9OihuPStuLGZ1bmN0aW9uKGUpe2UuX190
cmFuc2l0aW9uX19bdF0uZGVsYXk9bn0pKX0sQ3MuZHVyYXRpb249ZnVuY3Rpb24obil7dmFyIHQ9
dGhpcy5pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP3RoaXMubm9kZSgpLl9fdHJhbnNpdGlv
bl9fW3RdLmR1cmF0aW9uOlAodGhpcywiZnVuY3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbihlLHIs
dSl7ZS5fX3RyYW5zaXRpb25fX1t0XS5kdXJhdGlvbj1NYXRoLm1heCgxLG4uY2FsbChlLGUuX19k
YXRhX18scix1KSl9OihuPU1hdGgubWF4KDEsbiksZnVuY3Rpb24oZSl7ZS5fX3RyYW5zaXRpb25f
X1t0XS5kdXJhdGlvbj1ufSkpfSxDcy5lYWNoPWZ1bmN0aW9uKG4sdCl7dmFyIGU9dGhpcy5pZDtp
Zihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciByPWtzLHU9U3M7U3M9ZSxQKHRoaXMsZnVuY3Rpb24o
dCxyLHUpe2tzPXQuX190cmFuc2l0aW9uX19bZV0sbi5jYWxsKHQsdC5fX2RhdGFfXyxyLHUpfSks
a3M9cixTcz11fWVsc2UgUCh0aGlzLGZ1bmN0aW9uKHIpe3ZhciB1PXIuX190cmFuc2l0aW9uX19b
ZV07KHUuZXZlbnR8fCh1LmV2ZW50PVpvLmRpc3BhdGNoKCJzdGFydCIsImVuZCIpKSkub24obix0
KX0pO3JldHVybiB0aGlzfSxDcy50cmFuc2l0aW9uPWZ1bmN0aW9uKCl7Zm9yKHZhciBuLHQsZSxy
LHU9dGhpcy5pZCxpPSsrTnMsbz1bXSxhPTAsYz10aGlzLmxlbmd0aDtjPmE7YSsrKXtvLnB1c2go
bj1bXSk7Zm9yKHZhciB0PXRoaXNbYV0scz0wLGw9dC5sZW5ndGg7bD5zO3MrKykoZT10W3NdKSYm
KHI9T2JqZWN0LmNyZWF0ZShlLl9fdHJhbnNpdGlvbl9fW3VdKSxyLmRlbGF5Kz1yLmR1cmF0aW9u
LFBvKGUscyxpLHIpKSxuLnB1c2goZSl9cmV0dXJuIHFvKG8saSl9LFpvLnN2Zy5heGlzPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gbihuKXtuLmVhY2goZnVuY3Rpb24oKXt2YXIgbixzPVpvLnNlbGVjdCh0
aGlzKSxsPXRoaXMuX19jaGFydF9ffHxlLGY9dGhpcy5fX2NoYXJ0X189ZS5jb3B5KCksaD1udWxs
PT1jP2YudGlja3M/Zi50aWNrcy5hcHBseShmLGEpOmYuZG9tYWluKCk6YyxnPW51bGw9PXQ/Zi50
aWNrRm9ybWF0P2YudGlja0Zvcm1hdC5hcHBseShmLGEpOnd0OnQscD1zLnNlbGVjdEFsbCgiLnRp
Y2siKS5kYXRhKGgsZiksdj1wLmVudGVyKCkuaW5zZXJ0KCJnIiwiLmRvbWFpbiIpLmF0dHIoImNs
YXNzIiwidGljayIpLnN0eWxlKCJvcGFjaXR5IixrYSksZD1aby50cmFuc2l0aW9uKHAuZXhpdCgp
KS5zdHlsZSgib3BhY2l0eSIsa2EpLnJlbW92ZSgpLG09Wm8udHJhbnNpdGlvbihwLm9yZGVyKCkp
LnN0eWxlKCJvcGFjaXR5IiwxKSx5PVRpKGYpLHg9cy5zZWxlY3RBbGwoIi5kb21haW4iKS5kYXRh
KFswXSksTT0oeC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiZG9tYWluIiks
Wm8udHJhbnNpdGlvbih4KSk7di5hcHBlbmQoImxpbmUiKSx2LmFwcGVuZCgidGV4dCIpO3ZhciBf
PXYuc2VsZWN0KCJsaW5lIiksYj1tLnNlbGVjdCgibGluZSIpLHc9cC5zZWxlY3QoInRleHQiKS50
ZXh0KGcpLFM9di5zZWxlY3QoInRleHQiKSxrPW0uc2VsZWN0KCJ0ZXh0Iik7c3dpdGNoKHIpe2Nh
c2UiYm90dG9tIjpuPVVvLF8uYXR0cigieTIiLHUpLFMuYXR0cigieSIsTWF0aC5tYXgodSwwKStv
KSxiLmF0dHIoIngyIiwwKS5hdHRyKCJ5MiIsdSksay5hdHRyKCJ4IiwwKS5hdHRyKCJ5IixNYXRo
Lm1heCh1LDApK28pLHcuYXR0cigiZHkiLCIuNzFlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1p
ZGRsZSIpLE0uYXR0cigiZCIsIk0iK3lbMF0rIiwiK2krIlYwSCIreVsxXSsiViIraSk7YnJlYWs7
Y2FzZSJ0b3AiOm49VW8sXy5hdHRyKCJ5MiIsLXUpLFMuYXR0cigieSIsLShNYXRoLm1heCh1LDAp
K28pKSxiLmF0dHIoIngyIiwwKS5hdHRyKCJ5MiIsLXUpLGsuYXR0cigieCIsMCkuYXR0cigieSIs
LShNYXRoLm1heCh1LDApK28pKSx3LmF0dHIoImR5IiwiMGVtIikuc3R5bGUoInRleHQtYW5jaG9y
IiwibWlkZGxlIiksTS5hdHRyKCJkIiwiTSIreVswXSsiLCIrLWkrIlYwSCIreVsxXSsiViIrLWkp
O2JyZWFrO2Nhc2UibGVmdCI6bj1qbyxfLmF0dHIoIngyIiwtdSksUy5hdHRyKCJ4IiwtKE1hdGgu
bWF4KHUsMCkrbykpLGIuYXR0cigieDIiLC11KS5hdHRyKCJ5MiIsMCksay5hdHRyKCJ4IiwtKE1h
dGgubWF4KHUsMCkrbykpLmF0dHIoInkiLDApLHcuYXR0cigiZHkiLCIuMzJlbSIpLnN0eWxlKCJ0
ZXh0LWFuY2hvciIsImVuZCIpLE0uYXR0cigiZCIsIk0iKy1pKyIsIit5WzBdKyJIMFYiK3lbMV0r
IkgiKy1pKTticmVhaztjYXNlInJpZ2h0IjpuPWpvLF8uYXR0cigieDIiLHUpLFMuYXR0cigieCIs
TWF0aC5tYXgodSwwKStvKSxiLmF0dHIoIngyIix1KS5hdHRyKCJ5MiIsMCksay5hdHRyKCJ4IixN
YXRoLm1heCh1LDApK28pLmF0dHIoInkiLDApLHcuYXR0cigiZHkiLCIuMzJlbSIpLnN0eWxlKCJ0
ZXh0LWFuY2hvciIsInN0YXJ0IiksTS5hdHRyKCJkIiwiTSIraSsiLCIreVswXSsiSDBWIit5WzFd
KyJIIitpKX1pZihmLnJhbmdlQmFuZCl7dmFyIEU9ZixBPUUucmFuZ2VCYW5kKCkvMjtsPWY9ZnVu
Y3Rpb24obil7cmV0dXJuIEUobikrQX19ZWxzZSBsLnJhbmdlQmFuZD9sPWY6ZC5jYWxsKG4sZik7
di5jYWxsKG4sbCksbS5jYWxsKG4sZil9KX12YXIgdCxlPVpvLnNjYWxlLmxpbmVhcigpLHI9enMs
dT02LGk9NixvPTMsYT1bMTBdLGM9bnVsbDtyZXR1cm4gbi5zY2FsZT1mdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4ub3JpZW50PWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhyPXQgaW4gTHM/dCsiIjp6cyxuKTpyfSxuLnRpY2tzPWZ1bmN0
aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9YXJndW1lbnRzLG4pOmF9LG4udGlja1Zh
bHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10LG4pOmN9LG4udGlj
a0Zvcm1hdD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLG4pOnR9LG4u
dGlja1NpemU9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gZT8odT0r
dCxpPSthcmd1bWVudHNbZS0xXSxuKTp1fSxuLmlubmVyVGlja1NpemU9ZnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9K3Qsbik6dX0sbi5vdXRlclRpY2tTaXplPWZ1bmN0aW9u
KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSt0LG4pOml9LG4udGlja1BhZGRpbmc9ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3Qsbik6b30sbi50aWNrU3ViZGl2
aWRlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGgmJm59LG59O3ZhciB6cz0iYm90
dG9tIixMcz17dG9wOjEscmlnaHQ6MSxib3R0b206MSxsZWZ0OjF9O1pvLnN2Zy5icnVzaD1mdW5j
dGlvbigpe2Z1bmN0aW9uIG4oaSl7aS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9Wm8uc2VsZWN0KHRo
aXMpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdo
bGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIikub24oIm1vdXNlZG93bi5icnVzaCIsdSkub24o
InRvdWNoc3RhcnQuYnJ1c2giLHUpLG89aS5zZWxlY3RBbGwoIi5iYWNrZ3JvdW5kIikuZGF0YShb
MF0pO28uZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImJhY2tncm91bmQiKS5z
dHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpLnN0eWxlKCJjdXJzb3IiLCJjcm9zc2hhaXIiKSxp
LnNlbGVjdEFsbCgiLmV4dGVudCIpLmRhdGEoWzBdKS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0
dHIoImNsYXNzIiwiZXh0ZW50Iikuc3R5bGUoImN1cnNvciIsIm1vdmUiKTt2YXIgYT1pLnNlbGVj
dEFsbCgiLnJlc2l6ZSIpLmRhdGEocCx3dCk7YS5leGl0KCkucmVtb3ZlKCksYS5lbnRlcigpLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIixmdW5jdGlvbihuKXtyZXR1cm4icmVzaXplICIrbn0pLnN0
eWxlKCJjdXJzb3IiLGZ1bmN0aW9uKG4pe3JldHVybiBUc1tuXX0pLmFwcGVuZCgicmVjdCIpLmF0
dHIoIngiLGZ1bmN0aW9uKG4pe3JldHVybi9bZXddJC8udGVzdChuKT8tMzpudWxsfSkuYXR0cigi
eSIsZnVuY3Rpb24obil7cmV0dXJuL15bbnNdLy50ZXN0KG4pPy0zOm51bGx9KS5hdHRyKCJ3aWR0
aCIsNikuYXR0cigiaGVpZ2h0Iiw2KS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpLGEuc3R5
bGUoImRpc3BsYXkiLG4uZW1wdHkoKT8ibm9uZSI6bnVsbCk7dmFyIGwsZj1aby50cmFuc2l0aW9u
KGkpLGg9Wm8udHJhbnNpdGlvbihvKTtjJiYobD1UaShjKSxoLmF0dHIoIngiLGxbMF0pLmF0dHIo
IndpZHRoIixsWzFdLWxbMF0pLGUoZikpLHMmJihsPVRpKHMpLGguYXR0cigieSIsbFswXSkuYXR0
cigiaGVpZ2h0IixsWzFdLWxbMF0pLHIoZikpLHQoZil9KX1mdW5jdGlvbiB0KG4pe24uc2VsZWN0
QWxsKCIucmVzaXplIikuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihuKXtyZXR1cm4idHJhbnNs
YXRlKCIrbFsrL2UkLy50ZXN0KG4pXSsiLCIrZlsrL15zLy50ZXN0KG4pXSsiKSJ9KX1mdW5jdGlv
biBlKG4pe24uc2VsZWN0KCIuZXh0ZW50IikuYXR0cigieCIsbFswXSksbi5zZWxlY3RBbGwoIi5l
eHRlbnQsLm4+cmVjdCwucz5yZWN0IikuYXR0cigid2lkdGgiLGxbMV0tbFswXSl9ZnVuY3Rpb24g
cihuKXtuLnNlbGVjdCgiLmV4dGVudCIpLmF0dHIoInkiLGZbMF0pLG4uc2VsZWN0QWxsKCIuZXh0
ZW50LC5lPnJlY3QsLnc+cmVjdCIpLmF0dHIoImhlaWdodCIsZlsxXS1mWzBdKX1mdW5jdGlvbiB1
KCl7ZnVuY3Rpb24gdSgpezMyPT1aby5ldmVudC5rZXlDb2RlJiYoQ3x8KHg9bnVsbCx6WzBdLT1s
WzFdLHpbMV0tPWZbMV0sQz0yKSx5KCkpfWZ1bmN0aW9uIHAoKXszMj09Wm8uZXZlbnQua2V5Q29k
ZSYmMj09QyYmKHpbMF0rPWxbMV0selsxXSs9ZlsxXSxDPTAseSgpKX1mdW5jdGlvbiB2KCl7dmFy
IG49Wm8ubW91c2UoXyksdT0hMTtNJiYoblswXSs9TVswXSxuWzFdKz1NWzFdKSxDfHwoWm8uZXZl
bnQuYWx0S2V5Pyh4fHwoeD1bKGxbMF0rbFsxXSkvMiwoZlswXStmWzFdKS8yXSkselswXT1sWyso
blswXTx4WzBdKV0selsxXT1mWysoblsxXTx4WzFdKV0pOng9bnVsbCksRSYmZChuLGMsMCkmJihl
KFMpLHU9ITApLEEmJmQobixzLDEpJiYocihTKSx1PSEwKSx1JiYodChTKSx3KHt0eXBlOiJicnVz
aCIsbW9kZTpDPyJtb3ZlIjoicmVzaXplIn0pKX1mdW5jdGlvbiBkKG4sdCxlKXt2YXIgcix1LGE9
VGkodCksYz1hWzBdLHM9YVsxXSxwPXpbZV0sdj1lP2Y6bCxkPXZbMV0tdlswXTtyZXR1cm4gQyYm
KGMtPXAscy09ZCtwKSxyPShlP2c6aCk/TWF0aC5tYXgoYyxNYXRoLm1pbihzLG5bZV0pKTpuW2Vd
LEM/dT0ocis9cCkrZDooeCYmKHA9TWF0aC5tYXgoYyxNYXRoLm1pbihzLDIqeFtlXS1yKSkpLHI+
cD8odT1yLHI9cCk6dT1wKSx2WzBdIT1yfHx2WzFdIT11PyhlP289bnVsbDppPW51bGwsdlswXT1y
LHZbMV09dSwhMCk6dm9pZCAwfWZ1bmN0aW9uIG0oKXt2KCksUy5zdHlsZSgicG9pbnRlci1ldmVu
dHMiLCJhbGwiKS5zZWxlY3RBbGwoIi5yZXNpemUiKS5zdHlsZSgiZGlzcGxheSIsbi5lbXB0eSgp
PyJub25lIjpudWxsKSxaby5zZWxlY3QoImJvZHkiKS5zdHlsZSgiY3Vyc29yIixudWxsKSxMLm9u
KCJtb3VzZW1vdmUuYnJ1c2giLG51bGwpLm9uKCJtb3VzZXVwLmJydXNoIixudWxsKS5vbigidG91
Y2htb3ZlLmJydXNoIixudWxsKS5vbigidG91Y2hlbmQuYnJ1c2giLG51bGwpLm9uKCJrZXlkb3du
LmJydXNoIixudWxsKS5vbigia2V5dXAuYnJ1c2giLG51bGwpLE4oKSx3KHt0eXBlOiJicnVzaGVu
ZCJ9KX12YXIgeCxNLF89dGhpcyxiPVpvLnNlbGVjdChaby5ldmVudC50YXJnZXQpLHc9YS5vZihf
LGFyZ3VtZW50cyksUz1aby5zZWxlY3QoXyksaz1iLmRhdHVtKCksRT0hL14obnxzKSQvLnRlc3Qo
aykmJmMsQT0hL14oZXx3KSQvLnRlc3QoaykmJnMsQz1iLmNsYXNzZWQoImV4dGVudCIpLE49SSgp
LHo9Wm8ubW91c2UoXyksTD1aby5zZWxlY3QoV28pLm9uKCJrZXlkb3duLmJydXNoIix1KS5vbigi
a2V5dXAuYnJ1c2giLHApO2lmKFpvLmV2ZW50LmNoYW5nZWRUb3VjaGVzP0wub24oInRvdWNobW92
ZS5icnVzaCIsdikub24oInRvdWNoZW5kLmJydXNoIixtKTpMLm9uKCJtb3VzZW1vdmUuYnJ1c2gi
LHYpLm9uKCJtb3VzZXVwLmJydXNoIixtKSxTLmludGVycnVwdCgpLnNlbGVjdEFsbCgiKiIpLmlu
dGVycnVwdCgpLEMpelswXT1sWzBdLXpbMF0selsxXT1mWzBdLXpbMV07ZWxzZSBpZihrKXt2YXIg
VD0rL3ckLy50ZXN0KGspLHE9Ky9ebi8udGVzdChrKTtNPVtsWzEtVF0telswXSxmWzEtcV0telsx
XV0selswXT1sW1RdLHpbMV09ZltxXX1lbHNlIFpvLmV2ZW50LmFsdEtleSYmKHg9ei5zbGljZSgp
KTtTLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKS5zZWxlY3RBbGwoIi5yZXNpemUiKS5z
dHlsZSgiZGlzcGxheSIsbnVsbCksWm8uc2VsZWN0KCJib2R5Iikuc3R5bGUoImN1cnNvciIsYi5z
dHlsZSgiY3Vyc29yIikpLHcoe3R5cGU6ImJydXNoc3RhcnQifSksdigpfXZhciBpLG8sYT1NKG4s
ImJydXNoc3RhcnQiLCJicnVzaCIsImJydXNoZW5kIiksYz1udWxsLHM9bnVsbCxsPVswLDBdLGY9
WzAsMF0saD0hMCxnPSEwLHA9cXNbMF07cmV0dXJuIG4uZXZlbnQ9ZnVuY3Rpb24obil7bi5lYWNo
KGZ1bmN0aW9uKCl7dmFyIG49YS5vZih0aGlzLGFyZ3VtZW50cyksdD17eDpsLHk6ZixpOmksajpv
fSxlPXRoaXMuX19jaGFydF9ffHx0O3RoaXMuX19jaGFydF9fPXQsU3M/Wm8uc2VsZWN0KHRoaXMp
LnRyYW5zaXRpb24oKS5lYWNoKCJzdGFydC5icnVzaCIsZnVuY3Rpb24oKXtpPWUuaSxvPWUuaixs
PWUueCxmPWUueSxuKHt0eXBlOiJicnVzaHN0YXJ0In0pfSkudHdlZW4oImJydXNoOmJydXNoIixm
dW5jdGlvbigpe3ZhciBlPWd1KGwsdC54KSxyPWd1KGYsdC55KTtyZXR1cm4gaT1vPW51bGwsZnVu
Y3Rpb24odSl7bD10Lng9ZSh1KSxmPXQueT1yKHUpLG4oe3R5cGU6ImJydXNoIixtb2RlOiJyZXNp
emUifSl9fSkuZWFjaCgiZW5kLmJydXNoIixmdW5jdGlvbigpe2k9dC5pLG89dC5qLG4oe3R5cGU6
ImJydXNoIixtb2RlOiJyZXNpemUifSksbih7dHlwZToiYnJ1c2hlbmQifSl9KToobih7dHlwZToi
YnJ1c2hzdGFydCJ9KSxuKHt0eXBlOiJicnVzaCIsbW9kZToicmVzaXplIn0pLG4oe3R5cGU6ImJy
dXNoZW5kIn0pKX0pfSxuLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9
dCxwPXFzWyFjPDwxfCFzXSxuKTpjfSxuLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHM9dCxwPXFzWyFjPDwxfCFzXSxuKTpzfSxuLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhjJiZzPyhoPSEhdFswXSxnPSEhdFsxXSk6Yz9oPSEhdDpzJiYo
Zz0hIXQpLG4pOmMmJnM/W2gsZ106Yz9oOnM/ZzpudWxsfSxuLmV4dGVudD1mdW5jdGlvbih0KXt2
YXIgZSxyLHUsYSxoO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjJiYoZT10WzBdLHI9dFsxXSxz
JiYoZT1lWzBdLHI9clswXSksaT1bZSxyXSxjLmludmVydCYmKGU9YyhlKSxyPWMocikpLGU+ciYm
KGg9ZSxlPXIscj1oKSwoZSE9bFswXXx8ciE9bFsxXSkmJihsPVtlLHJdKSkscyYmKHU9dFswXSxh
PXRbMV0sYyYmKHU9dVsxXSxhPWFbMV0pLG89W3UsYV0scy5pbnZlcnQmJih1PXModSksYT1zKGEp
KSx1PmEmJihoPXUsdT1hLGE9aCksKHUhPWZbMF18fGEhPWZbMV0pJiYoZj1bdSxhXSkpLG4pOihj
JiYoaT8oZT1pWzBdLHI9aVsxXSk6KGU9bFswXSxyPWxbMV0sYy5pbnZlcnQmJihlPWMuaW52ZXJ0
KGUpLHI9Yy5pbnZlcnQocikpLGU+ciYmKGg9ZSxlPXIscj1oKSkpLHMmJihvPyh1PW9bMF0sYT1v
WzFdKToodT1mWzBdLGE9ZlsxXSxzLmludmVydCYmKHU9cy5pbnZlcnQodSksYT1zLmludmVydChh
KSksdT5hJiYoaD11LHU9YSxhPWgpKSksYyYmcz9bW2UsdV0sW3IsYV1dOmM/W2Uscl06cyYmW3Us
YV0pfSxuLmNsZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIG4uZW1wdHkoKXx8KGw9WzAsMF0sZj1bMCww
XSxpPW89bnVsbCksbn0sbi5lbXB0eT1mdW5jdGlvbigpe3JldHVybiEhYyYmbFswXT09bFsxXXx8
ISFzJiZmWzBdPT1mWzFdfSxaby5yZWJpbmQobixhLCJvbiIpfTt2YXIgVHM9e246Im5zLXJlc2l6
ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVz
aXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0s
cXM9W1sibiIsImUiLCJzIiwidyIsIm53IiwibmUiLCJzZSIsInN3Il0sWyJlIiwidyJdLFsibiIs
InMiXSxbXV0sUnM9UWEuZm9ybWF0PWljLnRpbWVGb3JtYXQsRHM9UnMudXRjLFBzPURzKCIlWS0l
bS0lZFQlSDolTTolUy4lTFoiKTtScy5pc289RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcmJitu
ZXcgRGF0ZSgiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaIik/SG86UHMsSG8ucGFyc2U9ZnVuY3Rp
b24obil7dmFyIHQ9bmV3IERhdGUobik7cmV0dXJuIGlzTmFOKHQpP251bGw6dH0sSG8udG9TdHJp
bmc9UHMudG9TdHJpbmcsUWEuc2Vjb25kPUR0KGZ1bmN0aW9uKG4pe3JldHVybiBuZXcgbmMoMWUz
Kk1hdGguZmxvb3Iobi8xZTMpKX0sZnVuY3Rpb24obix0KXtuLnNldFRpbWUobi5nZXRUaW1lKCkr
MWUzKk1hdGguZmxvb3IodCkpfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRTZWNvbmRzKCl9KSxR
YS5zZWNvbmRzPVFhLnNlY29uZC5yYW5nZSxRYS5zZWNvbmRzLnV0Yz1RYS5zZWNvbmQudXRjLnJh
bmdlLFFhLm1pbnV0ZT1EdChmdW5jdGlvbihuKXtyZXR1cm4gbmV3IG5jKDZlNCpNYXRoLmZsb29y
KG4vNmU0KSl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKG4uZ2V0VGltZSgpKzZlNCpNYXRoLmZs
b29yKHQpKX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0TWludXRlcygpfSksUWEubWludXRlcz1R
YS5taW51dGUucmFuZ2UsUWEubWludXRlcy51dGM9UWEubWludXRlLnV0Yy5yYW5nZSxRYS5ob3Vy
PUR0KGZ1bmN0aW9uKG4pe3ZhciB0PW4uZ2V0VGltZXpvbmVPZmZzZXQoKS82MDtyZXR1cm4gbmV3
IG5jKDM2ZTUqKE1hdGguZmxvb3Iobi8zNmU1LXQpK3QpKX0sZnVuY3Rpb24obix0KXtuLnNldFRp
bWUobi5nZXRUaW1lKCkrMzZlNSpNYXRoLmZsb29yKHQpKX0sZnVuY3Rpb24obil7cmV0dXJuIG4u
Z2V0SG91cnMoKX0pLFFhLmhvdXJzPVFhLmhvdXIucmFuZ2UsUWEuaG91cnMudXRjPVFhLmhvdXIu
dXRjLnJhbmdlLFFhLm1vbnRoPUR0KGZ1bmN0aW9uKG4pe3JldHVybiBuPVFhLmRheShuKSxuLnNl
dERhdGUoMSksbn0sZnVuY3Rpb24obix0KXtuLnNldE1vbnRoKG4uZ2V0TW9udGgoKSt0KX0sZnVu
Y3Rpb24obil7cmV0dXJuIG4uZ2V0TW9udGgoKX0pLFFhLm1vbnRocz1RYS5tb250aC5yYW5nZSxR
YS5tb250aHMudXRjPVFhLm1vbnRoLnV0Yy5yYW5nZTt2YXIgVXM9WzFlMyw1ZTMsMTVlMywzZTQs
NmU0LDNlNSw5ZTUsMThlNSwzNmU1LDEwOGU1LDIxNmU1LDQzMmU1LDg2NGU1LDE3MjhlNSw2MDQ4
ZTUsMjU5MmU2LDc3NzZlNiwzMTUzNmU2XSxqcz1bW1FhLnNlY29uZCwxXSxbUWEuc2Vjb25kLDVd
LFtRYS5zZWNvbmQsMTVdLFtRYS5zZWNvbmQsMzBdLFtRYS5taW51dGUsMV0sW1FhLm1pbnV0ZSw1
XSxbUWEubWludXRlLDE1XSxbUWEubWludXRlLDMwXSxbUWEuaG91ciwxXSxbUWEuaG91ciwzXSxb
UWEuaG91ciw2XSxbUWEuaG91ciwxMl0sW1FhLmRheSwxXSxbUWEuZGF5LDJdLFtRYS53ZWVrLDFd
LFtRYS5tb250aCwxXSxbUWEubW9udGgsM10sW1FhLnllYXIsMV1dLEhzPVJzLm11bHRpKFtbIi4l
TCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0TWlsbGlzZWNvbmRzKCl9XSxbIjolUyIsZnVuY3Rp
b24obil7cmV0dXJuIG4uZ2V0U2Vjb25kcygpfV0sWyIlSTolTSIsZnVuY3Rpb24obil7cmV0dXJu
IG4uZ2V0TWludXRlcygpfV0sWyIlSSAlcCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0SG91cnMo
KX1dLFsiJWEgJWQiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldERheSgpJiYxIT1uLmdldERhdGUo
KX1dLFsiJWIgJWQiLGZ1bmN0aW9uKG4pe3JldHVybiAxIT1uLmdldERhdGUoKX1dLFsiJUIiLGZ1
bmN0aW9uKG4pe3JldHVybiBuLmdldE1vbnRoKCl9XSxbIiVZIix3ZV1dKSxGcz17cmFuZ2U6ZnVu
Y3Rpb24obix0LGUpe3JldHVybiBaby5yYW5nZShNYXRoLmNlaWwobi9lKSplLCt0LGUpLm1hcChP
byl9LGZsb29yOnd0LGNlaWw6d3R9O2pzLnllYXI9UWEueWVhcixRYS5zY2FsZT1mdW5jdGlvbigp
e3JldHVybiBGbyhaby5zY2FsZS5saW5lYXIoKSxqcyxIcyl9O3ZhciBPcz1qcy5tYXAoZnVuY3Rp
b24obil7cmV0dXJuW25bMF0udXRjLG5bMV1dfSksWXM9RHMubXVsdGkoW1siLiVMIixmdW5jdGlv
bihuKXtyZXR1cm4gbi5nZXRVVENNaWxsaXNlY29uZHMoKX1dLFsiOiVTIixmdW5jdGlvbihuKXty
ZXR1cm4gbi5nZXRVVENTZWNvbmRzKCl9XSxbIiVJOiVNIixmdW5jdGlvbihuKXtyZXR1cm4gbi5n
ZXRVVENNaW51dGVzKCl9XSxbIiVJICVwIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENIb3Vy
cygpfV0sWyIlYSAlZCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDRGF5KCkmJjEhPW4uZ2V0
VVRDRGF0ZSgpfV0sWyIlYiAlZCIsZnVuY3Rpb24obil7cmV0dXJuIDEhPW4uZ2V0VVRDRGF0ZSgp
fV0sWyIlQiIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDTW9udGgoKX1dLFsiJVkiLHdlXV0p
O09zLnllYXI9UWEueWVhci51dGMsUWEuc2NhbGUudXRjPWZ1bmN0aW9uKCl7cmV0dXJuIEZvKFpv
LnNjYWxlLmxpbmVhcigpLE9zLFlzKX0sWm8udGV4dD1TdChmdW5jdGlvbihuKXtyZXR1cm4gbi5y
ZXNwb25zZVRleHR9KSxaby5qc29uPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGt0KG4sImFwcGxpY2F0
aW9uL2pzb24iLFlvLHQpfSxaby5odG1sPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGt0KG4sInRleHQv
aHRtbCIsSW8sdCl9LFpvLnhtbD1TdChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZXNwb25zZVhNTH0p
LCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFpvKToib2JqZWN0
Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHMmJihtb2R1bGUuZXhwb3J0cz1abyksdGhp
cy5kMz1ab30oKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBoLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjFmNWY1Li4wMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBoLmpzCisrKyAvZGV2L251bGwK
QEAgLTEsMTQyICswLDAgQEAKLWZ1bmN0aW9uIGdyYXBoKHNlbGVjdG9yLCBtYXJnaW5zLCBheGVz
LCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpCi17Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKLSAgICBlbGVtZW50LmlubmVySFRNTCA9ICcn
OwotCi0gICAgdmFyIHNpemUgPSBQb2ludC5lbGVtZW50Q2xpZW50U2l6ZShlbGVtZW50KS5zdWJ0
cmFjdChtYXJnaW5zLnNpemUpOwotCi0gICAgdmFyIHggPSBkMy5zY2FsZS5saW5lYXIoKQotICAg
ICAgICAgICAgLnJhbmdlKFswLCBzaXplLndpZHRoXSkKLSAgICAgICAgICAgIC5kb21haW4oZDMu
ZXh0ZW50KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudGltZU9mZnNldDsgfSkpOyAg
ICAgICAgICAgIAotCi0gICAgdmFyIHlMZWZ0ID0gZDMuc2NhbGUubGluZWFyKCkKLSAgICAgICAg
ICAgIC5yYW5nZShbc2l6ZS5oZWlnaHQsIDBdKQotICAgICAgICAgICAgLmRvbWFpbihbMCwgZDMu
bWF4KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVzWzBdOyB9KV0pOwotCi0g
ICAgdmFyIHlSaWdodCA9IGQzLnNjYWxlLmxpbmVhcigpCi0gICAgICAgICAgICAucmFuZ2UoW3Np
emUuaGVpZ2h0LCAwXSkKLSAgICAgICAgICAgIC5kb21haW4oWzAsIGQzLm1heChzYW1wbGVzLCBm
dW5jdGlvbihkKSB7IHJldHVybiBkLnZhbHVlc1sxXTsgfSldKTsKLQotICAgIHZhciB4QXhpcyA9
IGQzLnN2Zy5heGlzKCkKLSAgICAgICAgICAgIC5zY2FsZSh4KQotICAgICAgICAgICAgLm9yaWVu
dCgiYm90dG9tIik7Ci0KLSAgICB2YXIgeUF4aXNMZWZ0ID0gZDMuc3ZnLmF4aXMoKQotICAgICAg
ICAgICAgLnNjYWxlKHlMZWZ0KQotICAgICAgICAgICAgLm9yaWVudCgibGVmdCIpOwotCi0gICAg
dmFyIHlBeGlzUmlnaHQgPSBkMy5zdmcuYXhpcygpCi0gICAgICAgICAgICAuc2NhbGUoeVJpZ2h0
KQotICAgICAgICAgICAgLm9yaWVudCgicmlnaHQiKTsKLQotICAgIHZhciBsaW5lTGVmdCA9IGQz
LnN2Zy5saW5lKCkKLSAgICAgICAgICAgIC54KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHgoZC50aW1l
T2Zmc2V0KTsgfSkKLSAgICAgICAgICAgIC55KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHlMZWZ0KGQu
dmFsdWVzWzBdKTsgfSk7Ci0KLSAgICB2YXIgbGluZVJpZ2h0ID0gZDMuc3ZnLmxpbmUoKQotICAg
ICAgICAgICAgLngoZnVuY3Rpb24oZCkgeyByZXR1cm4geChkLnRpbWVPZmZzZXQpOyB9KQotICAg
ICAgICAgICAgLnkoZnVuY3Rpb24oZCkgeyByZXR1cm4geVJpZ2h0KGQudmFsdWVzWzFdKTsgfSk7
Ci0KLSAgICBzYW1wbGVzLmZvckVhY2goZnVuY3Rpb24oZCkgewotICAgICAgICBkLnRpbWVPZmZz
ZXQgPSArZC50aW1lT2Zmc2V0OwotICAgICAgICBkLnZhbHVlc1swXSA9ICtkLnZhbHVlc1swXTsK
LSAgICAgICAgZC52YWx1ZXNbMV0gPSArZC52YWx1ZXNbMV07ICAgICAgICAKLSAgICB9KTsgICAg
Ci0KLSAgICB2YXIgc2FtcGxlZFNhbXBsZXMgPSBzYW1wbGVzLmZpbHRlcihmdW5jdGlvbihkKSB7
Ci0gICAgICAgIHJldHVybiBkLnRpbWVPZmZzZXQgPj0gc2FtcGxpbmdUaW1lT2Zmc2V0OwotICAg
IH0pOwotICAgIAotICAgIHZhciBtZWFuTGVmdCA9IGQzLm1lYW4oc2FtcGxlZFNhbXBsZXMsIGZ1
bmN0aW9uKGQpIHsKLSAgICAgICAgcmV0dXJuICtkLnZhbHVlc1swXTsKLSAgICB9KTsKLQotICAg
IHZhciBtZWFuUmlnaHQgPSBkMy5tZWFuKHNhbXBsZWRTYW1wbGVzLCBmdW5jdGlvbihkKSB7Ci0g
ICAgICAgIHJldHVybiArZC52YWx1ZXNbMV07Ci0gICAgfSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCi0gICAgdmFyIHN2ZyA9IGQzLnNlbGVjdChzZWxlY3RvcikuYXBwZW5kKCJzdmci
KQotICAgICAgICAuYXR0cigid2lkdGgiLCBzaXplLndpZHRoICsgbWFyZ2lucy5sZWZ0ICsgbWFy
Z2lucy5yaWdodCkKLSAgICAgICAgLmF0dHIoImhlaWdodCIsIHNpemUuaGVpZ2h0ICsgbWFyZ2lu
cy50b3AgKyBtYXJnaW5zLmJvdHRvbSkKLSAgICAgICAgLmFwcGVuZCgiZyIpCi0gICAgICAgICAg
ICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgbWFyZ2lucy5sZWZ0ICsgIiwiICsg
bWFyZ2lucy50b3AgKyAiKSIpOwotCi0gICAgLy8geC1heGlzCi0gICAgc3ZnLmFwcGVuZCgiZyIp
Ci0gICAgICAgIC5hdHRyKCJjbGFzcyIsICJ4IGF4aXMiKQotICAgICAgICAuYXR0cigiZmlsbCIs
ICJyZ2IoMjM1LCAyMzUsIDIzNSkiKQotICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5z
bGF0ZSgwLCIgKyBzaXplLmhlaWdodCArICIpIikKLSAgICAgICAgLmNhbGwoeEF4aXMpCi0gICAg
ICAgIC5hcHBlbmQoInRleHQiKQotICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikK
LSAgICAgICAgICAgIC5hdHRyKCJ4Iiwgc2l6ZS53aWR0aCkKLSAgICAgICAgICAgIC5hdHRyKCJ5
IiwgLTYpCi0gICAgICAgICAgICAuYXR0cigiZmlsbCIsICJyZ2IoMjM1LCAyMzUsIDIzNSkiKQot
ICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQotICAgICAgICAgICAgLnRl
eHQoInRpbWUiKTsKLSAgICAgICAgICAgICAgICAgCi0gICAgLy8geUxlZnQtYXhpcwotICAgIHN2
Zy5hcHBlbmQoImciKQotICAgICAgICAuYXR0cigiY2xhc3MiLCAieSBheGlzIikKLSAgICAgICAg
LmF0dHIoImZpbGwiLCAiIzdBREQ0OSIpCi0gICAgICAgIC5jYWxsKHlBeGlzTGVmdCkKLSAgICAg
ICAgLmFwcGVuZCgidGV4dCIpCi0gICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQot
ICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCi0gICAgICAgICAg
ICAuYXR0cigieSIsIDYpCi0gICAgICAgICAgICAuYXR0cigiZmlsbCIsICIjN0FERDQ5IikKLSAg
ICAgICAgICAgIC5hdHRyKCJkeSIsICIuNzFlbSIpCi0gICAgICAgICAgICAuc3R5bGUoInRleHQt
YW5jaG9yIiwgImVuZCIpCi0gICAgICAgICAgICAudGV4dChheGVzWzBdKTsKLQotICAgIC8vIHlS
aWdodC1heGlzCi0gICAgc3ZnLmFwcGVuZCgiZyIpCi0gICAgICAgIC5hdHRyKCJjbGFzcyIsICJ5
IGF4aXMiKQotICAgICAgICAuYXR0cigiZmlsbCIsICIjRkE0OTI1IikKLSAgICAgICAgLmF0dHIo
InRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIHNpemUud2lkdGggKyAiLCAwKSIpCi0gICAgICAg
IC5jYWxsKHlBeGlzUmlnaHQpCi0gICAgICAgIC5hcHBlbmQoInRleHQiKQotICAgICAgICAgICAg
LmF0dHIoImNsYXNzIiwgImxhYmVsIikKLSAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAi
cm90YXRlKC05MCkiKQotICAgICAgICAgICAgLmF0dHIoInkiLCA2KQotICAgICAgICAgICAgLmF0
dHIoImZpbGwiLCAiI0ZBNDkyNSIpCi0gICAgICAgICAgICAuYXR0cigiZHkiLCAiLjcxZW0iKQot
ICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQotICAgICAgICAgICAgLnRl
eHQoYXhlc1sxXSk7Ci0KLSAgICAvLyBsZWZ0LW1lYW4KLSAgICBzdmcuYXBwZW5kKCJzdmc6bGlu
ZSIpCi0gICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkpCi0gICAgICAgIC5hdHRyKCJ4MiIsIHNpemUu
d2lkdGgpCi0gICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0KG1lYW5MZWZ0KSkKLSAgICAgICAgLmF0
dHIoInkyIiwgeUxlZnQobWVhbkxlZnQpKQotICAgICAgICAuYXR0cigiY2xhc3MiLCAibGVmdC1t
ZWFuIik7Ci0KLSAgICAvLyByaWdodC1tZWFuCi0gICAgc3ZnLmFwcGVuZCgic3ZnOmxpbmUiKQot
ICAgICAgICAuYXR0cigieDEiLCB4KDApKQotICAgICAgICAuYXR0cigieDIiLCBzaXplLndpZHRo
KQotICAgICAgICAuYXR0cigieTEiLCB5UmlnaHQobWVhblJpZ2h0KSkKLSAgICAgICAgLmF0dHIo
InkyIiwgeVJpZ2h0KG1lYW5SaWdodCkpCi0gICAgICAgIC5hdHRyKCJjbGFzcyIsICJyaWdodC1t
ZWFuIik7ICAgICAgICAKLQotICAgIC8vIHNhbXBsaW5nVGltZU9mZnNldAotICAgIHN2Zy5hcHBl
bmQoImxpbmUiKQotICAgICAgICAuYXR0cigieDEiLCB4KHNhbXBsaW5nVGltZU9mZnNldCkpCi0g
ICAgICAgIC5hdHRyKCJ4MiIsIHgoc2FtcGxpbmdUaW1lT2Zmc2V0KSkKLSAgICAgICAgLmF0dHIo
InkxIiwgeUxlZnQoMCkpCi0gICAgICAgIC5hdHRyKCJ5MiIsIHlMZWZ0KHlBeGlzTGVmdC5zY2Fs
ZSgpLmRvbWFpbigpWzFdKSkKLSAgICAgICAgLmF0dHIoImNsYXNzIiwgInNhbXBsZS10aW1lIik7
Ci0KLSAgICAvLyBsZWZ0LXNhbXBsZXMKLSAgICBzdmcuYXBwZW5kKCJwYXRoIikKLSAgICAgICAg
LmRhdHVtKHNhbXBsZXMpCi0gICAgICAgIC5hdHRyKCJjbGFzcyIsICJsZWZ0LXNhbXBsZXMiKQot
ICAgICAgICAuYXR0cigiZCIsIGxpbmVMZWZ0KTsKLSAgICAgICAgCi0gICAgLy8gcmlnaHQtc2Ft
cGxlcwotICAgIHN2Zy5hcHBlbmQoInBhdGgiKQotICAgICAgICAuZGF0dW0oc2FtcGxlcykKLSAg
ICAgICAgLmF0dHIoImNsYXNzIiwgInJpZ2h0LXNhbXBsZXMiKQotICAgICAgICAuYXR0cigiZCIs
IGxpbmVSaWdodCk7Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cnVubmVyL3Jlc291cmNlcy90ZXN0cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
dW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
OTg3Zjg5Li4wMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIv
cmVzb3VyY2VzL3Rlc3RzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjU2ICswLDAgQEAKLXZhciBI
ZWFkZXJzID0gWwotICAgIHsKLSAgICAgICAgdGV4dDogU3RyaW5ncy50ZXh0LnRlc3ROYW1lLAot
ICAgICAgICB3aWR0aDogMjcsCi0gICAgICAgIGNoaWxkcmVuOiBbXQotICAgIH0sCi0gICAgewot
ICAgICAgICB0ZXh0OiBTdHJpbmdzLnRleHQuc2NvcmUsCi0gICAgICAgIHdpZHRoOiA3LAotICAg
ICAgICBjaGlsZHJlbjogW10KLSAgICB9LAotICAgIHsKLSAgICAgICAgdGV4dDogU3RyaW5ncy50
ZXh0LmV4cGVyaW1lbnRzLmNvbXBsZXhpdHksCi0gICAgICAgIHdpZHRoOiAyNywKLSAgICAgICAg
Y2hpbGRyZW46Ci0gICAgICAgIFsKLSAgICAgICAgICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1l
YXN1cmVtZW50cy5hdmVyYWdlLCB3aWR0aDogNywgY2hpbGRyZW46IFtdIH0sCi0gICAgICAgICAg
ICB7IHRleHQ6IFN0cmluZ3MudGV4dC5tZWFzdXJlbWVudHMuY29uY2Vybiwgd2lkdGg6IDcsIGNo
aWxkcmVuOiBbXSB9LAotICAgICAgICAgICAgeyB0ZXh0OiBTdHJpbmdzLnRleHQubWVhc3VyZW1l
bnRzLnN0ZGV2LCB3aWR0aDogNywgY2hpbGRyZW46IFtdIH0sCi0gICAgICAgICAgICB7IHRleHQ6
IFN0cmluZ3MudGV4dC5tZWFzdXJlbWVudHMucGVyY2VudCwgd2lkdGg6IDYsIGNoaWxkcmVuOiBb
XSB9LAotICAgICAgICBdCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIHRleHQ6IFN0cmluZ3MudGV4
dC5leHBlcmltZW50cy5mcmFtZVJhdGUsCi0gICAgICAgIHdpZHRoOiAyNCwKLSAgICAgICAgY2hp
bGRyZW46Ci0gICAgICAgIFsKLSAgICAgICAgICAgIHsgdGV4dDogU3RyaW5ncy50ZXh0Lm1lYXN1
cmVtZW50cy5hdmVyYWdlLCB3aWR0aDogNiwgY2hpbGRyZW46IFtdIH0sCi0gICAgICAgICAgICB7
IHRleHQ6IFN0cmluZ3MudGV4dC5tZWFzdXJlbWVudHMuY29uY2Vybiwgd2lkdGg6IDYsIGNoaWxk
cmVuOiBbXSB9LAotICAgICAgICAgICAgeyB0ZXh0OiBTdHJpbmdzLnRleHQubWVhc3VyZW1lbnRz
LnN0ZGV2LCB3aWR0aDogNiwgY2hpbGRyZW46IFtdIH0sCi0gICAgICAgICAgICB7IHRleHQ6IFN0
cmluZ3MudGV4dC5tZWFzdXJlbWVudHMucGVyY2VudCwgd2lkdGg6IDYsIGNoaWxkcmVuOiBbXSB9
LAotICAgICAgICBdCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIHRleHQ6IFN0cmluZ3MudGV4dC5z
YW1wbGVzLAotICAgICAgICB3aWR0aDogMTUsCi0gICAgICAgIGNoaWxkcmVuOgotICAgICAgICBb
Ci0gICAgICAgICAgICB7IHRleHQ6IFN0cmluZ3MudGV4dC5yZXN1bHRzLmdyYXBoLCB3aWR0aDog
OCwgY2hpbGRyZW46IFtdIH0sCi0gICAgICAgICAgICB7IHRleHQ6IFN0cmluZ3MudGV4dC5yZXN1
bHRzLmpzb24sIHdpZHRoOiA3LCBjaGlsZHJlbjogW10gfSwKLSAgICAgICAgXQotICAgIH0KLV07
Ci0KLXZhciBTdWl0ZSA9IGZ1bmN0aW9uKG5hbWUsIHRlc3RzKSB7Ci0gICAgdGhpcy5uYW1lID0g
bmFtZTsKLSAgICB0aGlzLnRlc3RzID0gdGVzdHM7Ci19OwotU3VpdGUucHJvdG90eXBlLnByZXBh
cmUgPSBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkKLXsK
LSAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9u
IChlbGVtZW50KSB7Ci0gICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0pOwotfTsKLVN1aXRl
LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgcmV0dXJuIGNvbnRlbnRXaW5kb3cucnVu
QmVuY2htYXJrKHRoaXMsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7
Ci19OwotCi12YXIgU3VpdGVzID0gW107Ci0KLVN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiSFRNTCBz
dWl0ZSIsCi0gICAgWwotICAgICAgICB7IAotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xl
SGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCi0gICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5n
IGNpcmNsZXMiCi0gICAgICAgIH0sCi0gICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NDAm
cGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAotICAgICAgICAgICAgbmFt
ZTogIkNTUyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIgotICAgICAgICB9LAotICAgICAgICB7IAot
ICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMu
aHRtbD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxs
PWdyYWRpZW50IiwKLSAgICAgICAgICAgIG5hbWU6ICJDU1MgYm91bmNpbmcgZ3JhZGllbnQgY2ly
Y2xlcyIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBhcnRp
Y2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAotICAgICAg
ICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBTVkcgaW1hZ2VzIgotICAgICAgICB9LAotICAgICAg
ICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWlt
YWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4v
cmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCi0gICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5n
IFBORyBpbWFnZXMiCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInRl
eHQvbGF5ZXJpbmctdGV4dC5odG1sIiwKLSAgICAgICAgICAgIG5hbWU6ICJDU1MgbGF5ZXJpbmcg
dGV4dCIKLSAgICAgICAgfSwKLSAgICBdCi0pKTsKLQotU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJD
YW52YXMgc3VpdGUiLAotICAgIFsKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHVybDogImJvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD0x
MiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAotICAgICAgICAgICAgbmFtZTogImNh
bnZhcyBib3VuY2luZyBjaXJjbGVzIgotICAgICAgICB9LAotICAgICAgICB7IAotICAgICAgICAg
ICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9w
YXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwK
LSAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIKLSAgICAg
ICAgfSwKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdo
dD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCi0gICAgICAgICAgICBuYW1lOiAiY2Fu
dmFzIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCi0gICAgICAgIH0sCi0gICAgICAgIHsgCi0g
ICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdl
cy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVz
b3VyY2VzL3lpbi15YW5nLnN2ZyIsCi0gICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5n
IFNWRyBpbWFnZXMiCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0
aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5n
IiwKLSAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgUE5HIGltYWdlcyIKLSAgICAg
ICAgfSwKLSAgICBdCi0pKTsKLQotU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJTVkcgc3VpdGUiLAot
ICAgIFsKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2Jv
dW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEy
JnNoYXBlPWNpcmNsZSIsCi0gICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGNpcmNsZXMi
LAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVI
ZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAotICAgICAgICAgICAgbmFtZTogIlNWRyBi
b3VuY2luZyBjbGlwcGVkIHJlY3RzIiwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAg
ICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9wYXJ0
aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50
IiwKLSAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKLSAg
ICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0
PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAotICAgICAgICAgICAgbmFt
ZTogIlNWRyBib3VuY2luZyBTVkcgaW1hZ2VzIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAg
ICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1s
P3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2Vz
L3lpbi15YW5nLnBuZyIsCi0gICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFBORyBpbWFn
ZXMiCi0gICAgICAgIH0sCi0gICAgXQotKSk7Ci0KLVN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiQmFz
aWMgY2FudmFzIHBhdGggc3VpdGUiLAotICAgIFsKLSAgICAgICAgewotICAgICAgICAgICAgdXJs
OiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1saW5lJmxpbmVDYXA9
YnV0dCIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGxpbmUgc2VnbWVudHMsIGJ1dHQgY2Fw
cyIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBs
ZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1saW5lJmxpbmVDYXA9cm91bmQiLAotICAgICAg
ICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHNlZ21lbnRzLCByb3VuZCBjYXBzIgotICAgICAgICB9
LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRo
cy5odG1sP3BhdGhUeXBlPWxpbmUmbGluZUNhcD1zcXVhcmUiLAotICAgICAgICAgICAgbmFtZTog
IkNhbnZhcyBsaW5lIHNlZ21lbnRzLCBzcXVhcmUgY2FwcyIKLSAgICAgICAgfSwKLSAgICAgICAg
ewotICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRo
VHlwZT1saW5lUGF0aCZsaW5lSm9pbj1iZXZlbCIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFz
IGxpbmUgcGF0aCwgYmV2ZWwgam9pbiIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAg
ICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1saW5lUGF0
aCZsaW5lSm9pbj1yb3VuZCIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGxpbmUgcGF0aCwg
cm91bmQgam9pbiIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2lt
cGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1saW5lUGF0aCZsaW5lSm9pbj1t
aXRlciIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGxpbmUgcGF0aCwgbWl0ZXIgam9pbiIK
LSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1j
YW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1saW5lUGF0aCZsaW5lRGFzaD0xIiwKLSAgICAgICAg
ICAgIG5hbWU6ICJDYW52YXMgbGluZSBwYXRoIHdpdGggZGFzaCBwYXR0ZXJuIgotICAgICAgICB9
LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRo
cy5odG1sP3BhdGhUeXBlPXF1YWRyYXRpYyIsCi0gICAgICAgICAgICBuYW1lOiAiQ2FudmFzIHF1
YWRyYXRpYyBzZWdtZW50cyIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJs
OiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1xdWFkcmF0aWNQYXRo
IiwKLSAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgcXVhZHJhdGljIHBhdGgiCi0gICAgICAgIH0s
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhz
Lmh0bWw/cGF0aFR5cGU9YmV6aWVyIiwKLSAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgYmV6aWVy
IHNlZ21lbnRzIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1w
bGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWJlemllclBhdGgiLAotICAgICAg
ICAgICAgbmFtZTogIkNhbnZhcyBiZXppZXIgcGF0aCIKLSAgICAgICAgfSwKLSAgICAgICAgewot
ICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD8mcGF0aFR5
cGU9YXJjVG8iLAotICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBhcmNUbyBzZWdtZW50cyIKLSAg
ICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52
YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1hcmMiLAotICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBh
cmMgc2VnbWVudHMiCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInNp
bXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9cmVjdCIsCi0gICAgICAgICAg
ICBuYW1lOiAiQ2FudmFzIHJlY3RzIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAg
ICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWxpbmVGaWxs
IiwKLSAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgbGluZSBwYXRoLCBmaWxsIgotICAgICAgICB9
LAotICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRo
cy5odG1sP3BhdGhUeXBlPXF1YWRyYXRpY0ZpbGwiLAotICAgICAgICAgICAgbmFtZTogIkNhbnZh
cyBxdWFkcmF0aWMgcGF0aCwgZmlsbCIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAg
ICAgdXJsOiAic2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD9wYXRoVHlwZT1iZXppZXJG
aWxsIiwKLSAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgYmV6aWVyIHBhdGgsIGZpbGwiCi0gICAg
ICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFz
LXBhdGhzLmh0bWw/JnBhdGhUeXBlPWFyY1RvRmlsbCIsCi0gICAgICAgICAgICBuYW1lOiAiQ2Fu
dmFzIGFyY1RvIHNlZ21lbnRzLCBmaWxsIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAg
ICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWFyY0Zp
bGwiLAotICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBhcmMgc2VnbWVudHMsIGZpbGwiCi0gICAg
ICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFz
LXBhdGhzLmh0bWw/cGF0aFR5cGU9cmVjdEZpbGwiLAotICAgICAgICAgICAgbmFtZTogIkNhbnZh
cyByZWN0cywgZmlsbCIKLSAgICAgICAgfQotICAgIF0KLSkpOwotCi1TdWl0ZXMucHVzaChuZXcg
U3VpdGUoIkNvbXBsZXggZXhhbXBsZXMiLAotICAgIFsKLSAgICAgICAgewotICAgICAgICAgICAg
dXJsOiAiZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sIiwKLSAgICAgICAgICAgIG5hbWU6
ICJjYW52YXMgZWxlY3Ryb25zIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICB1
cmw6ICJleGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbCIsCi0gICAgICAgICAgICBuYW1lOiAiY2Fu
dmFzIHN0YXJzIgotICAgICAgICB9LAotICAgIF0KLSkpOwotCi1TdWl0ZXMucHVzaChuZXcgU3Vp
dGUoIk1pc2NlbGxhbmVvdXMgVGVzdHMiLAotICAgIFsKLSAgICAgICAgewotICAgICAgICAgICAg
dXJsOiAibWlzYy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmh0bWw/cGFydGljbGVXaWR0aD01MCZw
YXJ0aWNsZUhlaWdodD01MCZmaWx0ZXJzPXllcyZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlh
bmcuc3ZnIiwKLSAgICAgICAgICAgIG5hbWU6ICJDb21wb3NpdGVkIFRyYW5zZm9ybXMiCi0gICAg
ICAgIH0sCi0gICAgXQotKSk7Ci0KLWZ1bmN0aW9uIHN1aXRlRnJvbU5hbWUobmFtZSkKLXsKLSAg
ICByZXR1cm4gU3VpdGVzLmZpbmQoZnVuY3Rpb24oc3VpdGUpIHsgcmV0dXJuIHN1aXRlLm5hbWUg
PT0gbmFtZTsgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RGcm9tTmFtZShzdWl0ZSwgbmFtZSkKLXsK
LSAgICByZXR1cm4gc3VpdGUudGVzdHMuZmluZChmdW5jdGlvbih0ZXN0KSB7IHJldHVybiB0ZXN0
Lm5hbWUgPT0gbmFtZTsgfSk7Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRt
bCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctY2FudmFzLWltYWdlcy5odG1sCmluZGV4IDQ1YmFmNGQuLmFkODA2ZGIgMTAwNjQ0
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5o
dG1sCkBAIC0xMyw3ICsxMyw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9z
YW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4
dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0
aC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMu
anMiPjwvc2NyaXB0PiAgICAKICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2Ny
aXB0PiAgCiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMi
Pjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWwgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNh
bnZhcy1zaGFwZXMuaHRtbAppbmRleCA3MjU1ODczLi5kMWQ3YzA2IDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5n
LWNhbnZhcy1zaGFwZXMuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbApAQCAtNyw3
ICs3LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+
ICAgIAogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKICAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sCmlu
ZGV4IGRmYjViYTYuLjk2MWJjZmMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctY3NzLWltYWdlcy5odG1sCkBAIC0xMiw3ICsxMiw2IEBACiAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKICAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9i
b3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hh
cGVzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbAppbmRleCAwY2ZjNmZhLi40ZWFiMWMyIDEw
MDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRt
bApAQCAtMjMsNyArMjMsNiBAQAogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2Ft
cGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRl
bnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGgu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpz
Ij48L3NjcmlwdD4gICAgCiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3Njcmlw
dD4gIAogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1h
Z2VzLmh0bWwKaW5kZXggNWE4Y2U0My4uNTJkYzE1NSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1h
Z2VzLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwKQEAgLTcsNyArNyw2IEBACiAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKICAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCiAgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1zdmctc2hhcGVzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAppbmRleCA1NWI4ZWRiLi5k
NTc5YjcxIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1z
aGFwZXMuaHRtbApAQCAtNyw3ICs3LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9tYXRoLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+ICAgIAogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFp
bi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+
PC9zY3JpcHQ+ICAKICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xl
cy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2Vz
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcwppbmRleCAyNThjY2Q3Li4yOGE3
ODExIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMKQEAgLTMyLDkgKzMyLDkgQEAgQm91bmNpbmdD
YW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCiAg
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlKHRoaXMpOwogfQogCi1mdW5jdGlvbiBC
b3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKQorZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewotICAgIEJvdW5jaW5nQ2Fu
dmFzUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJl
Y29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5j
aG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQog
CiBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CkBAIC00NSw3ICs0
NSw3IEBAIEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFn
ZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCiAgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdl
c1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwogfQogCi13aW5kb3cuYmVuY2htYXJrQ2xp
ZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKLSAgICByZXR1cm4gbmV3IEJvdW5j
aW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpOworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNCZW5j
aG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVz
b3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52
YXMtcGFydGljbGVzLmpzCmluZGV4IDRjZjdjZDUuLjBiNDBkYTIgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFz
LXBhcnRpY2xlcy5qcwpAQCAtOTEsOSArOTEsOSBAQCBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0Fu
aW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQogICAgIHJldHVybiBCb3VuY2lu
Z1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7CiB9CiAKLWZ1
bmN0aW9uIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0g
ICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiAKIEJvdW5jaW5nQ2FudmFzUGFydGlj
bGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJv
dG90eXBlKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCmluZGV4IGYyMmE3NTcuLmJlNGExZDkgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctY2FudmFzLXNoYXBlcy5qcwpAQCAtNzEsOSArNzEsOSBAQCBCb3VuY2luZ0NhbnZhc1No
YXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkKICAgICByZXR1
cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGUodGhpcyk7CiB9CiAKLWZ1bmN0aW9uIEJvdW5jaW5n
Q2FudmFzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgQm91bmNpbmdDYW52YXNQYXJ0
aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKTsKKyAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5j
YWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiAKIEJvdW5j
aW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNp
bmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKQEAgLTg0LDcgKzg0LDcgQEAg
Qm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVu
Y3Rpb24oZWxlbWVudCkKICAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2Uo
ZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3Jl
YXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewotICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52
YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0Jhcik7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayhz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMv
Ym91bmNpbmctY3NzLWltYWdlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMuanMKaW5k
ZXggOTZmMGU1OS4uMGQzYWUyNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdl
cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmpzCkBAIC00NCw5ICs0NCw5IEBA
IEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9
IGZ1bmN0aW9uKHBhcnRpY2xlKQogICAgIHBhcnRpY2xlLmVsZW1lbnQucmVtb3ZlKCk7CiB9CiAK
LWZ1bmN0aW9uIEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBCb3VuY2luZ0Nzc0ltYWdlc0Jl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgQm91bmNp
bmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5j
YWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiAKIEJvdW5j
aW5nQ3NzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKQEAgLTU3LDcgKzU3LDcgQEAgQm91bmNpbmdD
c3NJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVu
dCkKICAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgdGhpcy5f
b3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24o
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3dpbmRvdy5i
ZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHBy
b2dyZXNzQmFyKQogewotICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgcmV0
dXJuIG5ldyBCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cHJvZ3Jlc3NCYXIpOwogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanMKaW5kZXggNmVkYWVkOC4uNmY5NDMzNSAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcworKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1jc3Mtc2hhcGVzLmpzCkBAIC02Miw5ICs2Miw5IEBAIEJvdW5jaW5nQ3NzU2hhcGVzU3Rh
Z2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKQog
ICAgIHBhcnRpY2xlLmVsZW1lbnQucmVtb3ZlKCk7CiB9CiAKLWZ1bmN0aW9uIEJvdW5jaW5nQ3Nz
U2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jl
c3NCYXIpCitmdW5jdGlvbiBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsu
Y2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KTsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiAKIEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJr
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJv
dG90eXBlKTsKQEAgLTc1LDcgKzc1LDcgQEAgQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKICAgICByZXR1cm4gbmV3IEJv
dW5jaW5nQ3NzU2hhcGVzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRl
ID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewotICAgIHJl
dHVybiBuZXcgQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc1No
YXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFy
dGljbGVzLmpzCmluZGV4IGQwZjk0Y2EuLmEwZjdiZmQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLXBhcnRpY2xlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMKQEAgLTEy
NCw5ICsxMjQsOSBAQCBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS50dW5lID0gZnVu
Y3Rpb24oY291bnQpCiAgICAgcmV0dXJuIHRoaXMuX3BhcnRpY2xlcy5sZW5ndGg7CiB9CiAKLWZ1
bmN0aW9uIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgU3RhZ2VCZW5j
aG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKTsKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCBwcm9ncmVzc0Jhcik7CiB9CiAKIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1h
Z2VzLmpzCmluZGV4IGM2OGJjZTAuLjQzNWYyY2UgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LXN2Zy1pbWFnZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcwpAQCAtMjYs
OSArMjYsOSBAQCBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNs
ZSA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2UodGhpcyk7CiB9
CiAKLWZ1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdl
c0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgQm91
bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFy
ay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiAKIEJv
dW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNp
bmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKQEAgLTM5LDcgKzM5LDcgQEAgQm91bmNp
bmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxl
bWVudCkKICAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UoZWxlbWVudCwgdGhp
cy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rp
b24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3dpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHByb2dyZXNzQmFyKQogewotICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAg
cmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpOwogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBl
cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMKaW5kZXggNzZkYzllZS4uZDAyODAx
YSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcworKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1zdmctc2hhcGVzLmpzCkBAIC04NSw5ICs4NSw5IEBAIEJvdW5jaW5nU3ZnU2hhcGVz
U3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xl
KQogICAgIHRoaXMuX2Vuc3VyZURlZnNJc0NyZWF0ZWQoKS5yZW1vdmVDaGlsZChncmFkaWVudCk7
CiB9CiAKLWZ1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBCb3VuY2luZ1N2Z1No
YXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAg
Qm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNo
bWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiAK
IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91
bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKQEAgLTk4LDcgKzk4LDcgQEAgQm91
bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24o
ZWxlbWVudCkKICAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UoZWxlbWVudCwg
dGhpcy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVu
Y3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3dp
bmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHByb2dyZXNzQmFyKQogewotICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdTaGFwZXNCZW5j
aG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cisg
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbCBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWwKaW5k
ZXggY2M4Nzg5MS4uMDkwOTczMiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sCkBA
IC03LDcgKzcsNiBAQAogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25z
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4gICAgCiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2Nh
bnZhcy1zdGFycy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1w
bGVzL2NhbnZhcy1zdGFycy5odG1sCmluZGV4IDM4Mjc0OGEuLjUyYWQ4ZjggMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMu
aHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2Fu
dmFzLXN0YXJzLmh0bWwKQEAgLTcsNyArNyw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91
dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L21haW4uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2Uu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5q
cwppbmRleCA0ZTkzMjA0Li44ZGU1ODQwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9j
YW52YXMtZWxlY3Ryb25zLmpzCkBAIC0xMDQsOSArMTA0LDkgQEAgQ2FudmFzRWxlY3Ryb25zQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCiAgICAgcmV0dXJuIFN0YWdlQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKIH0KIAotZnVuY3Rpb24gQ2FudmFz
RWxlY3Ryb25zQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpCitmdW5jdGlvbiBDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsoc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewotICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywg
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgU3Rh
Z2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIp
OwogfQogCiBDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtMTI0LDkgKzEyNCw5IEBAIENhbnZhc0Vs
ZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpCiAg
ICAgcmV0dXJuIG5ldyBDYW52YXNFbGVjdHJvbnNBbmltYXRvcih0aGlzLCB0aGlzLl9vcHRpb25z
KTsKIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2luZG93LmJlbmNobWFy
a0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NC
YXIpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgdGVzdCBoYXJu
ZXNzIHdoaWNoIHN0YXJ0cyB0aGUKICAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5nIHlvdXIgYmVuY2ht
YXJrIG9iamVjdC4KLSAgICByZXR1cm4gbmV3IENhbnZhc0VsZWN0cm9uc0JlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4g
bmV3IENhbnZhc0VsZWN0cm9uc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jl
c3NCYXIpOwogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcwppbmRleCBm
YmRiYjRmLi5kMzdjMmEyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcworKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5q
cwpAQCAtMTAxLDkgKzEwMSw5IEBAIENhbnZhc1N0YXJzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1h
dGUgPSBmdW5jdGlvbigpCiAgICByZXR1cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0
ZS5jYWxsKHRoaXMpOwogfQogCi1mdW5jdGlvbiBDYW52YXNTdGFyc0JlbmNobWFyayhzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQorZnVuY3Rpb24gQ2FudmFz
U3RhcnNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewotICAg
U3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKTsKKyAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KIAogQ2FudmFzU3RhcnNCZW5jaG1hcmsucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtMTIx
LDkgKzEyMSw5IEBAIENhbnZhc1N0YXJzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRv
ciA9IGZ1bmN0aW9uKCkKICAgIHJldHVybiBuZXcgQ2FudmFzU3RhcnNBbmltYXRvcih0aGlzLCB0
aGlzLl9vcHRpb25zKTsKIH0KIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5j
dGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpCiB7CiAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRo
ZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQogICAgLy8gdGVzdCBieSBjcmVhdGluZyB5
b3VyIGJlbmNobWFyayBvYmplY3QuCi0gICByZXR1cm4gbmV3IENhbnZhc1N0YXJzQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgcmV0
dXJuIG5ldyBDYW52YXNTdGFyc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jl
c3NCYXIpOwogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMu
aHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL2NvbXBvc2l0aW5n
LXRyYW5zZm9ybXMuaHRtbAppbmRleCBkMGZmZjUyLi5kZWJmNTgyIDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jb21wb3NpdGluZy10cmFuc2Zvcm1z
Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvY29tcG9z
aXRpbmctdHJhbnNmb3Jtcy5odG1sCkBAIC0xNCw3ICsxNCw2IEBACiAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKICAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCiAgICAgPHNjcmlwdCBzcmM9Ii4uL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9j
b21wb3NpdGluZy10cmFuc2Zvcm1zLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuanMKaW5kZXggOWJlOTll
Yy4uNjI0OWZkNiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuanMKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0aW5nLXRyYW5z
Zm9ybXMuanMKQEAgLTQ4LDkgKzQ4LDkgQEAgQ29tcG9zaXRpbmdUcmFuc2Zvcm1zU3RhZ2UucHJv
dG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKQogICAgIHBh
cnRpY2xlLmVsZW1lbnQucmVtb3ZlKCk7CiB9CiAKLWZ1bmN0aW9uIENvbXBvc2l0ZWRUcmFuc2Zv
cm1zQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpCitmdW5jdGlvbiBDb21wb3NpdGVkVHJhbnNmb3Jtc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsu
Y2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KTsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiAKIENvbXBvc2l0ZWRUcmFuc2Zvcm1zQmVuY2ht
YXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsu
cHJvdG90eXBlKTsKQEAgLTYxLDcgKzYxLDcgQEAgQ29tcG9zaXRlZFRyYW5zZm9ybXNCZW5jaG1h
cmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKICAgICByZXR1cm4g
bmV3IENvbXBvc2l0aW5nVHJhbnNmb3Jtc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwog
fQogCi13aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit3aW5kb3cuYmVuY2htYXJrQ2xp
ZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikK
IHsKLSAgICByZXR1cm4gbmV3IENvbXBvc2l0ZWRUcmFuc2Zvcm1zQmVuY2htYXJrKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIHJldHVybiBuZXcg
Q29tcG9zaXRlZFRyYW5zZm9ybXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dy
ZXNzQmFyKTsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMvbWFpbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXMvbWFpbi5qcwppbmRleCBiYzM5NTQxLi40OTEzYTJlIDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzCkBAIC0xOTUs
NyArMTk1LDcgQEAgQmVuY2htYXJrLnByb3RvdHlwZSA9CiAgICAgICAgIGlmIChzdGFnZSAhPSBC
ZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQgJiYgY3VycmVudFRpbWVPZmZzZXQgPCB0aGlz
Ll9yZWNvcmRUaW1lT2Zmc2V0ICsgdGhpcy5fcmVjb3JkSW50ZXJ2YWwpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgdGhpcy5zaG93UmVzdWx0cyh0aGlzLl9zdGF0ZS5jdXJyZW50TWVz
c2FnZSgpLCB0aGlzLl9zdGF0ZS5jdXJyZW50UHJvZ3Jlc3MoKSk7CisgICAgICAgIHRoaXMuc2hv
d1Jlc3VsdHModGhpcy5fc3RhdGUuY3VycmVudFByb2dyZXNzKCksIHRoaXMuX3N0YXRlLmN1cnJl
bnRNZXNzYWdlKCkpOwogICAgICAgICB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ID0gY3VycmVudFRp
bWVPZmZzZXQ7CiAgICAgfSwKICAgICAKQEAgLTIyOCwxMSArMjI4LDExIEBAIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKQogfSk7CiAKIC8vIFRoaXMgZnVuY3Rpb24g
aXMgY2FsbGVkIGZyb20gdGhlIHN1aXRlIGNvbnRyb2xsZXIgcnVuLWNhbGxiYWNrIHdoZW4gcnVu
bmluZyB0aGUgYmVuY2htYXJrIHJ1bm5lci4KLXdpbmRvdy5ydW5CZW5jaG1hcmsgPSBmdW5jdGlv
bihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQord2luZG93
LnJ1bkJlbmNobWFyayA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jh
cikKIHsKICAgICB2YXIgYmVuY2htYXJrT3B0aW9ucyA9IHsgY29tcGxleGl0eTogdGVzdC5jb21w
bGV4aXR5IH07CiAgICAgYmVuY2htYXJrT3B0aW9ucyA9IFV0aWxpdGllcy5tZXJnZU9iamVjdHMo
YmVuY2htYXJrT3B0aW9ucywgb3B0aW9ucyk7CiAgICAgYmVuY2htYXJrT3B0aW9ucyA9IFV0aWxp
dGllcy5tZXJnZU9iamVjdHMoYmVuY2htYXJrT3B0aW9ucywgVXRpbGl0aWVzLnBhcnNlUGFyYW1l
dGVycygpKTsKLSAgICB3aW5kb3cuYmVuY2htYXJrID0gd2luZG93LmJlbmNobWFya0NsaWVudC5j
cmVhdGUoc3VpdGUsIHRlc3QsIGJlbmNobWFya09wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0Jhcik7CisgICAgd2luZG93LmJlbmNobWFyayA9IHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3Jl
YXRlKHN1aXRlLCB0ZXN0LCBiZW5jaG1hcmtPcHRpb25zLCBwcm9ncmVzc0Jhcik7CiAgICAgcmV0
dXJuIHdpbmRvdy5iZW5jaG1hcmsucnVuKCk7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwppbmRleCBhZGIzMjMwLi43YjBi
MTE0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3Vy
Y2VzL3N0YWdlLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMvc3RhZ2UuanMKQEAgLTEyOCw3ICsxMjgsNyBAQCBTdGFnZUFuaW1hdG9yLnByb3RvdHlw
ZS5hbmltYXRlID0gZnVuY3Rpb24oKQogICAgIHJldHVybiB0cnVlOwogfQogCi1mdW5jdGlvbiBT
dGFnZUJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKQorZnVuY3Rpb24gU3RhZ2VCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dy
ZXNzQmFyKQogewogICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG9wdGlvbnMpOwogICAgIApAQCAt
MTQwLDcgKzE0MCw2IEBAIGZ1bmN0aW9uIFN0YWdlQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCiAgICAgdGhpcy5fYW5pbWF0b3IgPSB0aGlz
LmNyZWF0ZUFuaW1hdG9yKCk7CiAgICAgdGhpcy5fc3VpdGUgPSBzdWl0ZTsKICAgICB0aGlzLl90
ZXN0ID0gdGVzdDsKLSAgICB0aGlzLl9yZWNvcmRUYWJsZSA9IHJlY29yZFRhYmxlOwogICAgIHRo
aXMuX3Byb2dyZXNzQmFyID0gcHJvZ3Jlc3NCYXI7CiB9CiAKQEAgLTE2NywxMyArMTY2LDEwIEBA
IFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4g
dGhpcy5fc3RhZ2UuY2xlYXIoKTsKIH0KIAotU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNob3dS
ZXN1bHRzID0gZnVuY3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpCitTdGFnZUJlbmNobWFyay5wcm90
b3R5cGUuc2hvd1Jlc3VsdHMgPSBmdW5jdGlvbihwcm9ncmVzcywgbWVzc2FnZSkKIHsKLSAgICBp
ZiAoIXRoaXMuX3JlY29yZFRhYmxlIHx8ICF0aGlzLl9wcm9ncmVzc0JhciB8fCAhdGhpcy5fdGVz
dCkKKyAgICBpZiAoIXRoaXMuX3Byb2dyZXNzQmFyIHx8ICF0aGlzLl90ZXN0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAodGhpcy5fb3B0aW9uc1siZGlzcGxheSJdID09ICJzdGF0aXN0aWNz
LXRhYmxlIikKLSAgICAgICAgdGhpcy5fcmVjb3JkVGFibGUuc2hvd1JlY29yZCh0aGlzLl90ZXN0
Lm5hbWUsIG1lc3NhZ2UsIHRoaXMuX3NhbXBsZXIudG9KU09OKHRydWUsIGZhbHNlKSwgdGhpcy5f
b3B0aW9ucyk7Ci0KICAgICB0aGlzLl9wcm9ncmVzc0Jhci5zZXRQb3MocHJvZ3Jlc3MpOwogfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91
dGlsaXRpZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L3V0aWxpdGllcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjNzY0OS4uMDAw
MDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0
aWxpdGllcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLXdpbmRvdy5VdGlsaXRp
ZXMgPQotewotICAgIF9wYXJzZTogZnVuY3Rpb24oc3RyLCBzZXApCi0gICAgewotICAgICAgICB2
YXIgb3V0cHV0ID0ge307Ci0gICAgICAgIHN0ci5zcGxpdChzZXApLmZvckVhY2goZnVuY3Rpb24o
cGFydCkgewotICAgICAgICAgICAgdmFyIGl0ZW0gPSBwYXJ0LnNwbGl0KCI9Iik7Ci0gICAgICAg
ICAgICB2YXIgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoaXRlbVsxXSk7Ci0gICAgICAgICAg
ICBpZiAodmFsdWVbMF0gPT0gIiciICkKLSAgICAgICAgICAgICAgICBvdXRwdXRbaXRlbVswXV0g
PSB2YWx1ZS5zdWJzdHIoMSwgdmFsdWUubGVuZ3RoIC0gMik7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgb3V0cHV0W2l0ZW1bMF1dID0gdmFsdWU7ICAgICAgICAgICAgICAgIAot
ICAgICAgICAgIH0pOwotICAgICAgICByZXR1cm4gb3V0cHV0OwotICAgIH0sCi0gICAgCi0gICAg
cGFyc2VQYXJhbWV0ZXJzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
cGFyc2Uod2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSksICImIik7Ci0gICAgfSwKLSAg
ICAKLSAgICBwYXJzZUFyZ3VtZW50czogZnVuY3Rpb24oc3RyKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX3BhcnNlKHN0ciwgIiAiKTsKLSAgICB9LAotICAgIAotICAgIGV4dGVuZE9iamVj
dDogZnVuY3Rpb24ob2JqMSwgb2JqMikKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGF0dHJuYW1l
IGluIG9iajIpCi0gICAgICAgICAgICBvYmoxW2F0dHJuYW1lXSA9IG9iajJbYXR0cm5hbWVdOwot
ICAgICAgICByZXR1cm4gb2JqMTsKLSAgICB9LAotICAgIAotICAgIGNvcHlPYmplY3Q6IGZ1bmN0
aW9uKG9iaikKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmV4dGVuZE9iamVjdCh7fSwgb2Jq
KTsKLSAgICB9LAotICAgIAotICAgIG1lcmdlT2JqZWN0czogZnVuY3Rpb24ob2JqMSwgb2JqMikK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmV4dGVuZE9iamVjdCh0aGlzLmNvcHlPYmplY3Qo
b2JqMSksIG9iajIpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMtcGF0aHMuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUt
Y2FudmFzLXBhdGhzLmpzCmluZGV4IDM3MjE1ZWEuLjFkYWQyMDUgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52
YXMtcGF0aHMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBs
ZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRocy5qcwpAQCAtMjQ0LDggKzI0NCw4IEBAIENh
bnZhc0xpbmVEYXNoU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsKIAogLy8g
PT09IEJFTkNITUFSSyA9PT0KIAotZnVuY3Rpb24gQ2FudmFzUGF0aEJlbmNobWFyayhzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7Ci0gICAgU2ltcGxlQ2Fu
dmFzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0Jhcik7CitmdW5jdGlvbiBDYW52YXNQYXRoQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0JhcikgeworICAgIFNpbXBsZUNhbnZhc0JlbmNobWFyay5jYWxs
KHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiBDYW52YXNQYXRo
QmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2ltcGxlQ2FudmFzQmVuY2htYXJr
LnByb3RvdHlwZSk7CiBDYW52YXNQYXRoQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IENhbnZhc1BhdGhCZW5jaG1hcms7CkBAIC0yOTAsNiArMjkwLDYgQEAgQ2FudmFzUGF0aEJlbmNo
bWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQogICAgIH0KIH0K
IAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7Ci0gICAgcmV0dXJuIG5ldyBDYW52
YXNQYXRoQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jl
c3NCYXIpOword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpIHsKKyAgICByZXR1cm4gbmV3IENhbnZhc1BhdGhC
ZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKIH0KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3Np
bXBsZS1jYW52YXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxl
L3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzCmluZGV4IGFkZWVmMTguLjU1ZjRhODYgMTAwNjQ0
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2Vz
L3NpbXBsZS1jYW52YXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qcwpAQCAtNTEsMTEgKzUxLDggQEAgU2lt
cGxlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCiB9CiAKIAot
ZnVuY3Rpb24gU2ltcGxlQ2FudmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKLSAgICBvcHRpb25zWyJnYWluIl0gPSA2OwotICAgIG9w
dGlvbnNbImFkZExpbWl0Il0gPSAxMDA7Ci0gICAgb3B0aW9uc1sicmVtb3ZlTGltaXQiXSA9IDEw
MDA7Ci0gICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK2Z1bmN0aW9uIFNpbXBsZUNhbnZhc0JlbmNobWFy
ayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpIHsKKyAgICBTdGFnZUJlbmNobWFy
ay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiBTaW1w
bGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFy
ay5wcm90b3R5cGUpOwogU2ltcGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IFNpbXBsZUNhbnZhc0JlbmNobWFyazsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0
bWwKaW5kZXggNjRkNzEwOS4uMGQ1OTdmYiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3NpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhz
Lmh0bWwKQEAgLTcsNyArNyw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9z
YW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4
dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0
aC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9y
ZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMKaW5kZXggYzZhNjAw
ZC4uM2M4ODllZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMu
anMKQEAgLTc2LDkgKzc2LDkgQEAgVGVtcGxhdGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUuYW5p
bWF0ZSA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuYW5p
bWF0ZS5jYWxsKHRoaXMpOwogfQogCi1mdW5jdGlvbiBUZW1wbGF0ZUNhbnZhc0JlbmNobWFyayhz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQorZnVuY3Rpb24g
VGVtcGxhdGVDYW52YXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFy
KQogewotICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlz
LCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQogCiBUZW1wbGF0ZUNhbnZh
c0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3Rv
dHlwZSk7CkBAIC05Niw5ICs5Niw5IEBAIFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlw
ZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ2Fu
dmFzQW5pbWF0b3IodGhpcywgdGhpcy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtD
bGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0JhcikKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24o
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewogICAgIC8vIFRoaXMgZnVuY3Rp
b24gaXMgY2FsbGVkIGZyb20gdGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCiAgICAg
Ly8gdGVzdCBieSBjcmVhdGluZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCi0gICAgcmV0dXJuIG5l
dyBUZW1wbGF0ZUNhbnZhc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ2FudmFzQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRl
LWNzcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNv
dXJjZXMvdGVtcGxhdGUtY3NzLmpzCmluZGV4IDExY2U5NjEuLjJlM2M5NTUgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVt
cGxhdGUtY3NzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1w
bGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzCkBAIC0zMiw5ICszMiw5IEBAIFRlbXBsYXRl
Q3NzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCiAgICAgLy8g
TG9vcCB0aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMgYW5kIGFzayB0aGVtIHRvIGFuaW1hdGUuCiB9
CiAKLWZ1bmN0aW9uIFRlbXBsYXRlQ3NzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBUZW1wbGF0ZUNzc0JlbmNobWFyayhz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7Ci0gICAgU3RhZ2VCZW5jaG1hcmsu
Y2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KTsKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBw
cm9ncmVzc0Jhcik7CiB9CiAKIFRlbXBsYXRlQ3NzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKQEAgLTQ3LDkgKzQ3LDkgQEAgVGVt
cGxhdGVDc3NCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVu
dCkKICAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ3NzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9u
cyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3dpbmRvdy5iZW5jaG1h
cmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNz
QmFyKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHRlc3QgaGFy
bmVzcyB3aGljaCBzdGFydHMgdGhlCiAgICAgLy8gdGVzdCBieSBjcmVhdGluZyB5b3VyIGJlbmNo
bWFyayBvYmplY3QuCi0gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNzc0JlbmNobWFyayhzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4gbmV3
IFRlbXBsYXRlQ3NzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7
CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxh
dGUvcmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzCmluZGV4IDQ4YTg0ZmEu
LmE4OGFkZDcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90
ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzCkBAIC0z
Miw5ICszMiw5IEBAIFRlbXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlv
bih0aW1lRGVsdGEpCiAgICAgLy8gVE9ETzogTG9vcCB0aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMg
YW5kIGFzayB0aGVtIHRvIGFuaW1hdGUuCiB9CiAKLWZ1bmN0aW9uIFRlbXBsYXRlU3ZnQmVuY2ht
YXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5j
dGlvbiBUZW1wbGF0ZVN2Z0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NC
YXIpCiB7Ci0gICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRo
aXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CiAKIFRlbXBsYXRlU3Zn
QmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90
eXBlKTsKQEAgLTQ3LDkgKzQ3LDkgQEAgVGVtcGxhdGVTdmdCZW5jaG1hcmsucHJvdG90eXBlLmNy
ZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKICAgICByZXR1cm4gbmV3IFRlbXBsYXRlU3Zn
U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGll
bnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0JhcikKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24g
aXMgY2FsbGVkIGZyb20gdGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCiAgICAgLy8g
dGVzdCBieSBjcmVhdGluZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCi0gICAgcmV0dXJuIG5ldyBU
ZW1wbGF0ZVN2Z0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKTsKKyAgICByZXR1cm4gbmV3IFRlbXBsYXRlU3ZnQmVuY2htYXJrKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWwgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0
bWwKaW5kZXggNmNlNWRhYi4uYzE3ZDdmOSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5odG1sCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRt
bApAQCAtNyw3ICs3LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBs
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5z
aW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+
PC9zY3JpcHQ+ICAgIAogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRl
L3RlbXBsYXRlLWNzcy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Rl
bXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sCmluZGV4IDJhYTgwZGIuLjFiOWIwZmIgMTAwNjQ0Ci0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1j
c3MuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUv
dGVtcGxhdGUtY3NzLmh0bWwKQEAgLTcsNyArNyw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL21haW4uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3Rh
Z2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVtcGxhdGUtY3Nz
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbAppbmRleCBiOWM4ZmNlLi5hODFm
ODA4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxh
dGUvdGVtcGxhdGUtc3ZnLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sCkBAIC03LDcgKzcsNiBAQAogICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCiAgICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3RlbXBsYXRlLXN2Zy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWwgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWwKaW5kZXggZDUxZjMw
My4uMzJkYTJhYyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3RleHQvbGF5ZXJpbmctdGV4dC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbApAQCAtMjQsNyArMjQsNiBAQAogICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCiAgICAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAogICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvbGF5ZXJpbmctdGV4dC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmlu
Zy10ZXh0LmpzCmluZGV4IGY1ZjJhZjQuLmUyYjdiYTkgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXll
cmluZy10ZXh0LmpzCkBAIC0yMzYsOSArMjM2LDkgQEAgTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90
eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKICAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRz
Lmxlbmd0aDsKIH0KIAotZnVuY3Rpb24gTGF5ZXJpbmdUZXh0QmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCitmdW5jdGlvbiBMYXllcmluZ1Rl
eHRCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewotICAgIFN0
YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0Jhcik7CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQogCiBMYXllcmluZ1RleHRCZW5jaG1hcmsucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOwpAQCAtMjQ5
LDcgKzI0OSw3IEBAIExheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2Ug
PSBmdW5jdGlvbihlbGVtZW50KQogICAgIHJldHVybiBuZXcgTGF5ZXJpbmdUZXh0U3RhZ2UoZWxl
bWVudCwgdGhpcy5fb3B0aW9ucyk7CiB9CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRl
ID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cikKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewotICAgIHJldHVybiBuZXcgTGF5ZXJpbmdUZXh0QmVu
Y2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOwor
ICAgIHJldHVybiBuZXcgTGF5ZXJpbmdUZXh0QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCBwcm9ncmVzc0Jhcik7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZhOTdiZjIuLjUyZWJkNzEgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjY1IEBACisyMDE1LTEyLTIzICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlmZmVy
ZW50IHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRyZXNzIGNvbW1lbnRzLgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVi
dWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanM6CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIu
cHJvdG90eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyk6IFdoZW4gdGhlIHRlc3RpbmcgaXMg
Y29tcGxldGUgdGhlIGZyYW1lIG93bmluZyB0aGUKKyAgICAgICAgc2FtcGxlciBnb2VzIGF3YXks
IGFuZCBhIGxhdGVyIGNhbGwgdG8gZ2V0IHRoZSBKU09OIGRhdGEgaXMgbm8gbG9uZ2VyIGF2YWls
YWJsZS4gUHJvY2VzcyB0aGUgZGF0YQorICAgICAgICByaWdodCBoZXJlLCBpbnN0ZWFkLCBhbmQg
anVzdCByZWZlcmVuY2UgaXQgd2hlbiBkaXNwbGF5aW5nIHRoZSByZXN1bHRzIGluIFJlc3VsdHNE
YXNoYm9hcmQucHJvdG90eXBlLl9wcm9jZXNzRGF0YS4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jl
c291cmNlcy9leHRlbnNpb25zLmpzOgorICAgICAgICAoQXJyYXkucHJvdG90eXBlLmZpbGwuQXJy
YXkucHJvdG90eXBlLmZpbGwpOiBBZGQgYSBudWxsIGNoZWNrLiBSZW1vdmUgYnJhY2VzIGFyb3Vu
ZCBzaW5nbGUtbGluZSBjbGF1c2UuCisgICAgICAgIChBcnJheS5wcm90b3R5cGUuZmluZC5BcnJh
eS5wcm90b3R5cGUuZmluZCk6IFVwZGF0ZSB0aGUgbnVsbCBjaGVjay4KKyAgICAgICAgKFJlc3Vs
dHNEYXNoYm9hcmQucHJvdG90eXBlLl9wcm9jZXNzRGF0YSk6IFVzZSB0aGUgYWxyZWFkeS1wcm9j
ZXNzZWQgZGF0YS4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9t
ZXRlci5jc3M6CisgICAgICAgICguZnJhbWUtY29udGFpbmVyID4gaWZyYW1lKTogUmVtb3ZlIGNh
bGMoKS4KKworICAgICAgICBNb3ZlIEFycmF5IGZ1bmN0aW9ucyB0byBleHRlbnNpb25zLmpzIHNp
bmNlIHRoYXQgaXMgaW5jbHVkZWQgYnkgdGhlIGhhcm5lc3MuCisgICAgICAgIEFkZCBFUzYgQXJy
YXkgcG9seWZpbGxzLgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGht
LmpzOgorICAgICAgICAoQXJyYXkucHJvdG90eXBlLnN3YXApOiBNb3ZlZCB0byBleHRlbnNpb25z
LmpzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanM6CisgICAg
ICAgIChBcnJheS5wcm90b3R5cGUuc3dhcCk6CisgICAgICAgIChBcnJheS5wcm90b3R5cGUuZmls
bCk6IEFkZGVkLgorICAgICAgICAoQXJyYXkucHJvdG90eXBlLmZpbmQpOiBBZGRlZC4KKworICAg
ICAgICBBZGp1c3Qgc3R5bGVzIGZvciBpUGFkLgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNv
dXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzOgorICAgICAgICAoQG1lZGlhIHNjcmVlbiBhbmQg
KG1pbi1kZXZpY2Utd2lkdGg6IDc2OHB4KSk6IEFwcGx5IHRvIGlQYWQgYXMgd2VsbC4KKyAgICAg
ICAgKEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiAxMDI0cHgpKTogVXBkYXRl
IHdpZHRoIGZvciBpUGFkcy4KKworICAgICAgICBBZGp1c3RtZW50IHN0eWxlcyBmb3IgaU9TLgor
CisgICAgICAgICogQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbDogRGlmZmVyZW50IGRpdnMgY29u
dGFpbiB0aGUgaWZyYW1lLCBzbyB1c2UgYSBjbGFzcyBpbnN0ZWFkIGFuZAorICAgICAgICB1cGRh
dGUgdGhlIHN0eWxlIHJ1bGVzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvaW5kZXguaHRtbDoKKyAg
ICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3M6
IFJlbW92ZSBleHRyYW5lb3VzIHJ1bGVzLgorICAgICAgICAoQG1lZGlhIHNjcmVlbiBhbmQgKG1p
bi1kZXZpY2Utd2lkdGg6IDE4MDBweCkpOiBNb3ZlIHRoaXMgdXAuCisgICAgICAgICogQW5pbW9t
ZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzOiBBZGQgcnVsZXMgdG8gYWNjb21v
ZGF0ZSBpT1MuCisKKyAgICAgICAgR2V0IHJpZCBvZiBwcmVmaXhlZCBmbGV4IHByb3BlcnRpZXMg
Zm9yIG5vdy4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9h
bmltb21ldGVyLmNzczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5p
bW9tZXRlci5jc3M6CisKKyAgICAgICAgVXBkYXRlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGhhcm5l
c3MuIFJlbW92ZSB0aGUgSlNPTi1wZXItdGVzdCBidXQga2VlcAorICAgICAgICB0aGUgSlNPTiBv
ZiB0aGUgd2hvbGUgdGVzdCBydW4uIFVzZSB0aGUgZnVsbCBwYWdlIGluIG9yZGVyIHRvIGRpc3Bs
YXkKKyAgICAgICAgdGhlIGdyYXBoLgorCisgICAgICAgICogQW5pbW9tZXRlci9kZXZlbG9wZXIu
aHRtbDogVXBkYXRlIHNldmVyYWwgb2YgdGhlIEpTIGZpbGUgaW5jbHVkZXMgdG8gVVRGLTguIFJl
bW92ZSBoZWFkZXIgYW5kIGZvb3Rlci4gVGVzdCByZXN1bHRzIHNjcmVlbiBpbmNsdWRlcyBzY29y
ZSwKKyAgICAgICAgYXZlcmFnZSwgYW5kIHdvcnN0IDUlIHN0YXRpc3RpY3MuCisgICAgICAgICog
QW5pbW9tZXRlci9pbmRleC5odG1sOiBNYWtlIHN0cnVjdHVyZSBzaW1pbGFyIHRvIGRldmVsb3Bl
ci5odG1sLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmlt
b21ldGVyLmNzczogUmVtb3ZlIG1vc3Qgb2YgdGhlCisgICAgICAgIGJ1dHRvbiBydWxlcyBzaW5j
ZSB0aGV5IGFyZSBzdXBlcmZsdW91cy4gTW92ZSB0aGUgcHJvZ3Jlc3MgYmFyIHRvIHRoZQorICAg
ICAgICB0b3AsIGZpeGVkLiBVcGRhdGUgdGhlIHJlc3VsdHMgcGFnZSBydWxlcy4KKyAgICAgICAg
KiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qczogUmVtb3Zl
IG1vc3Qgb2YgdGhlCisgICAgICAgIGFkZGl0aW9ucyB0byBzZWN0aW9uc01hbmFnZXIgc2luY2Ug
dGhleSBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgKHNldFNlY3Rpb25IZWFkZXIpOiBV
cGRhdGVzIGhlYWRlciBvZiB0aGUgc2VjdGlvbi4KKyAgICAgICAgKHdpbmRvdy5zdWl0ZXNNYW5h
Z2VyLl91cGRhdGVTdGFydEJ1dHRvblN0YXRlKTogVXBkYXRlIHNlbGVjdG9yLgorICAgICAgICAo
c2hvd1Jlc3VsdHMpOiBBZGQga2V5cHJlc3MgZXZlbnQgZm9yIHNlbGVjdGluZyBkaWZmZXJlbnQg
ZGF0YSBmb3IKKyAgICAgICAgY29weS9wYXN0ZS4gVXBkYXRlIGhvdyB0aGUgcmVzdWx0cyBhcmUg
cG9wdWxhdGVkLiBJbmNsdWRlIGZ1bGwgdGVzdAorICAgICAgICBKU09OIGluIGEgdGV4dGFyZWEs
IHJhdGhlciB0aGFuIHJlcXVpcmluZyBhIGJ1dHRvbiBwcmVzcy4KKyAgICAgICAgKHNob3dUZXN0
R3JhcGgpOgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0
cy5qczogVXBkYXRlIHN0cnVjdHVyZSBvZiBIZWFkZXJzLiBEZWZpbmUgZGlmZmVyZW50IGtpbmRz
IG9mIGhlYWRlcnMuIEhlYWRlcnMgY2FuIGNvbnRyb2wgdGhlaXIKKyAgICAgICAgdGl0bGUsIGFu
ZCB0aGUgdGV4dCB1c2VkIGFzIHRoZSBjZWxsIGNvbnRlbnRzLCBpbmNsdWRpbmcgY2xhc3MgbmFt
ZS4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgorICAgICAg
ICAoUmVzdWx0c1RhYmxlKTogVXBkYXRlIHRvIGluY2x1ZGUgYSBmbGF0dGVuZWQgdmVyc2lvbiBv
ZiB0aGUgaGVhZGVycywKKyAgICAgICAgdXNlZCB3aGlsZSBwb3B1bGF0aW5nIHRhYmxlIGNvbnRl
bnRzLiBSZW1vdmUgdW5uZWVkZWQgaGVscGVyIGZ1bmN0aW9ucworICAgICAgICBmb3IgY3JlYXRp
bmcgdGhlIHRhYmxlLiBSZW5hbWUgInNob3ciIHRvICJhZGQiLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmNzczogVXBkYXRlIHJ1bGVzIHRvCisgICAg
ICAgIGFjY29tbW9kYXRlIHRoZSBuZXcgc3RydWN0dXJlLgorICAgICAgICAqIEFuaW1vbWV0ZXIv
cmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpzOgorICAgICAgICAod2luZG93LnNlY3Rpb25z
TWFuYWdlci5zZXRTZWN0aW9uU2NvcmUpOiBIZWxwZXIgZnVuY3Rpb24gdG8gc2V0IHRoZQorICAg
ICAgICBzY29yZSBhbmQgbWVhbiBmb3IgYSBzZWN0aW9uLgorICAgICAgICAod2luZG93LnNlY3Rp
b25zTWFuYWdlci5wb3B1bGF0ZVRhYmxlKTogSGVscGVyIGZ1bmN0aW9uIHRvIHNldCB0aGUgdGFi
bGUuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVzdWx0cyk6IFJl
ZmFjdG9yLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIuc2VsZWN0UmVzdWx0
cyk6IFVwZGF0ZSBzZWxlY3RvcnMuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVu
bmVyL3Rlc3RzLmpzOiBTZXQgSGVhZGVycy4gRGVidWcgaGFybmVzcworICAgICAgICBleHRlbmRz
IGl0LgorCisgICAgICAgIFVwZGF0ZSBkZWJ1ZyBydW5uZXIgdG8gaGF2ZSBzaW1pbGFyIG5hbWVz
IHRvIHRoZSBiYXNpYyBydW5uZXIuIEluY2x1ZGUKKyAgICAgICAgdGhhdCBwYWdlJ3MgQ1NTIGFu
ZCByZW1vdmUgZXh0cmFuZW91cyBDU1MgcnVsZXMuCisKKyAgICAgICAgR2V0IHJpZCBvZiB0aGUg
c3RhdGlzdGljcyB0YWJsZSAjcmVjb3JkLgorCisgICAgICAgICogQW5pbW9tZXRlci9kZXZlbG9w
ZXIuaHRtbDogUmVuYW1lICNob21lIHRvICNpbnRyby4gUmVuYW1lIC5zcGFjZXIgdG8gaHIuCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3Nz
OiBTZXQgdG8gZmxleGJveCB3aGVuIHNlbGVjdGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVz
b3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzOiBSZW1vdmUgcmVjb3JkVGFibGUuCisg
ICAgICAgICh3aW5kb3cuc3VpdGVzTWFuYWdlci5fdXBkYXRlU3RhcnRCdXR0b25TdGF0ZSk6IFVw
ZGF0ZSBzZWxlY3RvciB0byAjaW50cm8uCisgICAgICAgIChzZXR1cFJ1bm5pbmdTZWN0aW9uU3R5
bGUpOiBEZWxldGVkLgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2Fu
aW1vbWV0ZXIuY3NzOgorICAgICAgICAoI3Rlc3QtY29udGFpbmVyLnNlbGVjdGVkKTogQ2hhbmdl
IHRvIGZsZXgtYm94IG9ubHkgd2hlbiB2aXNpYmxlLgorCisgICAgICAgIFJlbW92ZSByZWNvcmRU
YWJsZS4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2ht
YXJrLXJ1bm5lci5qczoKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRl
c3RBbmRSZWNvcmRSZXN1bHRzKToKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5u
ZXIvdGVzdHMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanM6CisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1w
YXJ0aWNsZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanM6CisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFn
ZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVz
b3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qczoKKyAg
ICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctc3ZnLWltYWdlcy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qczoKKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzOgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFy
cy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0
aW5nLXRyYW5zZm9ybXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
bWFpbi5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczoK
KyAgICAgICAgKFN0YWdlQmVuY2htYXJrKTogUmVtb3ZlIF9yZWNvcmRUYWJsZS4KKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRocy5q
czoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNh
bnZhcy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90
ZW1wbGF0ZS1jYW52YXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9y
ZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVt
cGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanM6CisKKyAgICAgICAgKiBBbmltb21l
dGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qczoKKyAgICAgICAgKHdpbGxT
dGFydEZpcnN0SXRlcmF0aW9uKTogRml4IHNlbGVjdG9yLCBzaW5jZSByZXN1bHRzLXRhYmxlIGlz
IHVzZWQKKyAgICAgICAgaW4gbXVsdGlwbGUgcGxhY2VzLCBzbyBpdCBjYW5ub3QgYmUgYW4gaWQu
CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBzZWxlY3QgdGhlIHNjb3Jlcywgb3IgdGhl
IHdob2xlIHRhYmxlIGRhdGEsCisgICAgICAgIGJ5IGN5Y2xpbmcgdGhyb3VnaCBkaWZmZXJlbnQg
c2VsZWN0aW9ucyB0aHJvdWdoIGtleSBwcmVzcyBvZiAncycuCisKKyAgICAgICAgKiBBbmltb21l
dGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5qczoKKyAgICAgICAgKHdpbmRvdy5iZW5j
aG1hcmtDb250cm9sbGVyLnNob3dSZXN1bHRzKTogQXR0YWNoIGEga2V5cHJlc3MgaGFuZGxlcgor
ICAgICAgICBpZiBpdCBoYXNuJ3QgYmVlbiBhZGRlZCBhbHJlYWR5LgorICAgICAgICAod2luZG93
LmJlbmNobWFya0NvbnRyb2xsZXIuc2VsZWN0UmVzdWx0cyk6CisgICAgICAgICogQW5pbW9tZXRl
ci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzOiBDeWNsZSB0aHJvdWdoIGRpZmZlcmVudAorICAg
ICAgICByYW5nZXMuCisKKyAgICAgICAgRml4IGEgZmV3IGZseS1ieSBlcnJvcnMuCisKKyAgICAg
ICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5q
czoKKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVu
dFRlc3QpOiBVcGRhdGUgdGhlIGZyYW1lIHJlbGF0aXZlIHBhdGgKKyAgICAgICAgc2luY2UgdGhl
IGZpbGVzIGFyZSBub3cgaW4gdGhlIHRvcCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBpbnNpZGUgcnVu
bmVyLy4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRlc3RBbmRSZWNv
cmRSZXN1bHRzKTogSW5jb3JyZWN0IHJlZmVyZW5jZSB0byBmdW5jdGlvbi4KKyAgICAgICAgKEJl
bmNobWFya1J1bm5lci5wcm90b3R5cGUuc3RlcCk6IE1lbWJlciB2YXJpYWJsZSBpcyBuZXZlciB1
c2VkLgorCisgICAgICAgIEEgbGl0dGxlIHN0eWxpc3RpYyBjbGVhbnVwLgorCisgICAgICAgICog
QW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanM6Cisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qczoKKyAgICAgICAgKHdp
bmRvdy5Eb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KToKKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzOgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlw
ZS5yZWNvcmQpOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpz
OgorICAgICAgICAoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzKTogUmV2ZXJz
ZSBwcm9ncmVzcyBhbmQgbWVzc2FnZS4KKyAgICAgICAgVGhlIG1lc3NhZ2UgYXBwZWFycyBsZXNz
IGZyZXF1ZW50bHkgdGhhbiB0aGUgcHJvZ3Jlc3MuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanM6CisgICAgICAgIChTaW1wbGVDYW52
YXNCZW5jaG1hcmspOiBSZW1vdmUgdW51c2VkIG9wdGlvbnMuCisKKyAgICAgICAgQWRkIG5ld2Vy
IHZlcnNpb24gb2YgaGFybmVzcyBpbiBhIG5ldyBwYWdlLiBDb25zb2xpZGF0ZSBkaWZmZXJlbmNl
cyBiZXR3ZWVuIHRoZSB0d28KKyAgICAgICAgcGFnZXMuCisKKyAgICAgICAgKiBBbmltb21ldGVy
L2RldmVsb3Blci5odG1sOiBJbmNsdWRlIHJ1bm5lci9hbmltb21ldGVyLmpzLiBSZW5hbWUgdGhl
IEpTIGZ1bmN0aW9uCisgICAgICAgIHRvIHJ1biB0aGUgYmVuY2htYXJrIHRvIHN0YXJ0QmVuY2ht
YXJrKCkgaW5zdGVhZCBvZiBzdGFydFRlc3QoKS4gUmVuYW1lICNydW5uaW5nIHRvCisgICAgICAg
ICN0ZXN0LWNvbnRhaW5lci4KKyAgICAgICAgKiBBbmltb21ldGVyL2luZGV4Lmh0bWw6IEFkZGVk
LiBTaW1pbGFybHkgY2FsbHMgc3RhcnRCZW5jaG1hcmsoKSBhbmQgaGFzICN0ZXN0LWNvbnRhaW5l
ci4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRl
ci5jc3M6IE1ha2UgdGhlIGNhbnZhcyAyOjEgKDEyMDBweCB4IDgwMHB4KQorICAgICAgICBpbnN0
ZWFkIG9mIDQ6My4KKworICAgICAgICBTcGxpdCBvdXQgYmVuY2htYXJrUnVubmVyQ2xpZW50IGFu
ZCBiZW5jaG1hcmtDb250cm9sbGVyLgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanM6IE1vdmUgbmVlZGVkIGZ1bmN0aW9ucyBvdXQgb2YK
KyAgICAgICAgYmVuY2htYXJrUnVubmVyQ2xpZW50LCBhbmQgbGVhdmUgdGhlIHJlc3QgaGVyZSB0
byBleHRlbmQgdGhhdCBvYmplY3QuIEdldCByaWQgb2YgX3Jlc3VsdHNUYWJsZQorICAgICAgICBh
bmQgbW92ZSBwb3B1bGF0aW5nIHRoZSByZXN1bHRzIHRhYmxlIGludG8gYmVuY2htYXJrQ29udHJv
bGxlci4gUmVuYW1lIF9yZXN1bHRzRGFzaGJvYXJkCisgICAgICAgIHRvIHJlc3VsdHMgYW5kIG1h
a2UgaXQgYWNjZXNzaWJsZSBmb3Igb3RoZXIgb2JqZWN0cyB0byB1c2UuCisgICAgICAgICh3aWxs
QWRkVGVzdEZyYW1lKTogVGhpcyBpcyB1bm5lY2Vzc2FyeS4gUmVtb3ZlLgorCisgICAgICAgICh3
aW5kb3cuc2VjdGlvbnNNYW5hZ2VyLnNob3dTY29yZSk6IEdyYWIgaXQgZnJvbSB0aGUgcmVzdWx0
cyBvYmplY3QgaW5zdGVhZCBvZgorICAgICAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQuCisgICAg
ICAgICh3aW5kb3cuc2VjdGlvbnNNYW5hZ2VyLnNob3dTZWN0aW9uKTogRGVsZXRlZC4gTW92ZWQg
dG8gcnVubmVyL2FuaW1vbWV0ZXIuanMuCisKKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDb250
cm9sbGVyLl9ydW5CZW5jaG1hcmspOiBEZWxldGVkLiBNb3N0bHkgbW92ZWQgaW50byBfc3RhcnRC
ZW5jaG1hcmsuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5zdGFydEJlbmNo
bWFyayk6IFJlZmFjdG9yIHRvIGNhbGwgX3N0YXJ0QmVuY2htYXJrLgorICAgICAgICAod2luZG93
LmJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMpOiBJbmNsdWRlIG1vc3Qgb2YgYmVuY2ht
YXJrUnVubmVyQ2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24oKQorICAgICAgICBoZXJlLgor
CisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1y
dW5uZXIuanM6CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFt
ZSk6IFJlbW92ZSB1bm5lZWRlZCBjYWxsIHRvIHdpbGxBZGRUZXN0RnJhbWUuCisgICAgICAgICog
QW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qczoKKyAgICAgICAgKFJlc3VsdHNEYXNo
Ym9hcmQpOiBDaGFuZ2UgdGhlIGNsYXNzIHRvIHByb2Nlc3MgdGhlIHNhbXBsZXIgZGF0YSBvbi1k
ZW1hbmQgYW5kIGhvbGQgb250byB0aGF0IGRhdGEKKyAgICAgICAgZm9yIGxhdGVyIHJlZmVyZW5j
aW5nLgorICAgICAgICAoUmVzdWx0c0Rhc2hib2FyZC5wcm90b3R5cGUudG9KU09OKTogRGVsZXRl
ZC4KKyAgICAgICAgKFJlc3VsdHNEYXNoYm9hcmQucHJvdG90eXBlLl9wcm9jZXNzRGF0YSk6IFJl
bmFtZSB0b0pTT04gdG8gX3Byb2Nlc3NEYXRhIHNpbmNlIGl0J3Mgbm90IHJlYWxseQorICAgICAg
ICBvdXRwdXR0aW5nIEpTT04uIFN0b3JlIHRoZSBwcm9jZXNzZWQgZGF0YSBpbnRvIGEgbWVtYmVy
IHZhcmlhYmxlIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWQgbGF0ZXIuCisgICAgICAgIChSZXN1bHRz
RGFzaGJvYXJkLnByb3RvdHlwZS5nZXQgZGF0YSk6IFByb2Nlc3MgdGhlIGRhdGEgaWYgaXQgaGFz
bid0IGFscmVhZHkuCisgICAgICAgIChSZXN1bHRzRGFzaGJvYXJkLnByb3RvdHlwZS5nZXQgc2Nv
cmUpOiBQcm9jZXNzIHRoZSBkYXRhIGlmIGl0IGhhc24ndCBhbHJlYWR5LCB0aGVuIHJldHVybiB0
aGUKKyAgICAgICAgYWdncmVnYXRlIHNjb3JlLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3Rv
dHlwZS5fc2hvd0hlYWRlcik6IFdoZW4gb3V0cHV0dGluZyB0aGUgcmVzdWx0cyB0byBhIHRhYmxl
LCBkb24ndCBmb3JjZSB0aGUKKyAgICAgICAgbmVlZCBmb3IgYW4gZW1wdHkgY2hpbGRyZW4gYXJy
YXkuIFRoaXMgd2FzIHRvIGFsbG93IGZvciBhIGhlYWRlciByb3cgaW4gdGhlIHRhYmxlIHRoYXQg
c3Bhbm5lZAorICAgICAgICBtdWx0aXBsZSBjb2x1bW5zLiBJbiB0aGUgc2ltcGxlciBoYXJuZXNz
LCB0aGlzIGlzIG5vdCBuZWVkZWQuCisgICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBlLl9z
aG93RW1wdHlDZWxscyk6CisgICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBlLl9zaG93VGVz
dCk6IFRoaXMgaGFyZGNvZGVkIHRoZSBjb2x1bW5zLiBBdCBsZWFzdCBmb3IgdGhlIG5hbWUgYW5k
IHNjb3JlLAorICAgICAgICB3aGljaCBpcyB0aGUgYmFyZSBtaW5pbXVtIG5lZWRlZCBmb3IgdGhl
IHNpbXBsZXIgaGFybmVzcywga2V5IG9mZiBvZiB0aGUgaGVhZGVyIG5hbWUgcHJvdmlkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuY3NzOiBBZGRl
ZC4gVXNlIGEgc2ltaWxhciAyOjEgcmF0aW8uIFRoZSBzY29yZSB0YWJsZXMgYXJlCisgICAgICAg
IHNwbGl0IGludG8gdGhlIGRhdGEgYW5kIHRoZSBoZWFkZXJzLCBhbmQgYXJlIGFsc28gZGlzcGxh
eWVkIFJUTCBzbyB0aGF0IGEgbGF0ZXIgcGF0Y2ggYWxsb3dzIGEKKyAgICAgICAgdXNlciB0byBj
b3B5LXBhc3RlIHRoZSBkYXRhIGVhc2lseS4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNl
cy9ydW5uZXIvYW5pbW9tZXRlci5qczogQWRkZWQuIFVzZSBhIHNpbXBsZXIgdmVyc2lvbiBvZiBi
ZW5jaG1hcmtSdW5uZXJDbGllbnQuCisgICAgICAgIFRoZSBkZWJ1ZyBoYXJuZXNzIHdpbGwgZXh0
ZW5kIHRoZXNlIGNsYXNzZXMuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5f
c3RhcnRCZW5jaG1hcmspOiBVc2VkIGJ5IGJvdGggaGFybmVzc2VzLgorICAgICAgICAod2luZG93
LmJlbmNobWFya0NvbnRyb2xsZXIuc3RhcnRCZW5jaG1hcmspOiBTZXQgaGFyZC1jb2RlZCBvcHRp
b25zLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Jlc3VsdHMpOiBJ
bmNsdWRlcyBtb3N0IG9mIGJlbmNobWFya1J1bm5lckNsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0
aW9uKCkKKyAgICAgICAgaGVyZS4KKworICAgICAgICBHZXQgcmlkIG9mIHV0aWxpdGllcy5qcy4g
TW92ZSBpdCBhbGwgaW50byBleHRlbnNpb25zLmpzLgorCisgICAgICAgICogQW5pbW9tZXRlci9y
ZXNvdXJjZXMvZXh0ZW5zaW9ucy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291
cmNlcy91dGlsaXRpZXMuanM6IFJlbW92ZWQuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw6IFJlbW92ZSBz
Y3JpcHQgbGluay4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw6IERpdHRvLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbDogRGl0
dG8uCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY3NzLXNoYXBlcy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw6IERpdHRvLgorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFw
ZXMuaHRtbDogRGl0dG8uCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52
YXMtZWxlY3Ryb25zLmh0bWw6IERpdHRvLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhh
bXBsZXMvY2FudmFzLXN0YXJzLmh0bWw6IERpdHRvLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvbWlzYy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmh0bWw6IERpdHRvLgorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbDogRGl0dG8uCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbDog
RGl0dG8uCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3Mu
aHRtbDogRGl0dG8uCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0
ZS1zdmcuaHRtbDogRGl0dG8uCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVy
aW5nLXRleHQuaHRtbDogRGl0dG8uCisKKyAgICAgICAgU3BsaXQgdGVzdHMuanMgaW50byB0d28u
IEFkZCBhIG5ldyBzdWl0ZSB0byBydW5uZXIvdGVzdHMuanMuCisKKyAgICAgICAgKiBBbmltb21l
dGVyL2RldmVsb3Blci5odG1sOiBVcGRhdGUgdGhlIHNjcmlwdCBvcmRlci4gU2NyaXB0cyBmcm9t
CisgICAgICAgIGRlYnVnLXJ1bm5lci8gd2lsbCBhbHdheXMgYnVpbGQgb24gdGhvc2UgZnJvbSBy
dW5uZXIvLCBhbmQgaGF2ZSB0aGUKKyAgICAgICAgc2FtZSBuYW1lLgorICAgICAgICAqIEFuaW1v
bWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qczogTW92ZSAiY29tcGxleCBleGFt
cGxlcyIKKyAgICAgICAgc3VpdGUgaW50byAibWlzY2VsbGFuZW91cyB0ZXN0cyIuCisgICAgICAg
IChTdWl0ZSk6IERlbGV0ZWQuCisgICAgICAgIChTdWl0ZS5wcm90b3R5cGUucHJlcGFyZSk6IERl
bGV0ZWQuCisgICAgICAgIChTdWl0ZS5wcm90b3R5cGUucnVuKTogRGVsZXRlZC4KKyAgICAgICAg
KHN1aXRlRnJvbU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2Vz
L3J1bm5lci90ZXN0cy5qczogQWRkZWQuIFRha2UgZGVmaW5pdGlvbnMgYW5kCisgICAgICAgIGZ1
bmN0aW9ucyBuZWVkZWQgYnkgdGhlIHRlc3QgaGFybmVzcy4gTGVhdmUgdGhlIHRlc3Qgc3VpdGVz
IGJlaGluZC4KKyAgICAgICAgKFN1aXRlKTogTW92ZWQgZnJvbSBkZWJ1ZyBzY3JpcHQuCisgICAg
ICAgIChTdWl0ZS5wcm90b3R5cGUucHJlcGFyZSk6IERpdHRvLgorICAgICAgICAoU3VpdGUucHJv
dG90eXBlLnJ1bik6IERpdHRvLgorICAgICAgICAoc3VpdGVGcm9tTmFtZSk6IERpdHRvLgorICAg
ICAgICAodGVzdEZyb21OYW1lKTogRGl0dG8uCisKKyAgICAgICAgTW92ZSBiZW5jaG1hcmsgcmVz
b3VyY2VzIG91dCBpbnRvIHJlc291cmNlcy9kZWJ1Zy1ydW5uZXIsIGFuZCB1cGRhdGUgVVJMcy4K
KworICAgICAgICAqIEFuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWw6IFJlbmFtZWQgZnJvbSBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbC4KKyAgICAgICAg
KiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3M6IFJlbmFt
ZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmlt
b21ldGVyLmNzcy4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIv
YW5pbW9tZXRlci5qczogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
dW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNv
dXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanM6IFJlbmFtZWQgZnJvbSBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVy
LmpzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9kMy5taW4u
anM6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291
cmNlcy9kMy5taW4uanMuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVu
bmVyL2dyYXBoLmpzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1
bm5lci9yZXNvdXJjZXMvZ3JhcGguanMuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZGVidWctcnVubmVyL3Rlc3RzLmpzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMuCisKIDIwMTUtMTItMTEgIEpvbiBMZWUg
IDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgQW5pbW9tZXRlciBvbiBpT1MK
LS0gCjIuNS40IChBcHBsZSBHaXQtNjEpCgo=
</data>
<flag name="review"
          id="292861"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267882</attachid>
            <date>2015-12-23 17:18:36 -0800</date>
            <delta_ts>2015-12-23 17:27:51 -0800</delta_ts>
            <desc>Patch to commit; tests</desc>
            <filename>0002-Split-benchmark-into-two-different-pages.patch</filename>
            <type>text/plain</type>
            <size>15255</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBjMzBkODZlNjEzNzNiZWIyNGEzMGExY2M1NWRkMmE3OWFhNzYyMzc3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBXZWQs
IDIzIERlYyAyMDE1IDE3OjE2OjA4IC0wODAwClN1YmplY3Q6IFtQQVRDSCAyLzJdIFNwbGl0IGJl
bmNobWFyayBpbnRvIHR3byBkaWZmZXJlbnQgcGFnZXMKIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTI0NTgKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQWRk
IHRlc3RzIHRvICdhbmltb21ldGVyJyBzdWl0ZS4KCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVu
bmVyL3Rlc3RzLmpzOgoqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL2NhbnZhcy1zdGFnZS5odG1s
OiBBZGRlZC4KKiBBbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdl
LmpzOiBBZGRlZC4KKiBBbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXRl
c3RzLmpzOiBBZGRlZC4KKiBBbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvc3RhZ2Uu
Y3NzOiBBZGRlZC4KLS0tCiAuLi4vQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpz
ICAgICAgICAgICB8ICAxMiArKwogLi4uL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL2NhbnZhcy1z
dGFnZS5odG1sICAgICAgfCAgMTggKysKIC4uLi90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZh
cy1zdGFnZS5qcyAgICAgICAgIHwgIDYxICsrKysrKwogLi4uL3Rlc3RzL21hc3Rlci9yZXNvdXJj
ZXMvY2FudmFzLXRlc3RzLmpzICAgICAgICAgfCAyMjEgKysrKysrKysrKysrKysrKysrKysrCiAu
Li4vQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL3N0YWdlLmNzcyAgICB8ICAxNyAr
KwogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
MTUgKysKIDYgZmlsZXMgY2hhbmdlZCwgMzQ0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL2NhbnZhcy1zdGFn
ZS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzCiBjcmVhdGUgbW9kZSAxMDA2NDQg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFz
LXRlc3RzLmpzCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvc3RhZ2UuY3NzCgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci90ZXN0cy5qcwppbmRleCAxNDkwNjdh
Li5mOTg0MTgxIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL3J1bm5lci90ZXN0cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVz
b3VyY2VzL3J1bm5lci90ZXN0cy5qcwpAQCAtMjIsNiArMjIsMTggQEAgdmFyIFN1aXRlcyA9IFtd
OwogCiBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkFuaW1vbWV0ZXIiLAogICAgIFsKKyAgICAgICAg
eworICAgICAgICAgICAgdXJsOiAibWFzdGVyL2NhbnZhcy1zdGFnZS5odG1sP3BhdGhUeXBlPWFy
Y3MiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBhcmNzIgorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICB1cmw6ICJtYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWw/cGF0aFR5cGU9
bGluZVBhdGgmbGluZUpvaW49cm91bmQmbGluZUNhcD1yb3VuZCIsCisgICAgICAgICAgICBuYW1l
OiAiQ2FudmFzIGxpbmUgcGF0aCwgcm91bmQgam9pbiIKKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICAgdXJsOiAibWFzdGVyL2NhbnZhcy1zdGFnZS5odG1sP3BhdGhUeXBlPWxpbmUm
bGluZUNhcD1zcXVhcmUiLAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBsaW5lIHNlZ21lbnRz
IgorICAgICAgICB9LAogICAgIF0KICkpOwogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL2NhbnZhcy1zdGFnZS5odG1sIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9jYW52YXMtc3RhZ2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjQ2YWU5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9jYW52YXMtc3RhZ2UuaHRtbApA
QCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0icmVzb3VyY2VzL3N0YWdl
LmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9jYW52YXMtdGVzdHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJj
ZXMvY2FudmFzLXN0YWdlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21h
c3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmNlZThmY2EKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanMKQEAgLTAsMCAr
MSw2MSBAQAorZnVuY3Rpb24gU2ltcGxlQ2FudmFzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucywgY2Fu
dmFzT2JqZWN0KQoreworICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Cisg
ICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKyAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1l
bnQuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICB0aGlzLmNhbnZhc09iamVjdCA9IGNhbnZhc09iamVj
dDsKKyAgICB0aGlzLl9vYmplY3RzID0gW107Cit9CitTaW1wbGVDYW52YXNTdGFnZS5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7CitTaW1wbGVDYW52YXNTdGFnZS5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNTdGFnZTsKK1NpbXBsZUNhbnZhc1N0
YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCit7CisgICAgaWYgKGNvdW50ID09
IDApCisgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKKworICAgIGlmIChjb3Vu
dCA+IDApIHsKKyAgICAgICAgLy8gRm9yIHBhdGgtYmFzZWQgdGVzdHMsIHVzZSB0aGUgb2JqZWN0
IGxlbmd0aCBhcyBhIG1heGltdW0gY29vcmRpbmF0ZSB2YWx1ZQorICAgICAgICAvLyB0byBtYWtl
IGl0IGVhc2llciB0byBzZWUgd2hhdCB0aGUgdGVzdCBpcyBkb2luZworICAgICAgICB2YXIgY29v
cmRpbmF0ZU1heGltdW0gPSBNYXRoLm1heCh0aGlzLl9vYmplY3RzLmxlbmd0aCwgMjAwKTsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICB0aGlz
Ll9vYmplY3RzLnB1c2gobmV3IHRoaXMuY2FudmFzT2JqZWN0KHRoaXMsIGNvb3JkaW5hdGVNYXhp
bXVtKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdHMubGVuZ3RoOwor
ICAgIH0KKworICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9vYmplY3RzLmxlbmd0
aCk7CisgICAgdGhpcy5fb2JqZWN0cy5zcGxpY2UoMCwgY291bnQpOworICAgIHJldHVybiB0aGlz
Ll9vYmplY3RzLmxlbmd0aDsKK30KK1NpbXBsZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5hbmltYXRl
ID0gZnVuY3Rpb24oKQoreworICAgIHZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OworICAgIHRo
aXMuX29iamVjdHMuZm9yRWFjaChmdW5jdGlvbihvYmplY3QpIHsKKyAgICAgICAgb2JqZWN0LmRy
YXcoY29udGV4dCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIFNpbXBsZUNhbnZhc0FuaW1hdG9y
KGJlbmNobWFyaywgb3B0aW9ucykKK3sKKyAgICBTdGFnZUFuaW1hdG9yLmNhbGwodGhpcywgYmVu
Y2htYXJrLCBvcHRpb25zKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5j
b250ZXh0OworfQorCitTaW1wbGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKFN0YWdlQW5pbWF0b3IucHJvdG90eXBlKTsKK1NpbXBsZUNhbnZhc0FuaW1hdG9yLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IFNpbXBsZUNhbnZhc0FuaW1hdG9yOworU2ltcGxlQ2FudmFzQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fY29udGV4
dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLngsIHRoaXMuX2Jl
bmNobWFyay5fc3RhZ2Uuc2l6ZS55KTsKKyAgICByZXR1cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5
cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRoaXMuX29wdGlvbnMpOworfQorCisKK2Z1bmN0aW9uIFNp
bXBsZUNhbnZhc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpIHsK
KyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9n
cmVzc0Jhcik7Cit9CitTaW1wbGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOworU2ltcGxlQ2FudmFzQmVuY2htYXJrLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNpbXBsZUNhbnZhc0JlbmNobWFyazsKK1NpbXBsZUNhbnZh
c0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpIHsKKyAgICBy
ZXR1cm4gbmV3IFNpbXBsZUNhbnZhc0FuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlvbnMpOworfQor
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jl
c291cmNlcy9jYW52YXMtdGVzdHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNTY0YjU4YQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcwpAQCAt
MCwwICsxLDIyMSBAQAorKGZ1bmN0aW9uKCkgeworCisvLyA9PT0gUEFJTlQgT0JKRUNUUyA9PT0K
KworZnVuY3Rpb24gQ2FudmFzTGluZVNlZ21lbnQoc3RhZ2UpCit7CisgICAgdmFyIGNpcmNsZSA9
IHN0YWdlLnJhbmRvbUludCgwLCAyKTsKKyAgICB0aGlzLl9jb2xvciA9IFsiI2UwMTA0MCIsICIj
MTBjMDMwIiwgIiNlMDUwMTAiXVtjaXJjbGVdOworICAgIHRoaXMuX2xpbmVXaWR0aCA9IE1hdGgu
cG93KE1hdGgucmFuZG9tKCksIDEyKSAqIDIwICsgMzsKKyAgICB0aGlzLl9vbWVnYSA9IE1hdGgu
cmFuZG9tKCkgKiAzICsgMC4yOworICAgIHZhciB0aGV0YSA9IHN0YWdlLnJhbmRvbUFuZ2xlKCk7
CisgICAgdGhpcy5fY29zVGhldGEgPSBNYXRoLmNvcyh0aGV0YSk7CisgICAgdGhpcy5fc2luVGhl
dGEgPSBNYXRoLnNpbih0aGV0YSk7CisgICAgdGhpcy5fc3RhcnRYID0gc3RhZ2UuY2lyY2xlUmFk
aXVzICogdGhpcy5fY29zVGhldGEgKyAoMC41ICsgY2lyY2xlKSAvIDMgKiBzdGFnZS5zaXplLng7
CisgICAgdGhpcy5fc3RhcnRZID0gc3RhZ2UuY2lyY2xlUmFkaXVzICogdGhpcy5fc2luVGhldGEg
KyBzdGFnZS5zaXplLnkgLyAyOworICAgIHRoaXMuX2xlbmd0aCA9IE1hdGgucG93KE1hdGgucmFu
ZG9tKCksIDgpICogNDAgKyAyMDsKKyAgICB0aGlzLl9zZWdtZW50RGlyZWN0aW9uID0gTWF0aC5y
YW5kb20oKSA+IDAuNSA/IC0xIDogMTsKK30KKworQ2FudmFzTGluZVNlZ21lbnQucHJvdG90eXBl
LmRyYXcgPSBmdW5jdGlvbihjb250ZXh0KQoreworICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSB0
aGlzLl9jb2xvcjsKKyAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRoaXMuX2xpbmVXaWR0aDsKKwor
ICAgIHRoaXMuX2xlbmd0aCs9TWF0aC5zaW4oRGF0ZS5ub3coKS8xMDAqdGhpcy5fb21lZ2EpOwor
CisgICAgY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICBjb250ZXh0Lm1vdmVUbyh0aGlzLl9zdGFy
dFgsIHRoaXMuX3N0YXJ0WSk7CisgICAgY29udGV4dC5saW5lVG8odGhpcy5fc3RhcnRYICsgdGhp
cy5fc2VnbWVudERpcmVjdGlvbiAqIHRoaXMuX2xlbmd0aCAqIHRoaXMuX2Nvc1RoZXRhLAorICAg
ICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0WSArIHRoaXMuX3NlZ21lbnREaXJlY3Rpb24gKiB0
aGlzLl9sZW5ndGggKiB0aGlzLl9zaW5UaGV0YSk7CisgICAgY29udGV4dC5zdHJva2UoKTsKK307
CisKK2Z1bmN0aW9uIENhbnZhc0FyYyhzdGFnZSkKK3sKKyAgICB2YXIgbWF4WCA9IDYsIG1heFkg
PSAzOworICAgIHZhciBkaXN0YW5jZVggPSBzdGFnZS5zaXplLnggLyBtYXhYOworICAgIHZhciBk
aXN0YW5jZVkgPSBzdGFnZS5zaXplLnkgLyAobWF4WSArIDEpOworICAgIHZhciByYW5kWSA9IHN0
YWdlLnJhbmRvbUludCgwLCBtYXhZKTsKKyAgICB2YXIgcmFuZFggPSBzdGFnZS5yYW5kb21JbnQo
MCwgbWF4WCAtIDEgKiAocmFuZFkgJSAyKSk7CisKKyAgICB0aGlzLl9wb2ludCA9IG5ldyBQb2lu
dChkaXN0YW5jZVggKiAocmFuZFggKyAocmFuZFkgJSAyKSAvIDIpLCBkaXN0YW5jZVkgKiAocmFu
ZFkgKyAuNSkpOworCisgICAgdGhpcy5fcmFkaXVzID0gMjAgKyBNYXRoLnBvdyhNYXRoLnJhbmRv
bSgpLCA1KSAqIChNYXRoLm1pbihkaXN0YW5jZVgsIGRpc3RhbmNlWSkgLyAxLjYpOworICAgIHRo
aXMuX3N0YXJ0QW5nbGUgPSBzdGFnZS5yYW5kb21BbmdsZSgpOworICAgIHRoaXMuX2VuZEFuZ2xl
ID0gc3RhZ2UucmFuZG9tQW5nbGUoKTsKKyAgICB0aGlzLl9vbWVnYSA9IChNYXRoLnJhbmRvbSgp
IC0gMC41KSAqIDAuMzsKKyAgICB0aGlzLl9jb3VudGVyY2xvY2t3aXNlID0gc3RhZ2UucmFuZG9t
Qm9vbCgpOworICAgIHZhciBjb2xvcnMgPSBbIiMxMDEwMTAiLCAiIzgwODA4MCIsICIjYzBjMGMw
Il07CisgICAgY29sb3JzLnB1c2goWyIjZTAxMDQwIiwgIiMxMGMwMzAiLCAiI2UwNTAxMCJdWyhy
YW5kWCArIE1hdGguY2VpbChyYW5kWSAvIDIpKSAlIDNdKTsKKyAgICB0aGlzLl9jb2xvciA9IGNv
bG9yc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjb2xvcnMubGVuZ3RoKV07CisgICAgdGhp
cy5fbGluZVdpZHRoID0gMSArIE1hdGgucG93KE1hdGgucmFuZG9tKCksIDUpICogMzA7CisgICAg
dGhpcy5fZG9TdHJva2UgPSBzdGFnZS5yYW5kb21JbnQoMCwgMykgIT0gMDsKK307CisKK0NhbnZh
c0FyYy5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGNvbnRleHQpCit7CisgICAgdGhpcy5fc3Rh
cnRBbmdsZSArPSB0aGlzLl9vbWVnYTsKKyAgICB0aGlzLl9lbmRBbmdsZSArPSB0aGlzLl9vbWVn
YSAvIDI7CisKKyAgICBpZiAodGhpcy5fZG9TdHJva2UpIHsKKyAgICAgICAgY29udGV4dC5zdHJv
a2VTdHlsZSA9IHRoaXMuX2NvbG9yOworICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRoaXMu
X2xpbmVXaWR0aDsKKyAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgY29udGV4
dC5hcmModGhpcy5fcG9pbnQueCwgdGhpcy5fcG9pbnQueSwgdGhpcy5fcmFkaXVzLCB0aGlzLl9z
dGFydEFuZ2xlLCB0aGlzLl9lbmRBbmdsZSwgdGhpcy5fY291bnRlcmNsb2Nrd2lzZSk7CisgICAg
ICAgIGNvbnRleHQuc3Ryb2tlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29udGV4dC5maWxs
U3R5bGUgPSB0aGlzLl9jb2xvcjsKKyAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAg
ICAgY29udGV4dC5saW5lVG8odGhpcy5fcG9pbnQueCwgdGhpcy5fcG9pbnQueSk7CisgICAgICAg
IGNvbnRleHQuYXJjKHRoaXMuX3BvaW50LngsIHRoaXMuX3BvaW50LnksIHRoaXMuX3JhZGl1cywg
dGhpcy5fc3RhcnRBbmdsZSwgdGhpcy5fZW5kQW5nbGUsIHRoaXMuX2NvdW50ZXJjbG9ja3dpc2Up
OworICAgICAgICBjb250ZXh0LmxpbmVUbyh0aGlzLl9wb2ludC54LCB0aGlzLl9wb2ludC55KTsK
KyAgICAgICAgY29udGV4dC5maWxsKCk7CisgICAgfQorfTsKKworZnVuY3Rpb24gQ2FudmFzTGlu
ZVBvaW50KHN0YWdlLCBjb29yZGluYXRlTWF4aW11bSkKK3sKKyAgICB2YXIgWF9MT09QUyA9IDQw
OworICAgIHZhciBZX0xPT1BTID0gMjA7CisKKyAgICB2YXIgb2Zmc2V0cyA9IFtbLTIsIC0xXSwg
WzIsIDFdLCBbLTEsIDBdLCBbMSwgMF0sIFstMSwgMl0sIFsxLCAtMl1dOworICAgIHZhciBvZmZz
ZXQgPSBvZmZzZXRzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG9mZnNldHMubGVuZ3RoKV07
CisKKyAgICB0aGlzLmNvb3JkaW5hdGUgPSBuZXcgUG9pbnQoWF9MT09QUy8yLCBZX0xPT1BTLzIp
OworICAgIGlmIChzdGFnZS5fb2JqZWN0cy5sZW5ndGgpIHsKKyAgICAgICAgdmFyIGhlYWQgPSBz
dGFnZS5fb2JqZWN0c1tzdGFnZS5fb2JqZWN0cy5sZW5ndGggLSAxXS5jb29yZGluYXRlOworICAg
ICAgICB0aGlzLmNvb3JkaW5hdGUueCA9IGhlYWQueDsKKyAgICAgICAgdGhpcy5jb29yZGluYXRl
LnkgPSBoZWFkLnk7CisgICAgfQorCisgICAgdmFyIG5leHRDb29yZGluYXRlID0gdGhpcy5jb29y
ZGluYXRlLnggKyBvZmZzZXRbMF07CisgICAgaWYgKG5leHRDb29yZGluYXRlIDwgMCB8fCBuZXh0
Q29vcmRpbmF0ZSA+IFhfTE9PUFMpCisgICAgICAgIHRoaXMuY29vcmRpbmF0ZS54IC09IG9mZnNl
dFswXTsKKyAgICBlbHNlCisgICAgICAgIHRoaXMuY29vcmRpbmF0ZS54ID0gbmV4dENvb3JkaW5h
dGU7CisgICAgbmV4dENvb3JkaW5hdGUgPSB0aGlzLmNvb3JkaW5hdGUueSArIG9mZnNldFsxXTsK
KyAgICBpZiAobmV4dENvb3JkaW5hdGUgPCAwIHx8IG5leHRDb29yZGluYXRlID4gWV9MT09QUykK
KyAgICAgICAgdGhpcy5jb29yZGluYXRlLnkgLT0gb2Zmc2V0WzFdOworICAgIGVsc2UKKyAgICAg
ICAgdGhpcy5jb29yZGluYXRlLnkgPSBuZXh0Q29vcmRpbmF0ZTsKKworICAgIHZhciB4T2ZmID0g
LjI1ICogKHRoaXMuY29vcmRpbmF0ZS55ICUgMik7CisgICAgdmFyIHJhbmRYID0gKHhPZmYgKyB0
aGlzLmNvb3JkaW5hdGUueCkgKiBzdGFnZS5zaXplLnggLyBYX0xPT1BTOworICAgIHZhciByYW5k
WSA9IHRoaXMuY29vcmRpbmF0ZS55ICogc3RhZ2Uuc2l6ZS55IC8gWV9MT09QUzsKKyAgICB2YXIg
Y29sb3JzID0gWyIjMTAxMDEwIiwgIiM4MDgwODAiLCAiI2MwYzBjMCIsICIjZTAxMDQwIl07Cisg
ICAgdGhpcy5fY29sb3IgPSBjb2xvcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY29sb3Jz
Lmxlbmd0aCldOworCisgICAgdGhpcy5fd2lkdGggPSBNYXRoLnBvdyhNYXRoLnJhbmRvbSgpLCA1
KSAqIDIwICsgMTsKKyAgICB0aGlzLl9pc1NwbGl0ID0gTWF0aC5yYW5kb20oKSA+IDAuOTsKKyAg
ICB0aGlzLl9wb2ludCA9IG5ldyBQb2ludChyYW5kWCwgcmFuZFkpOworCit9CisKK0NhbnZhc0xp
bmVQb2ludC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGNvbnRleHQsIHN0YWdlKQoreworICAg
IGNvbnRleHQubGluZVRvKHRoaXMuX3BvaW50LngsIHRoaXMuX3BvaW50LnkpOworfTsKKworCisv
LyA9PT0gU1RBR0VTID09PQorCitmdW5jdGlvbiBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2Uo
ZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KQoreworICAgIFNpbXBsZUNhbnZhc1N0YWdl
LmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KTsKKyAgICB0aGlzLmNv
bnRleHQubGluZUNhcCA9IG9wdGlvbnNbImxpbmVDYXAiXSB8fCAiYnV0dCI7CisgICAgdGhpcy5j
b250ZXh0LmxpbmVKb2luID0gb3B0aW9uc1sibGluZUpvaW4iXSB8fCAiYmV2ZWwiOworfQorU2lt
cGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2ltcGxl
Q2FudmFzU3RhZ2UucHJvdG90eXBlKTsKK1NpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2U7CitTaW1wbGVD
YW52YXNQYXRoU3Ryb2tlU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsKKyAg
ICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKKyAgICB2YXIgc3RhZ2UgPSB0aGlzOworCisg
ICAgY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVuY3Rp
b24ob2JqZWN0LCBpbmRleCkgeworICAgICAgICBpZiAoaW5kZXggPT0gMCkgeworICAgICAgICAg
ICAgY29udGV4dC5saW5lV2lkdGggPSBvYmplY3QuX3dpZHRoOworICAgICAgICAgICAgY29udGV4
dC5zdHJva2VTdHlsZSA9IG9iamVjdC5fY29sb3I7CisgICAgICAgICAgICBjb250ZXh0Lm1vdmVU
byhvYmplY3QuX3BvaW50LngsIG9iamVjdC5fcG9pbnQueSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBpZiAob2JqZWN0Ll9pc1NwbGl0KSB7CisgICAgICAgICAgICAgICAgY29udGV4
dC5zdHJva2UoKTsKKworICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gb2JqZWN0
Ll93aWR0aDsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gb2JqZWN0Ll9j
b2xvcjsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoTWF0aC5yYW5kb20oKSA+IDAuOTk5KQorICAgICAgICAgICAg
ICAgIG9iamVjdC5faXNTcGxpdCA9ICFvYmplY3QuX2lzU3BsaXQ7CisKKyAgICAgICAgICAgIG9i
amVjdC5kcmF3KGNvbnRleHQpOworICAgICAgICB9CisgICAgfSk7CisgICAgY29udGV4dC5zdHJv
a2UoKTsKK30KKworZnVuY3Rpb24gQ2FudmFzTGluZVNlZ21lbnRTdGFnZShlbGVtZW50LCBvcHRp
b25zKQoreworICAgIFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9u
cywgQ2FudmFzTGluZVNlZ21lbnQpOworICAgIHRoaXMuY29udGV4dC5saW5lQ2FwID0gb3B0aW9u
c1sibGluZUNhcCJdIHx8ICJidXR0IjsKKyAgICB0aGlzLmNpcmNsZVJhZGl1cyA9IHRoaXMuc2l6
ZS54IC8gMyAvIDIgLSAyMDsKK30KK0NhbnZhc0xpbmVTZWdtZW50U3RhZ2UucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShTaW1wbGVDYW52YXNTdGFnZS5wcm90b3R5cGUpOworQ2FudmFzTGluZVNl
Z21lbnRTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNMaW5lU2VnbWVudFN0YWdl
OworQ2FudmFzTGluZVNlZ21lbnRTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkK
K3sKKyAgICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKKyAgICB2YXIgc3RhZ2UgPSB0aGlz
OworCisgICAgY29udGV4dC5saW5lV2lkdGggPSAzMDsKKyAgICBmb3IodmFyIGkgPSAwOyBpIDwg
MzsgaSsrKSB7CisgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBbIiNlMDEwNDAiLCAiIzEw
YzAzMCIsICIjZTA1MDEwIl1baV07CisgICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gWyIjNzAw
NTFkIiwgIiMwMTYxMTIiLCAiIzcwMjcwMSJdW2ldOworICAgICAgICBjb250ZXh0LmJlZ2luUGF0
aCgpOworICAgICAgICAgICAgY29udGV4dC5hcmMoKDAuNSArIGkpIC8gMyAqIHN0YWdlLnNpemUu
eCwgc3RhZ2Uuc2l6ZS55LzIsIHN0YWdlLmNpcmNsZVJhZGl1cywgMCwgTWF0aC5QSSoyKTsKKyAg
ICAgICAgY29udGV4dC5zdHJva2UoKTsKKyAgICAgICAgY29udGV4dC5maWxsKCk7CisgICAgfQor
CisgICAgdGhpcy5fb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKG9iamVjdCkgeworICAgICAgICBv
YmplY3QuZHJhdyhjb250ZXh0KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gQ2FudmFzTGluZVBh
dGhTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIFNpbXBsZUNhbnZhc1BhdGhTdHJva2VT
dGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMsIENhbnZhc0xpbmVQb2ludCk7CisgICAg
dGhpcy5jb250ZXh0LmxpbmVKb2luID0gb3B0aW9uc1sibGluZUpvaW4iXSB8fCAiYmV2ZWwiOwor
ICAgIHRoaXMuY29udGV4dC5saW5lQ2FwID0gb3B0aW9uc1sibGluZUNhcCJdIHx8ICJidXR0IjsK
K30KK0NhbnZhc0xpbmVQYXRoU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTaW1wbGVD
YW52YXNQYXRoU3Ryb2tlU3RhZ2UucHJvdG90eXBlKTsKK0NhbnZhc0xpbmVQYXRoU3RhZ2UucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gQ2FudmFzTGluZVBhdGhTdGFnZTsKKworLy8gPT09IEJFTkNI
TUFSSyA9PT0KKworZnVuY3Rpb24gQ2FudmFzUGF0aEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcHJvZ3Jlc3NCYXIpCit7CisgICAgU2ltcGxlQ2FudmFzQmVuY2htYXJrLmNhbGwodGhp
cywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKK30KK0NhbnZhc1BhdGhCZW5j
aG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTaW1wbGVDYW52YXNCZW5jaG1hcmsucHJv
dG90eXBlKTsKK0NhbnZhc1BhdGhCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2Fu
dmFzUGF0aEJlbmNobWFyazsKK0NhbnZhc1BhdGhCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0
YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICBzd2l0Y2ggKHRoaXMuX29wdGlvbnNbInBh
dGhUeXBlIl0pIHsKKyAgICBjYXNlICJsaW5lIjoKKyAgICAgICAgcmV0dXJuIG5ldyBDYW52YXNM
aW5lU2VnbWVudFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworICAgIGNhc2UgImFyY3Mi
OgorICAgICAgICByZXR1cm4gbmV3IFNpbXBsZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29w
dGlvbnMsIENhbnZhc0FyYyk7CisgICAgY2FzZSAibGluZVBhdGgiOgorICAgICAgICByZXR1cm4g
bmV3IENhbnZhc0xpbmVQYXRoU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7CisgICAgfQor
fQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKK3sKKyAgICByZXR1cm4gbmV3IENhbnZhc1BhdGhCZW5j
aG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKK30KKworfSkoKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9zdGFnZS5jc3MgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9zdGFnZS5jc3MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I1ZjgxYwotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL3N0YWdlLmNz
cwpAQCAtMCwwICsxLDE3IEBACitodG1sIHsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9Citib2R5IHsK
KyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgb3ZlcmZsb3c6IGhpZGRl
bjsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMjQxLCAyNDEsIDI0MSk7Cit9CisKKyNzdGFnZSB7CisgIHdpZHRoOiAxMDAlOworICBo
ZWlnaHQ6IDEwMCU7CisgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDEsIDI0MSwgMjQxKTsKK30K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNTJlYmQ3MS4uNTYyYTRjNiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTUs
NiArNSwyMSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAg
ICAgIEFkZCB0ZXN0cyB0byAnYW5pbW9tZXRlcicgc3VpdGUuCisKKyAgICAgICAgKiBBbmltb21l
dGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9tYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanM6IEFkZGVkLgorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanM6IEFkZGVk
LgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9zdGFnZS5jc3M6
IEFkZGVkLgorCisyMDE1LTEyLTIzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAg
ICAgICBTcGxpdCBiZW5jaG1hcmsgaW50byB0d28gZGlmZmVyZW50IHBhZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI0NTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBBZGRyZXNzIGNvbW1lbnRzLgog
CiAgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1y
dW5uZXIuanM6Ci0tIAoyLjUuNCAoQXBwbGUgR2l0LTYxKQoK
</data>
<flag name="review"
          id="292862"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>